Index: src/Actions/AnalysisAction/MolecularVolumeAction.cpp
===================================================================
--- src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -16,4 +16,5 @@
 #include "Helpers/Log.hpp"
 #include "Helpers/Verbose.hpp"
+#include "tesselation.hpp"
 #include "World.hpp"
 
Index: src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -18,4 +18,5 @@
 #include "molecule.hpp"
 #include "periodentafel.hpp"
+#include "tesselation.hpp"
 #include "LinearAlgebra/Vector.hpp"
 #include "World.hpp"
Index: src/Actions/TesselationAction/ConvexEnvelopeAction.cpp
===================================================================
--- src/Actions/TesselationAction/ConvexEnvelopeAction.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/Actions/TesselationAction/ConvexEnvelopeAction.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -15,4 +15,5 @@
 #include "Helpers/Log.hpp"
 #include "molecule.hpp"
+#include "tesselation.hpp"
 #include "Helpers/Verbose.hpp"
 #include "World.hpp"
Index: src/Actions/TesselationAction/NonConvexEnvelopeAction.cpp
===================================================================
--- src/Actions/TesselationAction/NonConvexEnvelopeAction.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/Actions/TesselationAction/NonConvexEnvelopeAction.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -14,4 +14,5 @@
 #include "Helpers/Log.hpp"
 #include "molecule.hpp"
+#include "tesselation.hpp"
 #include "Helpers/Verbose.hpp"
 #include "World.hpp"
Index: src/BoundaryMaps.hpp
===================================================================
--- src/BoundaryMaps.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/BoundaryMaps.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -9,45 +9,55 @@
 #define BOUNDARYMAPS_HPP_
 
-#define IndexToIndex std::map <int, int>
+class BoundaryPointSet;
+class BoundaryLineSet;
+class BoundaryTriangleSet;
+class BoundaryPolygonSet;
+class CandidateForTesselation;
+class TesselPoint;
 
-#define PointMap std::map < int, class BoundaryPointSet * >
-#define PointSet std::set < class BoundaryPointSet * >
-#define PointList std::list < class BoundaryPointSet * >
-#define PointPair std::pair < int, class BoundaryPointSet * >
-#define PointTestPair std::pair < PointMap::iterator, bool >
+#include <list>
+#include <map>
+#include <set>
 
-#define CandidateList std::list <class CandidateForTesselation *>
-#define CandidateMap std::map <class BoundaryLineSet *, class CandidateForTesselation *>
+typedef std::map <int, int> IndexToIndex;
 
-#define LineMap std::multimap < int, class BoundaryLineSet * >
-#define LineSet std::set < class BoundaryLineSet * >
-#define LineList std::list < class BoundaryLineSet * >
-#define LinePair std::pair < int, class BoundaryLineSet * >
-#define LineTestPair std::pair < LineMap::iterator, bool >
+typedef std::map < int, class BoundaryPointSet * > PointMap;
+typedef std::set < class BoundaryPointSet * > PointSet;
+typedef std::list < class BoundaryPointSet * > PointList;
+typedef std::pair < int, class BoundaryPointSet * > PointPair;
+typedef std::pair < PointMap::iterator, bool > PointTestPair;
 
-#define TriangleMap std::map < int, class BoundaryTriangleSet * >
-#define TriangleSet std::set < class BoundaryTriangleSet * >
-#define TriangleList std::list < class BoundaryTriangleSet * >
-#define TrianglePair std::pair < int, class BoundaryTriangleSet * >
-#define TriangleTestPair std::pair < TrianglePair::iterator, bool >
+typedef std::list <class CandidateForTesselation *> CandidateList;
+typedef std::map <class BoundaryLineSet *, class CandidateForTesselation *> CandidateMap;
 
-#define PolygonMap std::map < int, class BoundaryPolygonSet * >
-#define PolygonSet std::set < class BoundaryPolygonSet * >
-#define PolygonList std::list < class BoundaryPolygonSet * >
+typedef std::multimap < int, class BoundaryLineSet * > LineMap;
+typedef std::set < class BoundaryLineSet * > LineSet;
+typedef std::list < class BoundaryLineSet * > LineList;
+typedef std::pair < int, class BoundaryLineSet * > LinePair;
+typedef std::pair < LineMap::iterator, bool > LineTestPair;
 
