Index: src/Shapes/BaseShapes.cpp
===================================================================
--- src/Shapes/BaseShapes.cpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/BaseShapes.cpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -131,4 +131,9 @@
 }
 
+std::vector<Vector> Sphere_impl::getHomogeneousPointsInVolume(const size_t N) const {
+	ASSERT(0,
+			"Sphere_impl::getHomogeneousPointsInVolume() - not implemented.");
+	return std::vector<Vector>();
+}
 
 Shape Sphere(){
@@ -237,4 +242,10 @@
 }
 
+std::vector<Vector> Cuboid_impl::getHomogeneousPointsInVolume(const size_t N) const {
+	ASSERT(0,
+			"Cuboid_impl::getHomogeneousPointsInVolume() - not implemented.");
+	return std::vector<Vector>();
+}
+
 Shape Cuboid(){
   Shape::impl_ptr impl = Shape::impl_ptr(new Cuboid_impl());
Index: src/Shapes/BaseShapes_impl.hpp
===================================================================
--- src/Shapes/BaseShapes_impl.hpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/BaseShapes_impl.hpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -32,4 +32,5 @@
   virtual enum ShapeType getType() const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 };
 
@@ -44,4 +45,5 @@
   virtual enum ShapeType getType() const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 };
 
Index: src/Shapes/Shape.cpp
===================================================================
--- src/Shapes/Shape.cpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/Shape.cpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -65,4 +65,8 @@
 std::vector<Vector> Shape::getHomogeneousPointsOnSurface(const size_t N) const {
   return impl->getHomogeneousPointsOnSurface(N);
+}
+
+std::vector<Vector> Shape::getHomogeneousPointsInVolume(const size_t N) const {
+	return impl->getHomogeneousPointsInVolume(N);
 }
 
@@ -217,4 +221,10 @@
 }
 
+std::vector<Vector> AndShape_impl::getHomogeneousPointsInVolume(const size_t N) const {
+	ASSERT(0,
+			"AndShape_impl::getHomogeneousPointsInVolume() - not implemented.");
+	return std::vector<Vector>();
+}
+
 
 Shape operator&&(const Shape &lhs,const Shape &rhs){
@@ -323,4 +333,10 @@
 }
 
+std::vector<Vector> OrShape_impl::getHomogeneousPointsInVolume(const size_t N) const {
+	ASSERT(0,
+			"OrShape_impl::getHomogeneousPointsInVolume() - not implemented.");
+	return std::vector<Vector>();
+}
+
 Shape operator||(const Shape &lhs,const Shape &rhs){
   Shape::impl_ptr newImpl = Shape::impl_ptr(new OrShape_impl(getShapeImpl(lhs),getShapeImpl(rhs)));
@@ -373,4 +389,10 @@
   // surfaces are the same, only normal direction is different
   return arg->getHomogeneousPointsOnSurface(N);
+}
+
+std::vector<Vector> NotShape_impl::getHomogeneousPointsInVolume(const size_t N) const {
+	ASSERT(0,
+			"NotShape_impl::getHomogeneousPointsInVolume() - not implemented.");
+	return std::vector<Vector>();
 }
 
Index: src/Shapes/Shape.hpp
===================================================================
--- src/Shapes/Shape.hpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/Shape.hpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -47,4 +47,5 @@
   LineSegmentSet getLineIntersections(const Line&) const;
   std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 
   Shape &operator=(const Shape& rhs);
Index: src/Shapes/ShapeOps.cpp
===================================================================
--- src/Shapes/ShapeOps.cpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/ShapeOps.cpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -19,4 +19,7 @@
 
 #include "CodePatterns/MemDebug.hpp"
+
+#include <algorithm>
+#include <boost/bind.hpp>
 
 #include "Shapes/ShapeExceptions.hpp"
@@ -87,5 +90,9 @@
 
 std::vector<Vector> ShapeOpsBase_impl::getHomogeneousPointsOnSurface(const size_t N) const {
-  return getArg()->getHomogeneousPointsOnSurface(N);;
+  return getArg()->getHomogeneousPointsOnSurface(N);
+}
+
+std::vector<Vector> ShapeOpsBase_impl::getHomogeneousPointsInVolume(const size_t N) const {
+  return getArg()->getHomogeneousPointsInVolume(N);
 }
 
@@ -128,8 +135,14 @@
 std::vector<Vector> Resize_impl::getHomogeneousPointsOnSurface(const size_t N) const {
   std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);
