diff --git a/apps/benchmarks/GranularGas/GranularGas.cfg b/apps/benchmarks/GranularGas/GranularGas.cfg
index 69be192fad471553a2653924a48aeae46d17e9d0..647eca2ef2878fd650db07dd54cc71868623784d 100644
--- a/apps/benchmarks/GranularGas/GranularGas.cfg
+++ b/apps/benchmarks/GranularGas/GranularGas.cfg
@@ -8,6 +8,8 @@ GranularGas
    sorting linear;
    shift < 0.01, 0.01, 0.01 >;
 
+   checkSimulation 0;
+
    LBAlgorithm Morton;
    baseWeight 1;
 
diff --git a/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp b/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp
index cb19bf5cda2ed5794ecbac7d62ad225bf1f38d25..59682aa03e99be3d8134638d25f48dc70ec01446 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp
@@ -74,13 +74,12 @@ namespace mesa_pd {
 class DEM
 {
 public:
-   DEM(const std::shared_ptr<domain::BlockForestDomain>& domain)
+   DEM(const std::shared_ptr<domain::BlockForestDomain>& domain, real_t dt, real_t mass)
    : domain_(domain)
    {
-      dem_.setStiffness(0, 0, real_t(0));
-      dem_.setDampingN(0, 0, real_t(0));
       dem_.setDampingT(0, 0, real_t(0));
       dem_.setFriction(0, 0, real_t(0));
+      dem_.setParametersFromCOR(0, 0, real_t(0.9), dt*real_t(20), mass * real_t(0.5));
    }
 
    inline
@@ -208,20 +207,20 @@ int main( int argc, char ** argv )
 
    if (!forest->isPeriodic(0))
    {
-      createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(+1,0,0));
-      createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(-1,0,0));
+      createPlane(*ps, *ss, confiningDomain.minCorner()+params.shift, Vec3(+1,0,0));
+      createPlane(*ps, *ss, confiningDomain.maxCorner()+params.shift, Vec3(-1,0,0));
    }
 
    if (!forest->isPeriodic(1))
    {
-      createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,+1,0));
-      createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,-1,0));
+      createPlane(*ps, *ss, confiningDomain.minCorner()+params.shift, Vec3(0,+1,0));
+      createPlane(*ps, *ss, confiningDomain.maxCorner()+params.shift, Vec3(0,-1,0));
    }
 
    if (!forest->isPeriodic(2))
    {
-      createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,0,+1));
-      createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,0,-1));
+      createPlane(*ps, *ss, confiningDomain.minCorner()+params.shift, Vec3(0,0,+1));
+      createPlane(*ps, *ss, confiningDomain.maxCorner()+params.shift, Vec3(0,0,-1));
    }
 
    WALBERLA_LOG_INFO_ON_ROOT("*** SETUP - END ***");
@@ -237,7 +236,7 @@ int main( int argc, char ** argv )
    WALBERLA_LOG_INFO_ON_ROOT("*** SIMULATION - START ***");
    // Init kernels
    kernel::ExplicitEulerWithShape        explicitEulerWithShape( params.dt );
-   DEM dem(domain);
+   DEM dem(domain, params.dt, ss->shapes[smallSphere]->getMass());
    kernel::InsertParticleIntoLinkedCells ipilc;
    kernel::AssocToBlock                  assoc(forest);
    mpi::ReduceProperty                   RP;
@@ -356,7 +355,8 @@ int main( int argc, char ** argv )
 
       if (params.checkSimulation)
       {
-         check(*ps, *forest, params.spacing);
+         //if you want to activate checking you have to deactivate sorting
+         check(*ps, *forest, params.spacing, params.shift);
       }
 
       WALBERLA_LOG_INFO_ON_ROOT("*** SQL OUTPUT - START ***");