-#define DistanceToPointMap std::multimap <double, class BoundaryPointSet * >
-#define DistanceToPointPair std::pair <double, class BoundaryPointSet * >
+typedef std::map < int, class BoundaryTriangleSet * > TriangleMap;
+typedef std::set < class BoundaryTriangleSet * > TriangleSet;
+typedef std::list < class BoundaryTriangleSet * > TriangleList;
+typedef std::pair < int, class BoundaryTriangleSet * > TrianglePair;
+typedef std::pair < TriangleMap::iterator, bool > TriangleTestPair;
 
-#define DistanceMultiMap std::multimap <double, std::pair < PointMap::iterator, PointMap::iterator> >
-#define DistanceMultiMapPair std::pair <double, std::pair < PointMap::iterator, PointMap::iterator> >
+typedef std::map < int, class BoundaryPolygonSet * > PolygonMap;
+typedef std::set < class BoundaryPolygonSet * > PolygonSet;
+typedef std::list < class BoundaryPolygonSet * > PolygonList;
 
-#define TesselPointList std::list <TesselPoint *>
-#define TesselPointSet std::set <TesselPoint *>
+typedef std::multimap <double, class BoundaryPointSet * > DistanceToPointMap;
+typedef std::pair <double, class BoundaryPointSet * > DistanceToPointPair;
 
-#define ListOfTesselPointList std::list<std::list <TesselPoint *> *>
+typedef std::multimap <double, std::pair < PointMap::iterator, PointMap::iterator> > DistanceMultiMap;
+typedef std::pair <double, std::pair < PointMap::iterator, PointMap::iterator> > DistanceMultiMapPair;
+
+typedef std::list <TesselPoint *> TesselPointList;
+typedef std::set <TesselPoint *> TesselPointSet;
+
+typedef std::list<std::list <TesselPoint *> *> ListOfTesselPointList;
 
 enum centers {Opt, OtherOpt};
 
-#define HULLEPSILON 1e-9 //!< TODO: Get rid of HULLEPSILON, points to numerical instabilities
 
 
Index: src/BoundaryTriangleSet.hpp
===================================================================
--- src/BoundaryTriangleSet.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/BoundaryTriangleSet.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -11,6 +11,4 @@
 #include "BoundaryMaps.hpp"
 #include "LinearAlgebra/Vector.hpp"
-
-#include <set>
 
 class BoundaryLineSet;
Index: src/CandidateForTesselation.cpp
===================================================================
--- src/CandidateForTesselation.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/CandidateForTesselation.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -25,4 +25,8 @@
 
 using namespace std;
+
+
+const double CandidateForTesselation::HULLEPSILON = 1e-9;
+
 
 /** Constructor of class CandidateForTesselation.
Index: src/CandidateForTesselation.hpp
===================================================================
--- src/CandidateForTesselation.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/CandidateForTesselation.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -38,4 +38,7 @@
   double ShortestAngle;
   double OtherShortestAngle;
+
+  private:
+  static const double HULLEPSILON; //!< TODO: Get rid of HULLEPSILON, points to numerical instabilities
 };
 
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/Makefile.am	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -157,4 +157,5 @@
   config.cpp \
   ConfigFileBuffer.cpp \
+  defs.cpp \
   element.cpp \
   elements_db.cpp \
Index: src/ThermoStatContainer.hpp
===================================================================
--- src/ThermoStatContainer.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/ThermoStatContainer.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -16,5 +16,5 @@
 class ConfigFileBuffer;
 
-#define MaxThermostats 6      //!< maximum number of thermostat entries in Ions#ThermostatNames and Ions#ThermostatImplemented
+enum { MaxThermostats=6 };      //!< maximum number of thermostat entries in Ions#ThermostatNames and Ions#ThermostatImplemented
 enum thermostats { None, Woodcock, Gaussian, Langevin, Berendsen, NoseHoover };   //!< Thermostat names for output
 
Index: src/analysis_bonds.hpp
===================================================================
--- src/analysis_bonds.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/analysis_bonds.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -20,5 +20,5 @@
 /*********************************************** defines ***********************************/
 
-#define HBRIDGEDISTANCE 3.5   //!< HBridge distance from PCCP Vol 10. 4802-4813
+const double HBRIDGEDISTANCE=3.5;   //!< HBridge distance from PCCP Vol 10. 4802-4813
 
 /****************************************** forward declarations *****************************/
Index: src/bondgraph.cpp
===================================================================
--- src/bondgraph.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/bondgraph.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -21,4 +21,6 @@
 #include "periodentafel.hpp"
 #include "LinearAlgebra/Vector.hpp"
+
+const double BondGraph::BondThreshold = 0.4;   //!< CSD threshold in bond check which is the width of the interval whose center is the sum of the covalent radii
 
 /** Constructor of class BondGraph.
@@ -147,6 +149,6 @@
   MinDistance = OtherWalker->getType()->CovalentRadius + Walker->getType()->CovalentRadius;
   MinDistance *= (IsAngstroem) ? 1. : 1. / AtomicLengthToAngstroem;
-  MaxDistance = MinDistance + BONDTHRESHOLD;
-  MinDistance -= BONDTHRESHOLD;
+  MaxDistance = MinDistance + BondThreshold;
+  MinDistance -= BondThreshold;
 };
 
@@ -168,6 +170,6 @@
     MinDistance = GetBondLength(Walker->getType()->Z-1, OtherWalker->getType()->Z-1);
     MinDistance *= (IsAngstroem) ? 1. : 1. / AtomicLengthToAngstroem;
-    MaxDistance = MinDistance + BONDTHRESHOLD;
-    MinDistance -= BONDTHRESHOLD;
+    MaxDistance = MinDistance + BondThreshold;
+    MinDistance -= BondThreshold;
   }
 };
Index: src/bondgraph.hpp
===================================================================
--- src/bondgraph.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/bondgraph.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -20,7 +20,4 @@
 #include <iosfwd>
 
-/*********************************************** defines ***********************************/
-
-#define BONDTHRESHOLD 0.4   //!< CSD threshold in bond check which is the width of the interval whose center is the sum of the covalent radii
 
 /****************************************** forward declarations *****************************/
@@ -48,4 +45,6 @@
 
 private:
+  static const double BondThreshold;
+
   MatrixContainer *BondLengthMatrix;
   double max_distance;
Index: src/boundary.hpp
===================================================================
--- src/boundary.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/boundary.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -34,15 +34,15 @@
 /********************************************** definitions *********************************/
 
-#define DEBUG 1
-#define DoSingleStepOutput 0
-#define SingleStepWidth 10
+enum { DEBUG=1 };
+enum { DoSingleStepOutput=0 };
+enum { SingleStepWidth=10 };
 
-#define DistancePair pair < double, atom* >
-#define DistanceMap multimap < double, atom* >
-#define DistanceTestPair pair < DistanceMap::iterator, bool>
+typedef std::pair < double, class atom* > DistancePair;
+typedef std::multimap < double, class atom* > DistanceMap;
+typedef std::pair < DistanceMap::iterator, bool> DistanceTestPair;
 
-#define Boundaries map <double, DistancePair >
-#define BoundariesPair pair<double, DistancePair >
-#define BoundariesTestPair pair< Boundaries::iterator, bool>
+typedef std::map <double, DistancePair > Boundaries;
+typedef std::pair<double, DistancePair > BoundariesPair;
+typedef std::pair< Boundaries::iterator, bool> BoundariesTestPair;
 
 /********************************************** declarations *******************************/
Index: src/defs.cpp
===================================================================
--- src/defs.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
+++ src/defs.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -0,0 +1,58 @@
+/*
+ * defs.cpp
+ *
+ *  Created on: Aug 7, 2010
+ *      Author: heber
+ */
+
+#include "defs.hpp"
+
+const double MYEPSILON=1e-13;   //!< machine epsilon precision
+const double AtomicLengthToAngstroem = 0.52917721; //!< conversion factor from atomic length/bohrradius to angstroem
+const double AtomicEnergyToKelvin = 315774.67;  //!< conversion factor from atomic energy to kelvin via boltzmann factor
+const double KelvinToAtomicTemperature = 3.1668152e-06;    //!< conversion factor for Kelvin to atomic temperature (Hartree over k_B)
+const double KelvinToeV = 8.6173422e-05;                   //!< conversion factor for Kelvin to Ht (k_B * T = energy), thus Boltzmann constant in eV/K
+const double AtomicMassUnitsToeV = 931494088.;        //!< conversion factor for atomic weight in units to mass in eV
+const double AtomicMassUnitsToHt = 34480864.;        //!< conversion factor for atomic weight in units to mass in Ht (protonmass/electronmass * electron_mass_in_Ht
+const double ElectronMass_Ht = 18778.865;            //!< electron mass in Ht
+const double ElectronMass_eV = 510998.903;           //!< electron mass in eV
+const double Units2Electronmass = (AtomicMassUnitsToeV/ElectronMass_eV); //!< atomic mass unit in eV/ electron mass in eV = 1 822.88863
+const double Atomictime2Femtoseconds = 0.024188843;     //!< Atomictime in fs
+
+const char* VERSIONSTRING = "v1.0";
+
+const char* LocalPath="./";
+
+// various standard filenames
+const char *DEFAULTCONFIG = "main_pcp_linux";    //!< default filename of config file
+const char *CONVEXENVELOPE = "ConvexEnvelope.dat";    //!< default filename of convex envelope tecplot data file
+const char *KEYSETFILE = "KeySets.dat";    //!< default filename of BOSSANOVA key sets file
+const char *ADJACENCYFILE = "Adjacency.dat";    //!< default filename of BOSSANOVA adjacancy file
+const char *TEFACTORSFILE = "TE-Factors.dat";    //!< default filename of BOSSANOVA total energy factors file
+const char *FORCESFILE = "Forces-Factors.dat";    //!< default filename of BOSSANOVA force factors file
+const char *HCORRECTIONSUFFIX = "Hcorrection.dat";    //!< default filename of BOSSANOVA H correction file (unwanted saturation interaction)
+const char *FITCONSTANTSUFFIX = "FitConstant.dat";   //!< suffix of default filename of BOSSANOVA fit constants file (unwanted saturation interaction)
+const char *SHIELDINGSUFFIX = "sigma_all.csv";                //!< default filename of BOSSANOVA shieldings file
+const char *SHIELDINGPASSUFFIX = "sigma_all_PAS.csv";                 //!< default filename of BOSSANOVA shieldings PAS file
+const char *ORDERATSITEFILE = "OrderAtSite.dat";    //!< default filename of BOSSANOVA Bond Order at each atom file
+const char *ENERGYPERFRAGMENT = "EnergyPerFragment";    //!< default filename of BOSSANOVA Energy contribution Per Fragment file
+const char *FRAGMENTPREFIX = "BondFragment";    //!< default filename prefix of BOSSANOVA fragment config and directories
+const char *STANDARDCONFIG = "unknown.conf";    //!< default filename of standard config file
+const char *STANDARDELEMENTSDB = "elements.db";    //!< default filename of elements data base with masses, Z, VanDerWaals radii, ...
+const char *STANDARDVALENCEDB = "valence.db";    //!< default filename of valence number per element database
+const char *STANDARDORBITALDB = "orbitals.db";    //!< default filename of orbitals per element database
+const char *STANDARDHBONDDISTANCEDB = "Hbonddistance.db";    //!< default filename of typial bond distance to hydrogen database
+const char *STANDARDHBONDANGLEDB = "Hbondangle.db";    //!< default filename of typial bond angle to hydrogen database
+
+// some values
+const double SOLVENTDENSITY_A = 0.6022142;
+const double SOLVENTDENSITY_a0 = 0.089238936;
+
+
+const int UPDATECOUNT = 10;  //!< update ten sites per BOSSANOVA interval
+
+const int STD_MENU_LENGTH = 60;
+const char STD_MENU_TITLE_SPACER = '=';
+const char STD_SEPERATOR_SPACER = '-';
+
+const char *MOLECUILDER_NAME = "Molecuilder";
Index: src/defs.hpp
===================================================================
--- src/defs.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/defs.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -8,21 +8,22 @@
 #define DEFS_HPP_
 
-#define MYEPSILON 1e-13   //!< machine epsilon precision
-#define NDIM  3   //!< number of spatial dimensions
-#define MAX_ELEMENTS 128  //!< maximum number of elements for certain lookup tables 
-#define AtomicLengthToAngstroem  0.52917721 //!< conversion factor from atomic length/bohrradius to angstroem
-#define AtomicEnergyToKelvin 315774.67  //!< conversion factor from atomic energy to kelvin via boltzmann factor
-#define KelvinToAtomicTemperature 3.1668152e-06    //!< conversion factor for Kelvin to atomic temperature (Hartree over k_B)
-#define KelvinToeV 8.6173422e-05                   //!< conversion factor for Kelvin to Ht (k_B * T = energy), thus Boltzmann constant in eV/K
-#define AtomicMassUnitsToeV 931494088.        //!< conversion factor for atomic weight in units to mass in eV
-#define AtomicMassUnitsToHt 34480864.        //!< conversion factor for atomic weight in units to mass in Ht (protonmass/electronmass * electron_mass_in_Ht
-#define ElectronMass_Ht 18778.865            //!< electron mass in Ht
-#define ElectronMass_eV 510998.903           //!< electron mass in eV
-#define Units2Electronmass (AtomicMassUnitsToeV/ElectronMass_eV) //!< atomic mass unit in eV/ electron mass in eV = 1 822.88863
-#define Atomictime2Femtoseconds 0.024188843     //!< Atomictime in fs
+enum { NDIM = 3 };   //!< number of spatial dimensions
+enum { MAX_ELEMENTS = 128}; //!< maximum number of elements for certain lookup tables
 
