diff --git a/tests/mesa_pd/kernel/SyncNextNeighborsBlockForest.cpp b/tests/mesa_pd/kernel/SyncNextNeighborsBlockForest.cpp
index 25a8117577d8ebf4d84dfaabf14bafb3667cde64..882742d3f2503f592043ac582f3527eb9c03d847 100644
--- a/tests/mesa_pd/kernel/SyncNextNeighborsBlockForest.cpp
+++ b/tests/mesa_pd/kernel/SyncNextNeighborsBlockForest.cpp
@@ -80,13 +80,7 @@ int main( int argc, char ** argv )
    //checking blocks distribution
    WALBERLA_CHECK_EQUAL(forest->size(), 8);
 
-   math::AABB localDomain = forest->begin()->getAABB();
-   for (auto& iBlk : *forest)
-   {
-      localDomain.merge(iBlk.getAABB());
-   }
-
-   domain::BlockForestDomain domain(forest);
+   auto domain = std::make_shared<domain::BlockForestDomain>(forest);
    std::array< bool, 3 > periodic;
    periodic[0] = forest->isPeriodic(0);
    periodic[1] = forest->isPeriodic(1);
@@ -97,7 +91,7 @@ int main( int argc, char ** argv )
    data::ParticleAccessor ac(ps);
 
    //initialize particle
-   auto uid = createSphere(*ps, domain);
+   auto uid = createSphere(*ps, *domain);
    WALBERLA_LOG_DEVEL_ON_ROOT("uid: " << uid);
 
    //init kernels
@@ -136,13 +130,13 @@ int main( int argc, char ** argv )
       }
 
       //sync
-      SNN(*ps, forest);
+      SNN(*ps, forest, domain);
 
       //check
-      if (sqDistancePointToAABBPeriodic(pos, localDomain, forest->getDomain(), periodic) <= radius * radius)
+      if (sqDistancePointToAABBPeriodic(pos, domain->getUnionOfLocalAABBs(), forest->getDomain(), periodic) <= radius * radius)
       {
          WALBERLA_CHECK_EQUAL(ps->size(), 1);
-         if (localDomain.contains(pos))
+         if (domain->getUnionOfLocalAABBs().contains(pos))
          {
             WALBERLA_CHECK(!data::particle_flags::isSet(ps->begin()->getFlags(), data::particle_flags::GHOST));
          } else