-  for(std::vector<Vector>::iterator iter = PointsOnSurface.begin(); iter != PointsOnSurface.end(); ++iter) {
-    *iter *= size;
-  }
-  return PointsOnSurface;
+  std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),
+  		boost::bind(&Vector::operator*, _1, size) );
+  return PointsOnSurface;
+}
+
+std::vector<Vector> Resize_impl::getHomogeneousPointsInVolume(const size_t N) const {
+  std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);
+  std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),
+  		boost::bind(&Vector::operator*, _1, size) );
+	return std::vector<Vector>();
 }
 
@@ -183,7 +196,13 @@
 std::vector<Vector> Translate_impl::getHomogeneousPointsOnSurface(const size_t N) const {
   std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);
-  for(std::vector<Vector>::iterator iter = PointsOnSurface.begin(); iter != PointsOnSurface.end(); ++iter) {
-    *iter += offset;
-  }
+  std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),
+  		boost::bind(&Vector::operator+, _1, offset) );
+  return PointsOnSurface;
+}
+
+std::vector<Vector> Translate_impl::getHomogeneousPointsInVolume(const size_t N) const {
+  std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);
+  std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),
+  		boost::bind(&Vector::operator+, _1, offset) );
   return PointsOnSurface;
 }
@@ -245,7 +264,13 @@
 std::vector<Vector> Stretch_impl::getHomogeneousPointsOnSurface(const size_t N) const {
   std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);
-  for(std::vector<Vector>::iterator iter = PointsOnSurface.begin(); iter != PointsOnSurface.end(); ++iter) {
-    (*iter).ScaleAll(reciFactors);
-  }
+  std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),
+  		boost::bind( static_cast<void (Vector::*)(const Vector&)>(&Vector::ScaleAll), _1, reciFactors) );
+  return PointsOnSurface;
+}
+
+std::vector<Vector> Stretch_impl::getHomogeneousPointsInVolume(const size_t N) const {
+  std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);
+  std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),
+      boost::bind( static_cast<void (Vector::*)(const Vector&)>(&Vector::ScaleAll), _1, reciFactors) );
   return PointsOnSurface;
 }
@@ -292,7 +317,13 @@
 std::vector<Vector> Transform_impl::getHomogeneousPointsOnSurface(const size_t N) const {
   std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);
-  for(std::vector<Vector>::iterator iter = PointsOnSurface.begin(); iter != PointsOnSurface.end(); ++iter) {
-    *iter = transformation * (*iter);
-  }
+  std::transform( PointsOnSurface.begin(), PointsOnSurface.end(), PointsOnSurface.begin(),
+      boost::bind(static_cast<Vector(*)(const RealSpaceMatrix&,const Vector&)>(operator*), transformation, _1));
+  return PointsOnSurface;
+}
+
+std::vector<Vector> Transform_impl::getHomogeneousPointsInVolume(const size_t N) const {
+  std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);
+  std::transform( PointsOnSurface.begin(), PointsOnSurface.end(), PointsOnSurface.begin(),
+      boost::bind(static_cast<Vector(*)(const RealSpaceMatrix&,const Vector&)>(operator*), transformation, _1));
   return PointsOnSurface;
 }
Index: src/Shapes/ShapeOps_impl.hpp
===================================================================
--- src/Shapes/ShapeOps_impl.hpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/ShapeOps_impl.hpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -37,4 +37,5 @@
   virtual enum ShapeType getType() const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 protected:
   virtual Vector translateIn(const Vector &point) const=0;
@@ -58,4 +59,5 @@
   virtual bool isInside(const Vector& point) const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   double size;
@@ -76,4 +78,5 @@
   virtual bool isInside(const Vector& point) const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   Vector offset;
@@ -92,4 +95,5 @@
   virtual bool isInside(const Vector& point) const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   Vector factors;
@@ -109,4 +113,5 @@
   virtual bool isInside(const Vector& point) const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   RealSpaceMatrix transformation;
Index: src/Shapes/Shape_impl.hpp
===================================================================
--- src/Shapes/Shape_impl.hpp	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/Shape_impl.hpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -17,4 +17,6 @@
 #include <limits>
 #include <vector>
+
+#include "CodePatterns/Assert.hpp"
 
 #include "Shapes/Shape.hpp"
@@ -40,4 +42,5 @@
   virtual enum ShapeType getType() const =0;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const=0;
+  virtual   std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const=0;
 };
 
@@ -74,4 +77,9 @@
     return PointsOnSurface;
   }
+  std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const {
+  	ASSERT(0,
+  			"Everywhere_impl::getHomogeneousPointsInVolume() - not implemented.");
+  	return std::vector<Vector>();
+  }
 };
 
@@ -105,4 +113,7 @@
     return PointsOnSurface;
   }
+  std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const {
+  	return std::vector<Vector>();
+  }
 };
 
@@ -120,4 +131,5 @@
   virtual enum ShapeType getType() const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   Shape::impl_ptr lhs;
@@ -138,4 +150,5 @@
   virtual enum ShapeType getType() const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   Shape::impl_ptr lhs;
@@ -156,4 +169,5 @@
   virtual enum ShapeType getType() const;
   virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;
+  virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;
 private:
   Shape::impl_ptr arg;
Index: src/Shapes/unittests/Makefile.am
===================================================================
--- src/Shapes/unittests/Makefile.am	(revision 6acc2f3a1b46ec7dee426fa502fd350592a2d3b5)
+++ src/Shapes/unittests/Makefile.am	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -5,13 +5,16 @@
 SHAPETESTSSOURCES = \
 	../Shapes/unittests/BaseShapesUnitTest.cpp \
-	../Shapes/unittests/ShapeOpsUnitTest.cpp
+	../Shapes/unittests/ShapeOpsUnitTest.cpp \
+	../Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp
 
 SHAPETESTSHEADERS= \
 	../Shapes/unittests/BaseShapesUnitTest.hpp \
-	../Shapes/unittests/ShapeOpsUnitTest.hpp
+	../Shapes/unittests/ShapeOpsUnitTest.hpp \
+	../Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp
 
 SHAPETESTS = \
   BaseShapesUnitTest \
-  ShapeOpsUnitTest
+  ShapeOpsUnitTest \
+  Shape_HomogeneousPointsUnitTest
   
 TESTS += $(SHAPETESTS)
@@ -41,4 +44,12 @@
 ShapeOpsUnitTest_LDADD = $(SHAPELIBS)
 
+Shape_HomogeneousPointsUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \
+	../Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp \
+	../Shapes/unittests/Shape_HomogeneousPointsUnitTest.hpp
+nodist_Shape_HomogeneousPointsUnitTest_SOURCES = \
+	../Helpers/defs.hpp \
+	../Helpers/defs.cpp
+Shape_HomogeneousPointsUnitTest_LDADD = $(SHAPELIBS)
+
 
 #AUTOMAKE_OPTIONS = parallel-tests
Index: src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp
===================================================================
--- src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
+++ src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -0,0 +1,64 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * Shape_HomogeneousPointsUnitTest.cpp
+ *
+ *  Created on: Jun 19, 2010
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+#include <cmath>
+#include <limits>
+
+#ifdef HAVE_TESTRUNNER
+#include "UnitTestMain.hpp"
+#endif /*HAVE_TESTRUNNER*/
+
+#include "CodePatterns/Assert.hpp"
+
+#include "Shapes/BaseShapes.hpp"
+#include "Shapes/Shape.hpp"
+
+#include "Shape_HomogeneousPointsUnitTest.hpp"
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION( Shape_HomogeneousPointsTest );
+
+void Shape_HomogeneousPointsTest::setUp()
+{
+  // failing asserts should be thrown
+  ASSERT_DO(Assert::Throw);
+}
+
+void Shape_HomogeneousPointsTest::tearDown()
+{}
+
+/** Unit test for points on Shape's surface.
+ *
+ */
+void Shape_HomogeneousPointsTest::surfaceTest()
+{
+	CPPUNIT_ASSERT(true);
+}
+
+/** Unit test for points in Shape's volume.
+ *
+ */
+void Shape_HomogeneousPointsTest::volumeTest()
+{
+	CPPUNIT_ASSERT(true);
+}
Index: src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.hpp
===================================================================
--- src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.hpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
+++ src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.hpp	(revision 5a8d6181d9ecac92ad0fd935c5788630721f55b0)
@@ -0,0 +1,34 @@
+/*
+ * Shape_HomogeneousPointsUnitTest.hpp
+ *
+ *  Created on: Jun 19, 2010
+ *      Author: heber
+ */
+
+#ifndef SHAPE_HOMOGENEOUSPOINTSUNITTEST_HPP_
+#define SHAPE_HOMOGENEOUSPOINTSUNITTEST_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class Shape_HomogeneousPointsTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( Shape_HomogeneousPointsTest) ;
+  CPPUNIT_TEST ( surfaceTest );
+  CPPUNIT_TEST ( volumeTest );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void surfaceTest();
+  void volumeTest();
+};
+
+#endif /* SHAPE_HOMOGENEOUSPOINTSUNITTEST_HPP_ */