-#define VERSIONSTRING "v1.0"
+extern "C" const double MYEPSILON;  //!< machine epsilon precision
+extern "C" const double AtomicLengthToAngstroem; //!< conversion factor from atomic length/bohrradius to angstroem
+extern "C" const double AtomicEnergyToKelvin;  //!< conversion factor from atomic energy to kelvin via boltzmann factor
+extern "C" const double KelvinToAtomicTemperature;    //!< conversion factor for Kelvin to atomic temperature (Hartree over k_B)
+extern "C" const double KelvinToeV;                   //!< conversion factor for Kelvin to Ht (k_B * T = energy), thus Boltzmann constant in eV/K
+extern "C" const double AtomicMassUnitsToeV;        //!< conversion factor for atomic weight in units to mass in eV
+extern "C" const double AtomicMassUnitsToHt;        //!< conversion factor for atomic weight in units to mass in Ht (protonmass/electronmass * electron_mass_in_Ht
+extern "C" const double ElectronMass_Ht;            //!< electron mass in Ht
+extern "C" const double ElectronMass_eV;           //!< electron mass in eV
+extern "C" const double Units2Electronmass; //!< atomic mass unit in eV/ electron mass in eV = 1 822.88863
+extern "C" const double Atomictime2Femtoseconds;     //!< Atomictime in fs
 
-#define LocalPath "./"
+extern "C" const char* VERSIONSTRING;
+
+extern "C" const char* LocalPath;
 
 //enum BondOrderScheme { NoScheme, BottomUp, TopDown, ANOVA, Combined }; //!< Fragmentation scheme used in BOSS
@@ -48,39 +49,39 @@
 
 // maximum length of any char array
-#define MAXSTRINGSIZE 255
+enum { MAXSTRINGSIZE = 255 };
 
 // various standard filenames
-#define DEFAULTCONFIG "main_pcp_linux"    //!< default filename of config file
-#define CONVEXENVELOPE "ConvexEnvelope.dat"    //!< default filename of convex envelope tecplot data file
-#define KEYSETFILE "KeySets.dat"    //!< default filename of BOSSANOVA key sets file
-#define ADJACENCYFILE "Adjacency.dat"    //!< default filename of BOSSANOVA adjacancy file
-#define TEFACTORSFILE "TE-Factors.dat"    //!< default filename of BOSSANOVA total energy factors file
-#define FORCESFILE "Forces-Factors.dat"    //!< default filename of BOSSANOVA force factors file
-#define HCORRECTIONSUFFIX "Hcorrection.dat"    //!< default filename of BOSSANOVA H correction file (unwanted saturation interaction)
-#define FITCONSTANTSUFFIX "FitConstant.dat"   //!< suffix of default filename of BOSSANOVA fit constants file (unwanted saturation interaction)
-#define SHIELDINGSUFFIX "sigma_all.csv"                //!< default filename of BOSSANOVA shieldings file
-#define SHIELDINGPASSUFFIX "sigma_all_PAS.csv"                 //!< default filename of BOSSANOVA shieldings PAS file
-#define ORDERATSITEFILE "OrderAtSite.dat"    //!< default filename of BOSSANOVA Bond Order at each atom file
-#define ENERGYPERFRAGMENT "EnergyPerFragment"    //!< default filename of BOSSANOVA Energy contribution Per Fragment file
-#define FRAGMENTPREFIX "BondFragment"    //!< default filename prefix of BOSSANOVA fragment config and directories 
-#define STANDARDCONFIG "unknown.conf"    //!< default filename of standard config file
-#define STANDARDELEMENTSDB "elements.db"    //!< default filename of elements data base with masses, Z, VanDerWaals radii, ...
-#define STANDARDVALENCEDB "valence.db"    //!< default filename of valence number per element database
-#define STANDARDORBITALDB "orbitals.db"    //!< default filename of orbitals per element database
-#define STANDARDHBONDDISTANCEDB "Hbonddistance.db"    //!< default filename of typial bond distance to hydrogen database
-#define STANDARDHBONDANGLEDB "Hbondangle.db"    //!< default filename of typial bond angle to hydrogen database
+extern "C" const char *DEFAULTCONFIG;    //!< default filename of config file
+extern "C" const char *CONVEXENVELOPE;    //!< default filename of convex envelope tecplot data file
+extern "C" const char *KEYSETFILE;    //!< default filename of BOSSANOVA key sets file
+extern "C" const char *ADJACENCYFILE;    //!< default filename of BOSSANOVA adjacancy file
+extern "C" const char *TEFACTORSFILE;    //!< default filename of BOSSANOVA total energy factors file
+extern "C" const char *FORCESFILE;    //!< default filename of BOSSANOVA force factors file
+extern "C" const char *HCORRECTIONSUFFIX;    //!< default filename of BOSSANOVA H correction file (unwanted saturation interaction)
+extern "C" const char *FITCONSTANTSUFFIX;   //!< suffix of default filename of BOSSANOVA fit constants file (unwanted saturation interaction)
+extern "C" const char *SHIELDINGSUFFIX;                //!< default filename of BOSSANOVA shieldings file
+extern "C" const char *SHIELDINGPASSUFFIX;                 //!< default filename of BOSSANOVA shieldings PAS file
+extern "C" const char *ORDERATSITEFILE;    //!< default filename of BOSSANOVA Bond Order at each atom file
+extern "C" const char *ENERGYPERFRAGMENT;    //!< default filename of BOSSANOVA Energy contribution Per Fragment file
+extern "C" const char *FRAGMENTPREFIX;    //!< default filename prefix of BOSSANOVA fragment config and directories
+extern "C" const char *STANDARDCONFIG;    //!< default filename of standard config file
+extern "C" const char *STANDARDELEMENTSDB;    //!< default filename of elements data base with masses, Z, VanDerWaals radii, ...
+extern "C" const char *STANDARDVALENCEDB;    //!< default filename of valence number per element database
+extern "C" const char *STANDARDORBITALDB;    //!< default filename of orbitals per element database
+extern "C" const char *STANDARDHBONDDISTANCEDB;    //!< default filename of typial bond distance to hydrogen database
+extern "C" const char *STANDARDHBONDANGLEDB;    //!< default filename of typial bond angle to hydrogen database
 
 // some values
