diff --git a/src/pe_coupling/geometry/PeBodyOverlapFunctions.h b/src/pe_coupling/geometry/PeBodyOverlapFunctions.h
index 5d51a0bf3ec0c9f07d73523c846728f317de4490..b0b0b3b289b7d7bc1fb3103e187a57b1bc487ab6 100644
--- a/src/pe_coupling/geometry/PeBodyOverlapFunctions.h
+++ b/src/pe_coupling/geometry/PeBodyOverlapFunctions.h
@@ -27,6 +27,7 @@
 #include "pe/rigidbody/RigidBody.h"
 #include "pe/rigidbody/Sphere.h"
 #include "pe/rigidbody/Plane.h"
+#include "pe/rigidbody/Squirmer.h"
 
 namespace walberla {
 namespace geometry {
@@ -83,6 +84,21 @@ template<> inline bool contains( const pe::Sphere & peSphere, const Vector3<real
    return peSphere.containsPoint( point[0], point[1], point[2] );
 }
 
+template<> inline FastOverlapResult fastOverlapCheck( const pe::Squirmer & peSquirmer, const AABB & box )
+{
+   return fastOverlapCheck( static_cast<const pe::Sphere &>(peSquirmer), box );
+}
+
+template<> inline FastOverlapResult fastOverlapCheck( const pe::Squirmer & peSquirmer, const Vector3<real_t> & cellMidpoint, const Vector3<real_t> & dx )
+{
+   return fastOverlapCheck( static_cast<const pe::Sphere &>(peSquirmer), cellMidpoint, dx );
+}
+
+template<> inline bool contains( const pe::Squirmer & peSquirmer, const Vector3<real_t> & point )
+{
+   return contains( static_cast<const pe::Sphere &>(peSquirmer), point );
+}
+
 /////////////////////////////////////////////////
 // specialization for pe::Plane                //
 /////////////////////////////////////////////////
diff --git a/src/pe_coupling/geometry/PeIntersectionRatio.h b/src/pe_coupling/geometry/PeIntersectionRatio.h
index 8096657194ec707d42b1a96ba461efe1d955529a..0697fc94306972ebed5b0c915dd36bcf67d5b516 100644
--- a/src/pe_coupling/geometry/PeIntersectionRatio.h
+++ b/src/pe_coupling/geometry/PeIntersectionRatio.h
@@ -29,6 +29,7 @@
 #include "pe/rigidbody/Ellipsoid.h"
 #include "pe/rigidbody/Plane.h"
 #include "pe/rigidbody/Sphere.h"
+#include "pe/rigidbody/Squirmer.h"
 #include "pe/Types.h"
 
 
@@ -52,7 +53,7 @@ inline real_t intersectionRatio( const pe::RigidBody & peRigidBody,
                                  const Vector3<real_t> & direction,
                                  const real_t epsilon )
 {
-   if( peRigidBody.getTypeID() == pe::Sphere::getStaticTypeID() )
+   if( peRigidBody.getTypeID() == pe::Sphere::getStaticTypeID() || peRigidBody.getTypeID() == pe::Squirmer::getStaticTypeID() )
    {
       const pe::Sphere & sphere = static_cast< const pe::Sphere & >( peRigidBody );
       const real_t ratio = intersectionRatioSpherePe( sphere, fluidPoint, direction );
diff --git a/src/pe_coupling/geometry/PeOverlapFraction.h b/src/pe_coupling/geometry/PeOverlapFraction.h
index 82dff50271e72ac9fe2c4e8a4fc362f93d75ff4f..7193aae0a465b3915219602c145a45e567f34654 100644
--- a/src/pe_coupling/geometry/PeOverlapFraction.h
+++ b/src/pe_coupling/geometry/PeOverlapFraction.h
@@ -25,6 +25,7 @@
 
 #include "pe/rigidbody/RigidBody.h"
 #include "pe/rigidbody/Sphere.h"
+#include "pe/rigidbody/Squirmer.h"
 #include "pe/rigidbody/Plane.h"
 
 #include "PeBodyOverlapFunctions.h"
@@ -36,7 +37,7 @@ namespace pe_coupling{
 real_t overlapFractionPe( const pe::RigidBody & peRigidBody, const Vector3<real_t> & cellMidpoint,
                           const Vector3<real_t> & dx, uint_t maxDepth=4 )
 {
-   if( peRigidBody.getTypeID() == pe::Sphere::getStaticTypeID() )
+   if( peRigidBody.getTypeID() == pe::Sphere::getStaticTypeID() || peRigidBody.getTypeID() == pe::Squirmer::getStaticTypeID() )
    {
       const pe::Sphere & sphere = static_cast< const pe::Sphere & >( peRigidBody );
       return geometry::overlapFraction( sphere, cellMidpoint, dx, maxDepth );
diff --git a/src/pe_coupling/geometry/SphereEquivalentDiameter.h b/src/pe_coupling/geometry/SphereEquivalentDiameter.h
index 3e1bfbc7b417e2e397a5548efa90512333a346d4..d3750379167bc8506ec25c6e2d103a19c811b986 100644
--- a/src/pe_coupling/geometry/SphereEquivalentDiameter.h
+++ b/src/pe_coupling/geometry/SphereEquivalentDiameter.h
@@ -24,6 +24,7 @@
 
 #include "pe/rigidbody/RigidBody.h"
 #include "pe/rigidbody/Sphere.h"
+#include "pe/rigidbody/Squirmer.h"
 
 namespace walberla {
 namespace pe_coupling {
@@ -32,7 +33,7 @@ namespace pe_coupling {
 // calculates sphere-equivalent diameter (diameter of a sphere with same volume as given body)
 real_t getSphereEquivalentDiameter( pe::RigidBody & body )
 {
-   if( body.getTypeID() == pe::Sphere::getStaticTypeID() )
+   if( body.getTypeID() == pe::Sphere::getStaticTypeID() || body.getTypeID() == pe::Squirmer::getStaticTypeID() )
    {
       pe::Sphere & sphere = static_cast<pe::Sphere &>( body );
       real_t radius = sphere.getRadius();