Index: src/Actions/AnalysisAction/MolecularVolumeAction.cpp
===================================================================
--- src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision 64b197aba26bbb0356392272af6cee97e1086726)
+++ src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision ee0032c6a09dfcf7548908b02426be6ecf812b72)
@@ -60,5 +60,5 @@
     //RemoveAllBoundaryPoints(TesselStruct, mol, argv[argptr]);
     double volumedifference = ConvexizeNonconvexEnvelope(TesselStruct, mol, NULL);
-    double clustervolume = VolumeOfConvexEnvelope(TesselStruct, configuration);
+    double clustervolume = TesselStruct->getVolumeOfConvexEnvelope(configuration->GetIsAngstroem());
     LOG(0, "The tesselated volume area is " << clustervolume << " " << (configuration->GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3.");
     LOG(0, "The non-convex tesselated volume area is " << clustervolume-volumedifference << " " << (configuration->GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3.");
Index: src/Actions/TesselationAction/ConvexEnvelopeAction.cpp
===================================================================
--- src/Actions/TesselationAction/ConvexEnvelopeAction.cpp	(revision 64b197aba26bbb0356392272af6cee97e1086726)
+++ src/Actions/TesselationAction/ConvexEnvelopeAction.cpp	(revision ee0032c6a09dfcf7548908b02426be6ecf812b72)
@@ -63,5 +63,5 @@
     //RemoveAllBoundaryPoints(TesselStruct, mol, argv[argptr]);
     const double volumedifference = ConvexizeNonconvexEnvelope(TesselStruct, mol, params.filenameConvex.string().c_str());
-    const double clustervolume = VolumeOfConvexEnvelope(TesselStruct, configuration);
+    const double clustervolume = TesselStruct->getVolumeOfConvexEnvelope(configuration->GetIsAngstroem());
     LOG(0, "The tesselated volume area is " << clustervolume << " " << (configuration->GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3.");
     LOG(0, "The non-convex tesselated volume area is " << clustervolume-volumedifference << " " << (configuration->GetIsAngstroem() ? "angstrom" : "atomiclength") << "^3.");
Index: src/Tesselation/boundary.cpp
===================================================================
--- src/Tesselation/boundary.cpp	(revision 64b197aba26bbb0356392272af6cee97e1086726)
+++ src/Tesselation/boundary.cpp	(revision ee0032c6a09dfcf7548908b02426be6ecf812b72)
@@ -490,5 +490,5 @@
  *   -# if not, we mark an error and stop
  * Note: This routine - for free - calculates the difference in volume between convex and
- * non-convex envelope, as the former is easy to calculate - VolumeOfConvexEnvelope() - it
+ * non-convex envelope, as the former is easy to calculate - Tesselation::getVolumeOfConvexEnvelope() - it
  * can be used to compute volumes of arbitrary shapes.
  * \param *out output stream for debugging
@@ -605,44 +605,4 @@
 
 
-/** Determines the volume of a cluster.
- * Determines first the convex envelope, then tesselates it and calculates its volume.
- * \param *out output stream for debugging
- * \param *TesselStruct Tesselation filled with points, lines and triangles on boundary on return
- * \param *configuration needed for path to store convex envelope file
- * \return determined volume of the cluster in cubed config:GetIsAngstroem()
- */
-double VolumeOfConvexEnvelope(class Tesselation *TesselStruct, class config *configuration)
-{
-	Info FunctionInfo(__func__);
-  bool IsAngstroem = configuration->GetIsAngstroem();
-  double volume = 0.;
-  Vector x;
-  Vector y;
-
-  // 6a. Every triangle forms a pyramid with the center of gravity as its peak, sum up the volumes
-  for (TriangleMap::iterator runner = TesselStruct->TrianglesOnBoundary.begin(); runner != TesselStruct->TrianglesOnBoundary.end(); runner++)
-    { // go through every triangle, calculate volume of its pyramid with CoG as peak
-      x = runner->second->getEndpoint(0) - runner->second->getEndpoint(1);
-      y = runner->second->getEndpoint(0) - runner->second->getEndpoint(2);
-      const double a = x.Norm();
-      const double b = y.Norm();
-      const double c = runner->second->getEndpoint(2).distance(runner->second->getEndpoint(1));
-      const double G = sqrt(((a + b + c) * (a + b + c) - 2 * (a * a + b * b + c * c)) / 16.); // area of tesselated triangle
-      x = runner->second->getPlane().getNormal();
-      x.Scale(runner->second->getEndpoint(1).ScalarProduct(x));
-      const double h = x.Norm(); // distance of CoG to triangle
-      const double PyramidVolume = (1. / 3.) * G * h; // this formula holds for _all_ pyramids (independent of n-edge base or (not) centered peak)
-      LOG(1, "INFO: Area of triangle is " << setprecision(10) << G << " "
-          << (IsAngstroem ? "angstrom" : "atomiclength") << "^2, height is "
-          << h << " and the volume is " << PyramidVolume << " "
-          << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
-      volume += PyramidVolume;
-    }
-  LOG(0, "RESULT: The summed volume is " << setprecision(6)
-      << volume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
-
-  return volume;
-};
-
 /** Stores triangles to file.
  * \param *out output stream for debugging
@@ -680,5 +640,5 @@
 
 /** Creates multiples of the by \a *mol given cluster and suspends them in water with a given final density.
- * We get cluster volume by VolumeOfConvexEnvelope() and its diameters by GetDiametersOfCluster()
+ * We get cluster volume by Tesselation::getVolumeOfConvexEnvelope() and its diameters by GetDiametersOfCluster()
  * TODO: Here, we need a VolumeOfGeneralEnvelope (i.e. non-convex one)
  * \param *out output stream for debugging
@@ -686,5 +646,5 @@
  * \param *mol molecule structure representing the cluster
  * \param *&TesselStruct Tesselation structure with triangles on return
- * \param ClusterVolume guesstimated cluster volume, if equal 0 we used VolumeOfConvexEnvelope() instead.
+ * \param ClusterVolume guesstimated cluster volume, if equal 0 we used Tesselation::getVolumeOfConvexEnvelope() instead.
  * \param celldensity desired average density in final cell
  */
@@ -719,5 +679,5 @@
   // some preparations beforehand
   if (ClusterVolume == 0)
-    clustervolume = VolumeOfConvexEnvelope(TesselStruct, configuration);
+    clustervolume = TesselStruct->getVolumeOfConvexEnvelope(configuration->GetIsAngstroem());
   else
     clustervolume = ClusterVolume;
Index: src/Tesselation/boundary.hpp
===================================================================
--- src/Tesselation/boundary.hpp	(revision 64b197aba26bbb0356392272af6cee97e1086726)
+++ src/Tesselation/boundary.hpp	(revision ee0032c6a09dfcf7548908b02426be6ecf812b72)
@@ -50,5 +50,4 @@
 bool RemoveAllBoundaryPoints(class Tesselation *&TesselStruct, const molecule * const mol, const char * const filename);
 void StoreTrianglesinFile(const molecule * const mol, const Tesselation * const TesselStruct, const char *filename, const char *extraSuffix);
-double VolumeOfConvexEnvelope(class Tesselation *TesselStruct, class config *configuration);
 
 
Index: src/Tesselation/tesselation.cpp
===================================================================
--- src/Tesselation/tesselation.cpp	(revision 64b197aba26bbb0356392272af6cee97e1086726)
+++ src/Tesselation/tesselation.cpp	(revision ee0032c6a09dfcf7548908b02426be6ecf812b72)
@@ -87,4 +87,36 @@
   }
   LOG(0, "This envelope was written to file " << TriangleFilesWritten << " times(s).");
+}
+
+/** Determines the volume of a tesselated convex envelope.
+ *
+ * @param IsAngstroem unit of length is angstroem or bohr radii
+ * \return determined volume of envelope assumed being convex
+ */
+double Tesselation::getVolumeOfConvexEnvelope(const bool IsAngstroem) const
+{
+  double volume = 0.;
+  Vector x;
+  Vector y;
+
+  // 6a. Every triangle forms a pyramid with the center of gravity as its peak, sum up the volumes
+  for (TriangleMap::const_iterator runner = TrianglesOnBoundary.begin(); runner != TrianglesOnBoundary.end(); runner++)
+    { // go through every triangle, calculate volume of its pyramid with CoG as peak
+      x = runner->second->getEndpoint(0) - runner->second->getEndpoint(1);
+      const double G = runner->second->getArea();
+      x = runner->second->getPlane().getNormal();
+      x.Scale(runner->second->getEndpoint(1).ScalarProduct(x));
+      const double h = x.Norm(); // distance of CoG to triangle
+      const double PyramidVolume = (1. / 3.) * G * h; // this formula holds for _all_ pyramids (independent of n-edge base or (not) centered peak)
+      LOG(1, "INFO: Area of triangle is " << setprecision(10) << G << " "
+          << (IsAngstroem ? "angstrom" : "atomiclength") << "^2, height is "
+          << h << " and the volume is " << PyramidVolume << " "
+          << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
+      volume += PyramidVolume;
+    }
+  LOG(0, "RESULT: The summed volume is " << setprecision(6)
+      << volume << " " << (IsAngstroem ? "angstrom" : "atomiclength") << "^3.");
+
+  return volume;
 }
 
Index: src/Tesselation/tesselation.hpp
===================================================================
--- src/Tesselation/tesselation.hpp	(revision 64b197aba26bbb0356392272af6cee97e1086726)
+++ src/Tesselation/tesselation.hpp	(revision ee0032c6a09dfcf7548908b02426be6ecf812b72)
@@ -69,4 +69,6 @@
     Tesselation();
     virtual ~Tesselation();
+
+    double getVolumeOfConvexEnvelope(const bool IsAngstroem) const;
 
     void AddTesselationPoint(TesselPoint* Candidate, const int n);
