Index: src/LinkedCell/LinkedCell_Controller.cpp
===================================================================
--- src/LinkedCell/LinkedCell_Controller.cpp	(revision 4459fcac9c9f1ef9ec32ea88af1da695c2b4e845)
+++ src/LinkedCell/LinkedCell_Controller.cpp	(revision c806430dd9192196eecf5a8e808273f583a12492)
@@ -26,4 +26,5 @@
 #include "LinkedCell_Model.hpp"
 #include "LinkedCell_View.hpp"
+#include "IPointCloud.hpp"
 
 
@@ -153,7 +154,8 @@
  *
  * @param distance edge length of the requested linked cell structure
+ * @param set of initial points to insert when new model is created (not always), should be World's
  * @return LinkedCell_View wrapping the best LinkedCell_Model
  */
-LinkedCell_View LinkedCell_Controller::getView(const double distance)
+LinkedCell_View LinkedCell_Controller::getView(const double distance, IPointCloud &set)
 {
   /// Look for best instance.
@@ -163,4 +165,5 @@
   if (LCModel_best == NULL) {
     LinkedCell_Model *LCModel_new = new LinkedCell_Model(distance, domain);
+    LCModel_new->insertPointCloud(set);
     insertNewModel(distance, LCModel_new);
     LinkedCell_View view(const_cast<const LinkedCell_Model &>(*LCModel_new));
Index: src/LinkedCell/LinkedCell_Controller.hpp
===================================================================
--- src/LinkedCell/LinkedCell_Controller.hpp	(revision 4459fcac9c9f1ef9ec32ea88af1da695c2b4e845)
+++ src/LinkedCell/LinkedCell_Controller.hpp	(revision c806430dd9192196eecf5a8e808273f583a12492)
@@ -20,4 +20,5 @@
 
 class LinkedCell_ControllerTest;
+class IPointCloud;
 
 namespace LinkedCell {
@@ -47,5 +48,5 @@
     ~LinkedCell_Controller();
 
-    LinkedCell_View getView(const double distance);
+    LinkedCell_View getView(const double distance, IPointCloud &set);
 
   private:
Index: src/LinkedCell/LinkedCell_Model.cpp
===================================================================
--- src/LinkedCell/LinkedCell_Model.cpp	(revision 4459fcac9c9f1ef9ec32ea88af1da695c2b4e845)
+++ src/LinkedCell/LinkedCell_Model.cpp	(revision c806430dd9192196eecf5a8e808273f583a12492)
@@ -139,5 +139,5 @@
   N.resize(index);
   ASSERT(getSize(0)*getSize(1)*getSize(2) < MAX_LINKEDCELLNODES,
-      "LinkedCell_Model::AllocateCells() - Number linked of linked cell nodes exceded hard-coded limit, use greater edge length!");
+      "LinkedCell_Model::AllocateCells() - Number linked of linked cell nodes exceeded hard-coded limit, use greater edge length!");
 
   // allocate LinkedCell instances
Index: src/LinkedCell/LinkedCell_Model.hpp
===================================================================
--- src/LinkedCell/LinkedCell_Model.hpp	(revision 4459fcac9c9f1ef9ec32ea88af1da695c2b4e845)
+++ src/LinkedCell/LinkedCell_Model.hpp	(revision c806430dd9192196eecf5a8e808273f583a12492)
@@ -67,4 +67,6 @@
     void setPartition(double distance);
 
+    void insertPointCloud(IPointCloud &set);
+
     //!> static indices to get nearest neighbors as default argument
     static tripleIndex NearestNeighbors;
@@ -78,5 +80,4 @@
     void AllocateCells();
     void Reset();
-    void insertPointCloud(IPointCloud &set);
 
     void startListening();
Index: src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.cpp
===================================================================
--- src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.cpp	(revision 4459fcac9c9f1ef9ec32ea88af1da695c2b4e845)
+++ src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.cpp	(revision c806430dd9192196eecf5a8e808273f583a12492)
@@ -24,4 +24,5 @@
 #include <cppunit/ui/text/TestRunner.h>
 
+#include "Atom/atom.hpp"
 #include "Box.hpp"
 #include "CodePatterns/Assert.hpp"
@@ -30,4 +31,5 @@
 #include "LinkedCell/LinkedCell_View.hpp"
 #include "LinkedCell/unittests/defs.hpp"
+#include "LinkedCell/PointCloudAdaptor.hpp"
 
 #include "LinkedCell_ControllerUnitTest.hpp"
@@ -57,4 +59,7 @@
 
   controller = new LinkedCell::LinkedCell_Controller(*domain);
+
+  // create empty set
+  emptyset = new PointCloudAdaptor< std::vector<atom *> >(&emptyvector, std::string("emptyset"));
 }
 
@@ -64,4 +69,5 @@
   delete controller;
   delete domain;
+  delete emptyset;
 }
 
@@ -113,10 +119,10 @@
   /// obtain a view
   CPPUNIT_ASSERT_EQUAL( (size_t)0, controller->ModelsMap.size() );
-  LinkedCell::LinkedCell_View view = controller->getView(2.);
+  LinkedCell::LinkedCell_View view = controller->getView(2., *emptyset);
   CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
 
   {
     /// get same view again and check that now new instance appears
-    LinkedCell::LinkedCell_View view_again = controller->getView(2.);
+    LinkedCell::LinkedCell_View view_again = controller->getView(2., *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
@@ -129,10 +135,10 @@
   /// obtain a view
   CPPUNIT_ASSERT_EQUAL( (size_t)0, controller->ModelsMap.size() );
-  LinkedCell::LinkedCell_View view = controller->getView(2.);
+  LinkedCell::LinkedCell_View view = controller->getView(2., *emptyset);
   CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
 
   {
     /// pick another view that is not close enough
-    LinkedCell::LinkedCell_View view_other = controller->getView(5.);
+    LinkedCell::LinkedCell_View view_other = controller->getView(5., *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)2, controller->ModelsMap.size() );
   }
@@ -146,5 +152,5 @@
   const double edgelength = 2.;
   CPPUNIT_ASSERT_EQUAL( (size_t)0, controller->ModelsMap.size() );
-  LinkedCell::LinkedCell_View view = controller->getView(edgelength);
+  LinkedCell::LinkedCell_View view = controller->getView(edgelength, *emptyset);
   CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
 
@@ -153,25 +159,25 @@
   {
     /// ... at half lower interval half
-    LinkedCell::LinkedCell_View view_lowerhalf = controller->getView((edgelength + interval.first)/2.);
+    LinkedCell::LinkedCell_View view_lowerhalf = controller->getView((edgelength + interval.first)/2., *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
   {
     /// ... at half upper interval half
-    LinkedCell::LinkedCell_View view_upperhalf = controller->getView((interval.last + edgelength)/2.);
+    LinkedCell::LinkedCell_View view_upperhalf = controller->getView((interval.last + edgelength)/2., *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
   {
     /// ... close to lower boundary
-    LinkedCell::LinkedCell_View view_closelower = controller->getView(interval.first + std::numeric_limits<double>::round_error());
+    LinkedCell::LinkedCell_View view_closelower = controller->getView(interval.first + std::numeric_limits<double>::round_error(), *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
   {
     /// ... close to upper boundary
-    LinkedCell::LinkedCell_View view_closerupper = controller->getView(interval.last - std::numeric_limits<double>::round_error());
+    LinkedCell::LinkedCell_View view_closerupper = controller->getView(interval.last - std::numeric_limits<double>::round_error(), *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
   {
     /// on lower boundary
-    LinkedCell::LinkedCell_View view_onlower = controller->getView(interval.first);
+    LinkedCell::LinkedCell_View view_onlower = controller->getView(interval.first, *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
@@ -187,5 +193,5 @@
   /// obtain a view
   CPPUNIT_ASSERT_EQUAL( (size_t)0, controller->ModelsMap.size() );
-  LinkedCell::LinkedCell_View view = controller->getView(edgelength);
+  LinkedCell::LinkedCell_View view = controller->getView(edgelength, *emptyset);
   CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
 
@@ -194,10 +200,10 @@
   {
     /// ... outside lower boundary
-    LinkedCell::LinkedCell_View view_outsidelower = controller->getView(interval.first - std::numeric_limits<double>::round_error());
+    LinkedCell::LinkedCell_View view_outsidelower = controller->getView(interval.first - std::numeric_limits<double>::round_error(), *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)2, controller->ModelsMap.size() );
   }
   {
     /// ... on upper boundary
-    LinkedCell::LinkedCell_View view_onupper = controller->getView(interval.last);
+    LinkedCell::LinkedCell_View view_onupper = controller->getView(interval.last, *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)3, controller->ModelsMap.size() );
   }
@@ -211,15 +217,15 @@
   const double edgelength = 1.9*controller->lower_threshold;
   CPPUNIT_ASSERT_EQUAL( (size_t)0, controller->ModelsMap.size() );
-  LinkedCell::LinkedCell_View view = controller->getView(edgelength);
+  LinkedCell::LinkedCell_View view = controller->getView(edgelength, *emptyset);
   CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
 
   {
     /// get a view at threshold and check that no new instance has been created
-    LinkedCell::LinkedCell_View view_onlower = controller->getView(controller->lower_threshold);
+    LinkedCell::LinkedCell_View view_onlower = controller->getView(controller->lower_threshold, *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
   {
     /// pick a view below 1.
-    LinkedCell::LinkedCell_View view_beneathlower = controller->getView(0.1*controller->lower_threshold);
+    LinkedCell::LinkedCell_View view_beneathlower = controller->getView(0.1*controller->lower_threshold, *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
@@ -233,10 +239,10 @@
   const double edgelength = controller->upper_threshold;
   CPPUNIT_ASSERT_EQUAL( (size_t)0, controller->ModelsMap.size() );
-  LinkedCell::LinkedCell_View view = controller->getView(edgelength);
+  LinkedCell::LinkedCell_View view = controller->getView(edgelength, *emptyset);
   CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
 
   {
     /// get a view beyond threshold and check that no new instance has been created
-    LinkedCell::LinkedCell_View view_beyondupper = controller->getView(1.1*controller->upper_threshold);
+    LinkedCell::LinkedCell_View view_beyondupper = controller->getView(1.1*controller->upper_threshold, *emptyset);
     CPPUNIT_ASSERT_EQUAL( (size_t)1, controller->ModelsMap.size() );
   }
@@ -246,5 +252,5 @@
     range<double> interval = controller->getHeuristicRange(edgelength);
     if ( !interval.isInRange(0.1*controller->upper_threshold) ) {
-      LinkedCell::LinkedCell_View view_beneathupper = controller->getView(0.1*controller->upper_threshold);
+      LinkedCell::LinkedCell_View view_beneathupper = controller->getView(0.1*controller->upper_threshold, *emptyset);
       CPPUNIT_ASSERT_EQUAL( (size_t)2, controller->ModelsMap.size() );
     }
Index: src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.hpp
===================================================================
--- src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.hpp	(revision 4459fcac9c9f1ef9ec32ea88af1da695c2b4e845)
+++ src/LinkedCell/unittests/LinkedCell_ControllerUnitTest.hpp	(revision c806430dd9192196eecf5a8e808273f583a12492)
@@ -17,4 +17,9 @@
 #include <cppunit/extensions/HelperMacros.h>
 
+#include <vector>
+
+#include "LinkedCell/PointCloudAdaptor.hpp"
+
+class atom;
 class Box;
 class RealSpaceMatrix;
@@ -54,4 +59,6 @@
       Box *domain;
       RealSpaceMatrix *BoxM;
+      std::vector<atom *> emptyvector;
+      PointCloudAdaptor< std::vector<atom *> > *emptyset;
       LinkedCell::LinkedCell_Controller *controller;
 };
