Index: src/LinkedCell/unittests/LinkedCell_ModelUnitTest.cpp
===================================================================
--- src/LinkedCell/unittests/LinkedCell_ModelUnitTest.cpp	(revision 8c318650ec230fdda3b798297d3d0a0d7b7c3776)
+++ src/LinkedCell/unittests/LinkedCell_ModelUnitTest.cpp	(revision 455043c33527649a64f47812a06348673a15ad57)
@@ -32,5 +32,7 @@
 #include "LinkedCell/LinkedCell.hpp"
 #include "LinkedCell/LinkedCell_Model.hpp"
+#include "LinkedCell/LinkedCell_Model_changeModel.hpp"
 #include "LinkedCell/LinkedCell_Model_LinkedCellArrayCache.hpp"
+#include "LinkedCell/LinkedCell_Model_Update.hpp"
 #include "LinkedCell/PointCloudAdaptor.hpp"
 #include "LinkedCell/unittests/defs.hpp"
@@ -141,4 +143,6 @@
   LC->insertPointCloud(cloud);
 
+  // assure that we are updated before accessing internals
+  CPPUNIT_ASSERT_EQUAL( true, *(LC->N->UpToDate) );
   // test structure
   CPPUNIT_ASSERT_EQUAL(((size_t)floor(NUMBERCELLS)), LC->CellLookup.size());
@@ -236,4 +240,6 @@
   {
     LC->addNode(Walker);
+    // assure that we are updated before accessing internals
+    CPPUNIT_ASSERT_EQUAL( true, *(LC->N->UpToDate) );
     CPPUNIT_ASSERT_EQUAL( NodeList.size()+1, LC->CellLookup.size());
     LinkedCell::tripleIndex index1 = LC->getIndexToVector(Walker->getPosition());
@@ -251,4 +257,6 @@
     // we have to call moveNode ourselves, as we have just added TesselPoints, not via World
     LC->moveNode(Walker);
+    // assure that we are updated before accessing internals
+    CPPUNIT_ASSERT_EQUAL( true, *(LC->N->UpToDate) );
     const LinkedCell::tripleIndex &newindex2 = LC->CellLookup[Walker]->getIndices();
     CPPUNIT_ASSERT( index2 != newindex2);
@@ -258,4 +266,6 @@
   {
     LC->deleteNode(Walker);
+    // assure that we are updated before accessing internals
+    CPPUNIT_ASSERT_EQUAL( true, *(LC->N->UpToDate) );
     CPPUNIT_ASSERT_EQUAL( NodeList.size(), LC->CellLookup.size());
   }
@@ -263,2 +273,51 @@
   delete Walker;
 }
+
+/** UnitTest whether lazy updates are working.
+ */
+void LinkedCell_ModelTest::lazyUpdatesTest()
+{
+  // create point
+  TesselPoint * Walker = new TesselPoint();
+  Walker->setName(std::string("Walker9"));
+  Walker->setPosition(Vector(9.8,7.6,5.4));
+  TesselPoint * Walker2 = new TesselPoint();
+  Walker2->setName(std::string("Walker10"));
+  Walker2->setPosition(Vector(9.8,7.6,5.4));
+  PointCloudAdaptor< PointSet > cloud(&NodeList, std::string("NodeList"));
+  LC->insertPointCloud(cloud);
+
+  // initial read operation
+  {
+    CPPUNIT_ASSERT( !NodeList.empty() );
+    LinkedCell::tripleIndex index = LC->getIndexToVector((*NodeList.begin())->getPosition());
+    const size_t size = LC->N->getN()(index)->size(); // this will cause the update
+    CPPUNIT_ASSERT( size >= (size_t)1 );
+  }
+
+  // do some write ops
+  LC->addNode(Walker);
+  LC->addNode(Walker2);
+  CPPUNIT_ASSERT( LC->Changes->queue.find(Walker) != LC->Changes->queue.end() );
+  LinkedCell::LinkedCell_Model::Update *update = LC->Changes->queue[Walker];
+  Walker->setPosition(Vector(0.,0.,0.));
+  LC->moveNode(Walker);
+
+  // check that they all reside in cache and nothing is changed so far
+  CPPUNIT_ASSERT( LC->Changes->queue.size() > (size_t)0 );
+
+  // check that add priority is prefered over move
+  CPPUNIT_ASSERT( LC->Changes->queue[Walker] == update );
+
+  // perform read op
+  {
+    LinkedCell::tripleIndex index = LC->getIndexToVector(Walker->getPosition());
+    CPPUNIT_ASSERT( LC->N->getN()(index)->size() >= (size_t)1 );
+  }
+
+  // check that cache is emptied
+  CPPUNIT_ASSERT( LC->Changes->queue.size() == (size_t)0 );
+
+  delete Walker;
+  delete Walker2;
+}
Index: src/LinkedCell/unittests/LinkedCell_ModelUnitTest.hpp
===================================================================
--- src/LinkedCell/unittests/LinkedCell_ModelUnitTest.hpp	(revision 8c318650ec230fdda3b798297d3d0a0d7b7c3776)
+++ src/LinkedCell/unittests/LinkedCell_ModelUnitTest.hpp	(revision 455043c33527649a64f47812a06348673a15ad57)
@@ -35,4 +35,5 @@
     CPPUNIT_TEST ( getIndexToVectorTest );
     CPPUNIT_TEST ( nodeTest );
+    CPPUNIT_TEST ( lazyUpdatesTest );
     CPPUNIT_TEST_SUITE_END();
 
@@ -49,4 +50,5 @@
       void getIndexToVectorTest();
       void nodeTest();
+      void lazyUpdatesTest();
 
 private:
