Index: src/Filling/Preparators/ShapeSurfaceFillerPreparator.cpp
===================================================================
--- src/Filling/Preparators/ShapeSurfaceFillerPreparator.cpp	(revision df9f200764a5636d8eb51224f34c27dbd7463b9a)
+++ src/Filling/Preparators/ShapeSurfaceFillerPreparator.cpp	(revision df9f200764a5636d8eb51224f34c27dbd7463b9a)
@@ -0,0 +1,96 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2014 Frederik Heber. All rights reserved.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * ShapeSurfaceFillerPreparator.cpp
+ *
+ *  Created on: Sep 3, 2014
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "ShapeSurfaceFillerPreparator.hpp"
+
+#include <boost/bind.hpp>
+#include <boost/function.hpp>
+
+#include "Filling/Mesh/Mesh.hpp"
+#include "Filling/Mesh/MeshAdaptor.hpp"
+#include "Filling/Inserter/Inserter.hpp"
+#include "Filling/Inserter/SurfaceInserter.hpp"
+#include "Filling/Inserter/SurfaceRandomInserter.hpp"
+#include "Shapes/Shape.hpp"
+
+ShapeSurfaceFillerPreparator::ShapeSurfaceFillerPreparator(molecule *_filler) :
+  BaseFillerPreparator(_filler)
+{}
+
+ShapeSurfaceFillerPreparator::~ShapeSurfaceFillerPreparator()
+{}
+
+void ShapeSurfaceFillerPreparator::addShapeMesh(
+    const Shape &_shape,
+    const unsigned int _nodes)
+{
+
+  MeshAdaptor::function_t fct =
+      boost::bind(&Shape::getHomogeneousPointsOnSurface,
+          boost::cref(_shape),
+          _nodes);
+  mesh = new MeshAdaptor(fct);
+}
+
+void ShapeSurfaceFillerPreparator::addSurfaceInserter(
+        const Shape &_shape,
+        const Vector &_alignedaxis
+        )
+{
+  inserter = new Inserter(
+      Inserter::impl_ptr(new SurfaceInserter(
+          _shape,
+          _alignedaxis)
+      )
+  );
+}
+
+void ShapeSurfaceFillerPreparator::addSurfaceRandomInserter(
+        const Shape &_shape,
+        const Vector &_alignedaxis,
+        const double _MaxAtomComponent,
+        const double _MaxMoleculeComponent
+        )
+{
+  inserter = new Inserter(
+      Inserter::impl_ptr(new SurfaceRandomInserter(
+          _shape,
+          _alignedaxis,
+          _MaxAtomComponent,
+          _MaxMoleculeComponent)
+      )
+  );
+}
Index: src/Filling/Preparators/ShapeSurfaceFillerPreparator.hpp
===================================================================
--- src/Filling/Preparators/ShapeSurfaceFillerPreparator.hpp	(revision df9f200764a5636d8eb51224f34c27dbd7463b9a)
+++ src/Filling/Preparators/ShapeSurfaceFillerPreparator.hpp	(revision df9f200764a5636d8eb51224f34c27dbd7463b9a)
@@ -0,0 +1,49 @@
+/*
+ * ShapeSurfaceFillerPreparator.hpp
+ *
+ *  Created on: Sep 3, 2014
+ *      Author: heber
+ */
+
+#ifndef SHAPESURFACEFILLERPREPARATOR_HPP_
+#define SHAPESURFACEFILLERPREPARATOR_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "BaseFillerPreparator.hpp"
+
+class Shape;
+class Vector;
+
+/** ShapeSurfaceFillerPreparator takes a shape and uses Shape::getHomogeneousPointsInVolume()
+ * to create a specific number of nodes inside this Shape for filling.
+ *
+ */
+class ShapeSurfaceFillerPreparator :
+  public BaseFillerPreparator
+{
+public:
+    ShapeSurfaceFillerPreparator(molecule *_filler);
+    ~ShapeSurfaceFillerPreparator();
+
+    void addShapeMesh(
+        const Shape &_shape,
+        const unsigned int _nodes);
+
+    void addSurfaceInserter(
+            const Shape &_shape,
+            const Vector &_alignedaxis
+            );
+
+   void addSurfaceRandomInserter(
+        const Shape &_shape,
+        const Vector &_alignedaxis,
+        const double _MaxAtomComponent,
+        const double _MaxMoleculeComponent
+        );
+};
+
+#endif /* SHAPESURFACEFILLERPREPARATOR_HPP_ */