diff --git a/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp b/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp
index 0ae1b0e672bafa3ca3ee99d32363e7ea226f1a61..d2c1452c48e8e9330835df77eb73e5a3fb6e9427 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp
@@ -92,7 +92,6 @@ public:
    inline
    void operator()(const size_t idx1, const size_t idx2, T& ac)
    {
-
       ++contactsChecked_;
       if (double_cast_(idx1, idx2, ac, acd_, ac))
       {
@@ -233,20 +232,20 @@ int main( int argc, char ** argv )
 
    if (!forest->isPeriodic(0))
    {
-      createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(+1,0,0));
-      createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(-1,0,0));
+      createPlane(*ps, *ss, confiningDomain.minCorner() + params.shift, Vec3(+1,0,0));
+      createPlane(*ps, *ss, confiningDomain.maxCorner() + params.shift, Vec3(-1,0,0));
    }
 
    if (!forest->isPeriodic(1))
    {
-      createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,+1,0));
-      createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,-1,0));
+      createPlane(*ps, *ss, confiningDomain.minCorner() + params.shift, Vec3(0,+1,0));
+      createPlane(*ps, *ss, confiningDomain.maxCorner() + params.shift, Vec3(0,-1,0));
    }
 
    if (!forest->isPeriodic(2))
    {
-      createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,0,+1));
-      createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,0,-1));
+      createPlane(*ps, *ss, confiningDomain.minCorner() + params.shift, Vec3(0,0,+1));
+      createPlane(*ps, *ss, confiningDomain.maxCorner() + params.shift, Vec3(0,0,-1));
    }
 
    WALBERLA_LOG_INFO_ON_ROOT("*** SETUP - END ***");
@@ -266,10 +265,9 @@ int main( int argc, char ** argv )
    kernel::AssocToBlock                  assoc(forest);
    kernel::InsertParticleIntoLinkedCells ipilc;
    kernel::SpringDashpot                 dem(1);
-   dem.setStiffness(0, 0, real_t(0));
-   dem.setDampingN (0, 0, real_t(0));
    dem.setDampingT (0, 0, real_t(0));
    dem.setFriction (0, 0, real_t(0));
+   dem.setParametersFromCOR(0, 0, real_t(0.9), params.dt*real_t(20), ss->shapes[smallSphere]->getMass() * real_t(0.5));
    mpi::ReduceProperty                   RP;
    mpi::SyncNextNeighbors                SNN;
    ContactDetection                      CD(domain);
@@ -376,7 +374,8 @@ int main( int argc, char ** argv )
 
       if (params.checkSimulation)
       {
-         check(*ps, *forest, params.spacing);
+         //if you want to activate checking you have to deactivate sorting
+         check(*ps, *forest, params.spacing, params.shift);
       }
 
       WALBERLA_LOG_INFO_ON_ROOT("*** SQL OUTPUT - START ***");
diff --git a/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp b/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp
index 44375e3f5f82f3e6a4461e3fd9cc0b138dc208a6..dfff27199430cb1a2f715209da7692cf5aedbb0b 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp
@@ -495,7 +495,7 @@ int main( int argc, char ** argv )
 
    if (params.checkSimulation)
    {
-      check(*ps, *forest, params.spacing);
+      check(*ps, *forest, params.spacing, params.shift);
    }
 
 
diff --git a/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp b/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp
index 6048d5b7bf05e23a29d65f8a8799389cfed4d417..5c658a3018d4841039ce30848c4a92058f4f3c58 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp
@@ -483,7 +483,7 @@ int main( int argc, char ** argv )
 
    if (params.checkSimulation)
    {
-      check(*ps, *forest, params.spacing);
+      check(*ps, *forest, params.spacing, params.shift);
    }
 
    WALBERLA_LOG_INFO_ON_ROOT("*** SQL OUTPUT - START ***");
diff --git a/apps/benchmarks/GranularGas/check.h b/apps/benchmarks/GranularGas/check.h
index 31099e229f40645d87b369be18d91df3377dfc9c..73c457592ce0e78e976e8163e86dc346a16504bc 100644
--- a/apps/benchmarks/GranularGas/check.h
+++ b/apps/benchmarks/GranularGas/check.h
@@ -27,13 +27,13 @@
 namespace walberla {
 namespace mesa_pd {
 
-void check( data::ParticleStorage& ps, blockforest::BlockForest& forest, real_t spacing )
+void check( data::ParticleStorage& ps, blockforest::BlockForest& forest, real_t spacing, const Vec3& shift )
 {
    WALBERLA_LOG_INFO_ON_ROOT("*** CHECKING RESULT - START ***");
    auto pIt = ps.begin();
    for (auto& iBlk : forest)
    {
-      for (auto it = grid_generator::SCIterator(iBlk.getAABB(), Vector3<real_t>(spacing, spacing, spacing) * real_c(0.5), spacing);
+      for (auto it = grid_generator::SCIterator(iBlk.getAABB(), Vector3<real_t>(spacing, spacing, spacing) * real_c(0.5) + shift, spacing);
            it != grid_generator::SCIterator();
            ++it, ++pIt)
       {