-#define SOLVENTDENSITY_A 0.6022142
-#define SOLVENTDENSITY_a0 0.089238936
+extern "C" const double SOLVENTDENSITY_A;
+extern "C" const double SOLVENTDENSITY_a0;
 
 
-#define UPDATECOUNT 10  //!< update ten sites per BOSSANOVA interval
+extern "C" const int UPDATECOUNT;  //!< update ten sites per BOSSANOVA interval
 
-#define STD_MENU_LENGTH 60
-#define STD_MENU_TITLE_SPACER '='
-#define STD_SEPERATOR_SPACER '-'
+extern "C" const int STD_MENU_LENGTH;
+extern "C" const char STD_MENU_TITLE_SPACER;
+extern "C" const char STD_SEPERATOR_SPACER;
 
-#define MOLECUILDER_NAME "Molecuilder"
+extern "C" const char *MOLECUILDER_NAME;
 
 const extern unsigned int MAX_POOL_FRAGMENTATION;
Index: src/joiner.cpp
===================================================================
--- src/joiner.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/joiner.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -209,5 +209,9 @@
   prefix << dir << ForceFragmentSuffix;
   if (!ForceFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1;
-  if (!CreateDataFragment(EnergyFragments, KeySet, argv[1], FRAGMENTPREFIX ENERGYPERFRAGMENT, "fragment energy versus the Fragment No", "today", CreateEnergy)) return 1;
+  {
+    std::string fileprefix(FRAGMENTPREFIX);
+    fileprefix += ENERGYPERFRAGMENT;
+    if (!CreateDataFragment(EnergyFragments, KeySet, argv[1], fileprefix.c_str(), "fragment energy versus the Fragment No", "today", CreateEnergy)) return 1;
+  }
   if (!NoHessian) {
     prefix.str(" ");
Index: src/molecule.hpp
===================================================================
--- src/molecule.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/molecule.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -24,5 +24,5 @@
 #include "types.hpp"
 #include "graph.hpp"
-#include "tesselation.hpp"
+#include "PointCloud.hpp"
 #include "Patterns/Observer.hpp"
 #include "Patterns/ObservedIterator.hpp"
Index: src/moleculelist.cpp
===================================================================
--- src/moleculelist.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/moleculelist.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -30,4 +30,5 @@
 #include "molecule.hpp"
 #include "periodentafel.hpp"
+#include "tesselation.hpp"
 #include "Helpers/Assert.hpp"
 #include "LinearAlgebra/Matrix.hpp"
Index: src/tesselation.cpp
===================================================================
--- src/tesselation.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/tesselation.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -34,4 +34,11 @@
 
 class molecule;
+
+const char *TecplotSuffix=".dat";
+const char *Raster3DSuffix=".r3d";
+const char *VRMLSUffix=".wrl";
+
+const double ParallelEpsilon=1e-3;
+const double Tesselation::HULLEPSILON = 1e-9;
 
 /** Constructor of class Tesselation.
@@ -2125,6 +2132,6 @@
                         OtherNewSphereCenter += helper;
                         DoLog(2) && (Log() << Verbose(2) << "INFO: OtherNewSphereCenter is at " << OtherNewSphereCenter << "." << endl);
-                        alpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, NewSphereCenter, OldSphereCenter, NormalVector, SearchDirection);
-                        Otheralpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, OtherNewSphereCenter, OldSphereCenter, NormalVector, SearchDirection);
+                        alpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, NewSphereCenter, OldSphereCenter, NormalVector, SearchDirection, HULLEPSILON);
+                        Otheralpha = GetPathLengthonCircumCircle(CircleCenter, CirclePlaneNormal, CircleRadius, OtherNewSphereCenter, OldSphereCenter, NormalVector, SearchDirection, HULLEPSILON);
                         if ((ThirdPoint != NULL) && (Candidate == ThirdPoint->node)) { // in that case only the other circlecenter is valid
                           if (OldSphereCenter.DistanceSquared(NewSphereCenter) < OldSphereCenter.DistanceSquared(OtherNewSphereCenter))
Index: src/tesselation.hpp
===================================================================
--- src/tesselation.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/tesselation.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -46,12 +46,13 @@
 /********************************************** definitions *********************************/
 
-#define DoTecplotOutput 1
-#define DoRaster3DOutput 1
-#define DoVRMLOutput 0
-#define TecplotSuffix ".dat"
-#define Raster3DSuffix ".r3d"
-#define VRMLSUffix ".wrl"
+enum { DoTecplotOutput=1 };
+enum { DoRaster3DOutput=1 };
+enum { DoVRMLOutput=0 };
 
-#define ParallelEpsilon 1e-3
+extern "C" const char *TecplotSuffix;
+extern "C" const char *Raster3DSuffix;
+extern "C" const char *VRMLSUffix;
+
+extern "C" const double ParallelEpsilon;
 
 // ======================================================= some template functions =========================================
@@ -157,4 +158,6 @@
 
   private:
+    static const double HULLEPSILON; //!< TODO: Get rid of HULLEPSILON, points to numerical instabilities
+
     mutable class BoundaryPointSet *TPS[3]; //this is a Storage for pointers to triangle points, this and BPS[2] needed due to AddLine restrictions
 
Index: src/tesselationhelpers.cpp
===================================================================
--- src/tesselationhelpers.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/tesselationhelpers.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -180,7 +180,8 @@
  * \param NormalVector normal vector
  * \param SearchDirection search direction to make angle unique on return.
+ * \param HULLEPSILON machine precision for tesselation points
  * \return Angle between \a NewSphereCenter and \a OldSphereCenter relative to \a CircleCenter, 2.*M_PI if one test fails
  */
-double GetPathLengthonCircumCircle(const Vector &CircleCenter, const Vector &CirclePlaneNormal, const double CircleRadius, const Vector &NewSphereCenter, const Vector &OldSphereCenter, const Vector &NormalVector, const Vector &SearchDirection)
+double GetPathLengthonCircumCircle(const Vector &CircleCenter, const Vector &CirclePlaneNormal, const double CircleRadius, const Vector &NewSphereCenter, const Vector &OldSphereCenter, const Vector &NormalVector, const Vector &SearchDirection, const double HULLEPSILON)
 {
 	Info FunctionInfo(__func__);
Index: src/tesselationhelpers.hpp
===================================================================
--- src/tesselationhelpers.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/tesselationhelpers.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -22,4 +22,5 @@
 #include <iosfwd>
 
+#include "BoundaryMaps.hpp"
 #include "defs.hpp"
 
@@ -44,5 +45,5 @@
 void GetCenterOfSphere(Vector& Center, const Vector &a, const Vector &b, const Vector &c, Vector &NewUmkreismittelpunkt, const Vector &Direction, const Vector* const AlternativeDirection, const double HalfplaneIndicator, const double AlternativeIndicator, const double alpha, const double beta, const double gamma, const double RADIUS, const double Umkreisradius);
 void GetCenterofCircumcircle(Vector & Center, const Vector &a, const Vector &b, const Vector &c);
-double GetPathLengthonCircumCircle(const Vector &CircleCenter, const Vector &CirclePlaneNormal, const double CircleRadius, const Vector &NewSphereCenter, const Vector &OldSphereCenter, const Vector &NormalVector, const Vector &SearchDirection);
+double GetPathLengthonCircumCircle(const Vector &CircleCenter, const Vector &CirclePlaneNormal, const double CircleRadius, const Vector &NewSphereCenter, const Vector &OldSphereCenter, const Vector &NormalVector, const Vector &SearchDirection, const double HULLEPSILON);
 double CalculateVolumeofGeneralTetraeder(const Vector &a, const Vector &b, const Vector &c, const Vector &d);
 double CalculateAreaofGeneralTriangle(const Vector &A, const Vector &B, const Vector &C);
Index: src/unittests/AtomDescriptorTest.hpp
===================================================================
--- src/unittests/AtomDescriptorTest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/AtomDescriptorTest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -13,5 +13,6 @@
 #include "types.hpp"
 
-#define ATOM_COUNT (10)
+// we prefer enum over define
+enum { ATOM_COUNT = 10 };
 
 class atom;
Index: src/unittests/MoleculeDescriptorTest.hpp
===================================================================
--- src/unittests/MoleculeDescriptorTest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/MoleculeDescriptorTest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -13,5 +13,6 @@
 #include "types.hpp"
 
-#define MOLECULE_COUNT (10)
+// we prefer enum over define
+enum { MOLECULE_COUNT = 10 };
 
 class molecule;
Index: src/unittests/atomsCalculationTest.hpp
===================================================================
--- src/unittests/atomsCalculationTest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/atomsCalculationTest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -11,5 +11,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
-#define ATOM_COUNT (10)
+// we prefer enum over define
+enum { ATOM_COUNT = 10 };
 
 #include "types.hpp"
Index: src/unittests/manipulateAtomsTest.hpp
===================================================================
--- src/unittests/manipulateAtomsTest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/manipulateAtomsTest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -11,5 +11,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
-#define ATOM_COUNT (10)
+// we prefer enum over define
+enum { ATOM_COUNT = 10 };
 
 class atom;
Index: src/unittests/tesselation_boundarytriangleunittest.cpp
===================================================================
--- src/unittests/tesselation_boundarytriangleunittest.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/tesselation_boundarytriangleunittest.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -27,5 +27,5 @@
 #endif /*HAVE_TESTRUNNER*/
 
-#define SPHERERADIUS 2.
+const double TesselationBoundaryTriangleTest::SPHERERADIUS=2.;
 
 /********************************************** Test classes **************************************/
Index: src/unittests/tesselation_boundarytriangleunittest.hpp
===================================================================
--- src/unittests/tesselation_boundarytriangleunittest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/tesselation_boundarytriangleunittest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -34,4 +34,6 @@
 
 private:
+      static const double SPHERERADIUS;
+
       class BoundaryTriangleSet *triangle;
       class BoundaryLineSet *lines[3];
Index: src/unittests/tesselation_insideoutsideunittest.cpp
===================================================================
--- src/unittests/tesselation_insideoutsideunittest.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/tesselation_insideoutsideunittest.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -27,5 +27,5 @@
 #endif /*HAVE_TESTRUNNER*/
 
-#define SPHERERADIUS 2.
+const double TesselationInOutsideTest::SPHERERADIUS=2.;
 
 /********************************************** Test classes **************************************/
Index: src/unittests/tesselation_insideoutsideunittest.hpp
===================================================================
--- src/unittests/tesselation_insideoutsideunittest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/tesselation_insideoutsideunittest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -30,4 +30,6 @@
 
 private:
+      static const double SPHERERADIUS;
+
       class Tesselation *TesselStruct;
       LinkedCell::LinkedNodes Corners;
Index: src/unittests/tesselationunittest.cpp
===================================================================
--- src/unittests/tesselationunittest.cpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/tesselationunittest.cpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -26,5 +26,5 @@
 #endif /*HAVE_TESTRUNNER*/
 
-#define SPHERERADIUS 2.
+const double TesselationTest::SPHERERADIUS=2.;
 
 /********************************************** Test classes **************************************/
Index: src/unittests/tesselationunittest.hpp
===================================================================
--- src/unittests/tesselationunittest.hpp	(revision 25b9d246a82b6caaece7f1c6156c22c010172cb4)
+++ src/unittests/tesselationunittest.hpp	(revision 88b400a534a193491b7a14d803ade4432b9130f5)
@@ -33,4 +33,6 @@
 
 private:
+      static const double SPHERERADIUS;
+
       class Tesselation *TesselStruct;
       LinkedCell::LinkedNodes Corners;
