Index: src/Filling/Filler.cpp
===================================================================
--- src/Filling/Filler.cpp	(revision 595cfd9cce8dca421ed34314c2b4e9cb33b6d8ef)
+++ src/Filling/Filler.cpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -35,4 +35,5 @@
 #include "ClusterInterface.hpp"
 #include "Descriptors/AtomIdDescriptor.hpp"
+#include "Inserter/Inserter.hpp"
 #include "LinearAlgebra/Vector.hpp"
 #include "NodeTypes.hpp"
@@ -47,10 +48,12 @@
  * remove_copy_if which works in this inverted way as desired.
  *
- * @param mesh Mesh with a NodeSet that fills its Shape
- * @param predicate predicate construct to check at each Node
+ * @param _mesh Mesh with a NodeSet that fills its Shape
+ * @param _predicate predicate construct to check at each Node
+ * @param _inserter inserter which places the cloned cluster
  */
-Filler::Filler(const Mesh &_mesh, const FillPredicate &_predicate) :
+Filler::Filler(const Mesh &_mesh, const FillPredicate &_predicate, const Inserter &_inserter) :
   mesh(_mesh),
-  predicate(!_predicate)
+  predicate(!_predicate),
+  inserter(_inserter)
 {}
 
@@ -100,5 +103,5 @@
   // fill all other true nodes
   std::for_each(iter , FillNodes.end(),
-      boost::bind(&ClusterInterface::clone, boost::cref(cluster), boost::ref(copyMethod), _1) );
+      boost::bind(&Inserter::operator(), boost::cref(inserter), boost::ref(copyMethod), boost::cref(cluster), _1) );
 
   // move cluster to first node
Index: src/Filling/Filler.hpp
===================================================================
--- src/Filling/Filler.hpp	(revision 595cfd9cce8dca421ed34314c2b4e9cb33b6d8ef)
+++ src/Filling/Filler.hpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -22,4 +22,5 @@
 class CopyAtomsInterface;
 class FillPredicate;
+class Inserter;
 class Mesh;
 
@@ -31,5 +32,5 @@
 {
 public:
-  Filler(const Mesh &_mesh, const FillPredicate &_predicate);
+  Filler(const Mesh &_mesh, const FillPredicate &_predicate, const Inserter &_inserter);
   ~Filler();
 
@@ -41,5 +42,6 @@
   //!> the predicate is evaluted whether a Node in the NodeSet of mesh is filled or not
   const FillPredicate predicate;
-
+  //!> Inserter function to allow for some changes when placing the cluster at the node
+  const Inserter &inserter;
 };
 
Index: src/Filling/Inserter/Inserter.hpp
===================================================================
--- src/Filling/Inserter/Inserter.hpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
+++ src/Filling/Inserter/Inserter.hpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -0,0 +1,34 @@
+/*
+ * Inserter.hpp
+ *
+ *  Created on: Feb 21, 2012
+ *      Author: heber
+ */
+
+#ifndef INSERTER_HPP_
+#define INSERTER_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Filling/ClusterInterface.hpp"
+
+class CopyAtomsInterface;
+class Vector;
+
+/** Inserter defines the interface to all classes that handle insertion of \a
+ * Cluster into the World at a specific position.
+ */
+class Inserter
+{
+public:
+  virtual void operator()(CopyAtomsInterface &copyMethod, ClusterInterface::Cluster_impl cluster, const Vector &offset) const = 0;
+
+  virtual ~Inserter() {}
+};
+
+
+#endif /* INSERTER_HPP_ */
Index: src/Filling/Inserter/SimpleInserter.cpp
===================================================================
--- src/Filling/Inserter/SimpleInserter.cpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
+++ src/Filling/Inserter/SimpleInserter.cpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -0,0 +1,47 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * SimpleInserter.cpp
+ *
+ *  Created on: Feb 21, 2012
+ *      Author: heber
+ */
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "SimpleInserter.hpp"
+
+#include "Atom/CopyAtoms/CopyAtomsInterface.hpp"
+
+/** Constructor for class SimpleInserter.
+ *
+ */
+SimpleInserter::SimpleInserter()
+{}
+
+/** Destructor for class SimpleInserter.
+ *
+ */
+SimpleInserter::~SimpleInserter()
+{}
+
+/** Inserter operator that simply enacts ClusterInterface::clone().
+ *
+ * @param copyMethod functor for copying atoms
+ * @param offset
+ */
+void SimpleInserter::operator()(CopyAtomsInterface &copyMethod, ClusterInterface::Cluster_impl cluster, const Vector &offset) const
+{
+  cluster->clone(copyMethod, offset);
+}
Index: src/Filling/Inserter/SimpleInserter.hpp
===================================================================
--- src/Filling/Inserter/SimpleInserter.hpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
+++ src/Filling/Inserter/SimpleInserter.hpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -0,0 +1,33 @@
+/*
+ * SimpleInserter.hpp
+ *
+ *  Created on: Feb 21, 2012
+ *      Author: heber
+ */
+
+#ifndef SIMPLEINSERTER_HPP_
+#define SIMPLEINSERTER_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Filling/Inserter/Inserter.hpp"
+
+/** SimpleInserter implements Inserter interface such that the given \a Cluster
+ * is simply inserted at the given position.
+ */
+class SimpleInserter : public Inserter
+{
+public:
+  SimpleInserter();
+  ~SimpleInserter();
+
+  void operator()(CopyAtomsInterface &copyMethod, ClusterInterface::Cluster_impl cluster, const Vector &offset) const;
+};
+
+
+
+#endif /* SIMPLEINSERTER_HPP_ */
Index: src/Filling/Makefile.am
===================================================================
--- src/Filling/Makefile.am	(revision 595cfd9cce8dca421ed34314c2b4e9cb33b6d8ef)
+++ src/Filling/Makefile.am	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -8,4 +8,5 @@
 	Filling/Filler.cpp \
 	Filling/Generators/NodeGenerator.cpp \
+	Filling/Inserter/SimpleInserter.cpp \
 	Filling/Predicates/AnyFillPredicate.cpp \
 	Filling/Predicates/FillPredicate.cpp \
@@ -22,4 +23,6 @@
 	Filling/Filler.hpp \
 	Filling/Generators/NodeGenerator.hpp \
+	Filling/Inserter/Inserter.hpp \
+	Filling/Inserter/SimpleInserter.hpp \
 	Filling/NodeTypes.hpp \
 	Filling/Predicates/AnyFillPredicate.hpp \
Index: src/Filling/unittests/FillerUnitTest.cpp
===================================================================
--- src/Filling/unittests/FillerUnitTest.cpp	(revision 595cfd9cce8dca421ed34314c2b4e9cb33b6d8ef)
+++ src/Filling/unittests/FillerUnitTest.cpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -30,4 +30,5 @@
 #include "Filling/Cluster.hpp"
 #include "Filling/Filler.hpp"
+#include "Filling/Inserter/SimpleInserter.hpp"
 #include "Filling/Mesh/Mesh.hpp"
 #include "Filling/Predicates/FillPredicate.hpp"
@@ -70,6 +71,7 @@
   predicate = new FillPredicate(AlwaysFillPredicate());
   mesh = new MeshStub();
+  inserter = new SimpleInserter();
   CPPUNIT_ASSERT_EQUAL( (size_t)5, mesh->getNodes().size() );
-  filler = new Filler(*mesh, *predicate);
+  filler = new Filler(*mesh, *predicate, *inserter);
   s = new Shape(Sphere( Vector(0.,0.,0.05), 0.1));
 
@@ -100,4 +102,5 @@
   delete mesh;
   delete predicate;
+  delete inserter;
 
   World::purgeInstance();
Index: src/Filling/unittests/FillerUnitTest.hpp
===================================================================
--- src/Filling/unittests/FillerUnitTest.hpp	(revision 595cfd9cce8dca421ed34314c2b4e9cb33b6d8ef)
+++ src/Filling/unittests/FillerUnitTest.hpp	(revision 901d8728439c01d409375e1e3f5d042c4d2d7bb6)
@@ -25,4 +25,5 @@
 class Filler;
 class FillPredicate;
+class Inserter;
 class Mesh;
 class Shape;
@@ -46,4 +47,5 @@
       FillPredicate *predicate;
       Mesh *mesh;
+      Inserter *inserter;
       Filler *filler;
       atom * _atom;
