Index: Makefile.am
===================================================================
--- Makefile.am	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -1,4 +1,4 @@
 ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src src/Actions src/unittests doc tests 
+SUBDIRS = src src/unittests doc tests 
 
 EXTRA_DIST = autogen.sh
Index: configure.ac
===================================================================
--- configure.ac	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ configure.ac	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -27,10 +27,9 @@
 
 # Boost libraries
-AX_BOOST_BASE([1.33.1])
+AX_BOOST_BASE([1.40])
 AX_BOOST_PROGRAM_OPTIONS
 #AX_BOOST_FOREACH
 #AX_BOOST_FILESYSTEM
 AX_BOOST_THREAD
-#AX_BOOST_PROGRAM_OPTIONS
 #AX_BOOST_SERIALIZATION
 
@@ -93,12 +92,13 @@
 
 # test suite
-AC_CONFIG_TESTDIR(tests)
+AC_CONFIG_TESTDIR(tests/regression)
 AC_CONFIG_FILES([
-	tests/atlocal 
-	tests/Makefile])
+	tests/Makefile
+	tests/regression/atlocal 
+	tests/regression/Makefile])
+AC_CONFIG_FILES([tests/regression/molecuilder], [chmod +x tests/regression/molecuilder])
 AC_CONFIG_FILES([
 	tests/Tesselations/Makefile 
 	tests/Tesselations/defs])
-AC_CONFIG_FILES([tests/molecuilder], [chmod +x tests/molecuilder])
 AC_CONFIG_FILES([
 	doc/molecuilder.xml])
Index: src/Actions/FragmentationAction/DepthFirstSearchAction.cpp
===================================================================
--- src/Actions/FragmentationAction/DepthFirstSearchAction.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/FragmentationAction/DepthFirstSearchAction.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -46,5 +46,5 @@
     molecule * const mol = World::getInstance().getMolecule(MoleculeById(0));
     MoleculeLeafClass *Subgraphs = NULL;      // list of subgraphs from DFS analysis
-    int *MinimumRingSize = new int[mol->AtomCount];
+    int *MinimumRingSize = new int[mol->getAtomCount()];
     atom ***ListOfLocalAtoms = NULL;
     class StackClass<bond *> *BackEdgeStack = NULL;
@@ -66,6 +66,6 @@
       delete(Subgraphs);
       for (int i=0;i<FragmentCounter;i++)
-        Free(&ListOfLocalAtoms[i]);
-      Free(&ListOfLocalAtoms);
+        delete[](ListOfLocalAtoms[i]);
+      delete[](ListOfLocalAtoms);
     }
     delete(BackEdgeStack);
Index: src/Actions/Makefile.am
===================================================================
--- src/Actions/Makefile.am	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -30,5 +30,6 @@
   ${TESSELATIONACTIONHEADER} \
   ${WORLDACTIONHEADER} \
-  MapOfActions.hpp
+  MapOfActions.hpp \
+  Values.hpp
   
 ANALYSISACTIONSOURCE = \
Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/MapOfActions.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -12,7 +12,43 @@
 #include "Helpers/Assert.hpp"
 
+#include <boost/lexical_cast.hpp>
+#include <boost/optional.hpp>
+#include <boost/program_options.hpp>
+
 #include "CommandLineParser.hpp"
 #include "log.hpp"
 #include "verbose.hpp"
+
+#include "Actions/Values.hpp"
+
+void validate(boost::any& v, const std::vector<std::string>& values, VectorValue *, int)
+{
+  VectorValue VV;
+  if (values.size() != 3) {
+    cerr <<  "Specified vector does not have three components but " << values.size() << endl;
+    throw boost::program_options::validation_error("Specified vector does not have three components");
+  }
+  VV.x = boost::lexical_cast<double>(values.at(0));
+  VV.y = boost::lexical_cast<double>(values.at(1));
+  VV.z = boost::lexical_cast<double>(values.at(2));
+  v = boost::any(VectorValue(VV));
+}
+
+void validate(boost::any& v, const std::vector<std::string>& values, BoxValue *, int)
+{
+  BoxValue BV;
+  if (values.size() != 6) {
+    cerr <<  "Specified vector does not have three components but " << values.size() << endl;
+    throw boost::program_options::validation_error("Specified symmetric box matrix does not have six components");
+  }
+  BV.xx = boost::lexical_cast<double>(values.at(0));
+  BV.xy = boost::lexical_cast<double>(values.at(1));
+  BV.xz = boost::lexical_cast<double>(values.at(2));
+  BV.yy = boost::lexical_cast<double>(values.at(3));
+  BV.yz = boost::lexical_cast<double>(values.at(4));
+  BV.zz = boost::lexical_cast<double>(values.at(5));
+  v = boost::any(BoxValue(BV));
+}
+
 
 /** Constructor of class MapOfActions.
@@ -62,4 +98,5 @@
   DescriptionMap["save-bonds"] = "name of the bonds file to write to";
   DescriptionMap["save-temperature"] = "name of the temperature file to write to";
+  DescriptionMap["scale-box"] = "scale box and atomic positions inside";
   DescriptionMap["subspace-dissect"] = "dissect the molecular system into molecules representing disconnected subgraphs";
   DescriptionMap["suspend-in-water"] = "suspend the given molecule in water such that in the domain the mean density is as specified";
@@ -75,4 +112,5 @@
   DescriptionMap["distance"] = "distance in space";
   DescriptionMap["distances"] = "list of three of distances in space, one for each axis direction";
+  DescriptionMap["DoRotate"] = "whether to rotate or just report angles";
   DescriptionMap["element"] = "set of elements";
   DescriptionMap["end-mol"] = "last or end step";
@@ -92,5 +130,5 @@
   ShortFormMap["bond-file"] = "A";
   ShortFormMap["boundary"] = "c";
-  ShortFormMap["bound-in-box"] = "B";
+  ShortFormMap["change-box"] = "B";
   ShortFormMap["center-edge"] = "O";
   ShortFormMap["center-in-box"] = "b";
@@ -123,7 +161,7 @@
   ShortFormMap["suspend-in-water"] = "U";
   ShortFormMap["translate-mol"] = "t";
-  ShortFormMap["verbose"] = "V";
+  ShortFormMap["verbose"] = "v";
   ShortFormMap["verlet-integrate"] = "P";
-  ShortFormMap["version"] = "v";
+  ShortFormMap["version"] = "V";
 
   // value types for the actions
@@ -132,5 +170,6 @@
   TypeMap["bond-table"] = String;
   TypeMap["boundary"] = Vector;
-  TypeMap["change-box"] = Vector;
+  TypeMap["center-in-box"] = Box;
+  TypeMap["change-box"] = Box;
   TypeMap["change-element"] = Element;
   TypeMap["change-molname"] = String;
@@ -151,5 +190,5 @@
   TypeMap["remove-atom"] = Atom;
   TypeMap["remove-sphere"] = Atom;
-  TypeMap["repeat-box"] = ListOfInts;
+  TypeMap["repeat-box"] = Vector;
   TypeMap["rotate-to-pas"] = Molecule;
   TypeMap["save-adjacency"] = String;
@@ -163,4 +202,5 @@
   TypeMap["verlet-integrate"] = String;
   TypeMap["verbose"] = Integer;
+
   // value types for the values
   TypeMap["bin-output-file"] = String;
@@ -168,9 +208,10 @@
   TypeMap["bin-start"] = Double;
   TypeMap["distance"] = Double;
-  TypeMap["distances"] = ListOfDoubles;
+  TypeMap["distances"] = Vector;
+  TypeMap["DoRotate"] = Boolean;
   TypeMap["elements"] = Element;
   TypeMap["elements"] = ListOfElements;
   TypeMap["length"] = Double;
-  TypeMap["lengths"] = ListOfDoubles;
+  TypeMap["lengths"] = Vector;
   TypeMap["MaxDistance"] = Double;
   TypeMap["molecule-by-id"] = Molecule;
@@ -179,13 +220,17 @@
   TypeMap["position"] = Vector;
 
+  // default values for any action that needs one (always string!)
+  DefaultValue["molecule-by-id"] = "-1";
+
+
   // list of generic actions
 //	generic.insert("add-atom");
 //  generic.insert("bond-file");
 //	generic.insert("bond-table");
-//  generic.insert("boundary");
+  generic.insert("boundary");
 //  generic.insert("bound-in-box");
-//  generic.insert("center-edge");
-//  generic.insert("center-in-box");
-//	generic.insert("change-box");
+  generic.insert("center-edge");
+  generic.insert("center-in-box");
+	generic.insert("change-box");
 //  generic.insert("change-molname");
 //	generic.insert("change-element");
@@ -195,5 +240,5 @@
 //	generic.insert("element-db");
 //	generic.insert("fastparsing");
-//  generic.insert("fill-molecule");
+  generic.insert("fill-molecule");
 //  generic.insert("fragment-mol");
   generic.insert("help");
@@ -208,9 +253,10 @@
 //  generic.insert("remove-atom");
 //  generic.insert("remove-sphere");
+  generic.insert("repeat-box");
 //  generic.insert("rotate-to-pas");
 //	generic.insert("save-adjacency");
 //  generic.insert("save-bonds");
 //  generic.insert("save-temperature");
-//  generic.insert("scale-box");
+  generic.insert("scale-box");
 //  generic.insert("set-basis");
 //	generic.insert("subspace-dissect");
@@ -230,7 +276,4 @@
     generic.insert("input");
 //  generic.insert("length");
-//  generic.insert("lengths");
-//  generic.insert("MaxDistance");
-//  generic.insert("molecule-by-id");
 //  generic.insert("output-file");
 //  generic.insert("periodic");
@@ -240,4 +283,12 @@
     // positional arguments
     inputfile.insert("input");
+
+    // hidden arguments
+//  generic.insert("distance");
+    generic.insert("DoRotate");
+    generic.insert("distances");
+    generic.insert("lengths");
+    generic.insert("MaxDistance");
+    generic.insert("molecule-by-id");
 }
 
@@ -269,75 +320,121 @@
           case Boolean:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< bool >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< bool >()->default_value(atoi(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< bool >(),
+                  getDescription(*OptionRunner).c_str())
+              ;
+            break;
+          case Box:
+            ListRunner->second->add_options()
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value<BoxValue>()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Integer:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< int >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< int >()->default_value(atoi(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< int >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case ListOfInts:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<int> >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value< vector<int> >()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Double:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< double >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< double >()->default_value(atof(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< double >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case ListOfDoubles:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<double> >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value< vector<double> >()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case String:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< std::string >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< std::string >()->default_value(DefaultValue[*OptionRunner]) :
+                        po::value< std::string >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Axis:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< int >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< int >()->default_value(atoi(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< int >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Vector:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<double> >(), getDescription(*OptionRunner).c_str())
-              ;
-            break;
-          case Box:
-            ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<double> >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value<VectorValue>()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Molecule:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< int >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< int >()->default_value(atoi(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< int >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case ListOfMolecules:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<int> >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value< vector<int> >()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Atom:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< int >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< int >()->default_value(atoi(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< int >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case ListOfAtoms:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<int> >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value< vector<int> >()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case Element:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< int >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  DefaultValue.find(*OptionRunner) != DefaultValue.end() ?
+                        po::value< int >()->default_value(atoi(DefaultValue[*OptionRunner].c_str())) :
+                        po::value< int >(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
           case ListOfElements:
             ListRunner->second->add_options()
-              (getKeyAndShortForm(*OptionRunner).c_str(), po::value< vector<int> >(), getDescription(*OptionRunner).c_str())
+              (getKeyAndShortForm(*OptionRunner).c_str(),
+                  po::value< vector<int> >()->multitoken(),
+                  getDescription(*OptionRunner).c_str())
               ;
             break;
Index: src/Actions/MapOfActions.hpp
===================================================================
--- src/Actions/MapOfActions.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/MapOfActions.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -53,4 +53,5 @@
 
   // map of the action names and their description
+  map<std::string, std::string> DefaultValue;
   map<std::string, std::string> DescriptionMap;
   map<std::string, std::string> ShortFormMap;
Index: src/Actions/MoleculeAction/FillWithMoleculeAction.cpp
===================================================================
--- src/Actions/MoleculeAction/FillWithMoleculeAction.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/MoleculeAction/FillWithMoleculeAction.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -66,28 +66,29 @@
 
   if(dialog->display()) {
+    DoLog(1) && (Log() << Verbose(1) << "Filling Box with water molecules, lengths(" << lengths[0] << "," << lengths[1] << "," << lengths[2] << "), distances (" << distances[0] << "," << distances[1] << "," << distances[2] << "), MaxDistance " << MaxDistance << ", DoRotate " << DoRotate << "." << endl);
     // construct water molecule
     molecule *filler = World::getInstance().createMolecule();
-//    if (!filler->AddXYZFile(filename)) {
-//      DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse filler molecule from " << filename << "." << endl);
-//    }
-//    filler->SetNameFromFilename(filename);
+    if (!filler->AddXYZFile(filename)) {
+      DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse filler molecule from " << filename << "." << endl);
+    }
+    filler->SetNameFromFilename(filename.c_str());
     molecule *Filling = NULL;
-    atom *first = NULL, *second = NULL, *third = NULL;
-    first = World::getInstance().createAtom();
-    first->type = World::getInstance().getPeriode()->FindElement(1);
-    first->x = Vector(0.441, -0.143, 0.);
-    filler->AddAtom(first);
-    second = World::getInstance().createAtom();
-    second->type = World::getInstance().getPeriode()->FindElement(1);
-    second->x = Vector(-0.464, 1.137, 0.0);
-    filler->AddAtom(second);
-    third = World::getInstance().createAtom();
-    third->type = World::getInstance().getPeriode()->FindElement(8);
-    third->x = Vector(-0.464, 0.177, 0.);
-    filler->AddAtom(third);
-    filler->AddBond(first, third, 1);
-    filler->AddBond(second, third, 1);
+//    atom *first = NULL, *second = NULL, *third = NULL;
+//    first = World::getInstance().createAtom();
+//    first->type = World::getInstance().getPeriode()->FindElement(1);
+//    first->x = Vector(0.441, -0.143, 0.);
+//    filler->AddAtom(first);
+//    second = World::getInstance().createAtom();
+//    second->type = World::getInstance().getPeriode()->FindElement(1);
+//    second->x = Vector(-0.464, 1.137, 0.0);
+//    filler->AddAtom(second);
+//    third = World::getInstance().createAtom();
+//    third->type = World::getInstance().getPeriode()->FindElement(8);
+//    third->x = Vector(-0.464, 0.177, 0.);
+//    filler->AddAtom(third);
+//    filler->AddBond(first, third, 1);
+//    filler->AddBond(second, third, 1);
     World::getInstance().getConfig()->BG->ConstructBondGraph(filler);
-    filler->SetNameFromFilename("water");
+//    filler->SetNameFromFilename("water");
     // call routine
     double distance[NDIM];
Index: src/Actions/TesselationAction/NonConvexEnvelopeAction.cpp
===================================================================
--- src/Actions/TesselationAction/NonConvexEnvelopeAction.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/TesselationAction/NonConvexEnvelopeAction.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -65,5 +65,5 @@
     DoLog(0) && (Log() << Verbose(0) << "Evaluating non-convex envelope of molecule." << Boundary->getId() << endl);
     DoLog(1) && (Log() << Verbose(1) << "Using rolling ball of radius " << SphereRadius << " and storing tecplot data in " << filename << "." << endl);
-    DoLog(1) && (Log() << Verbose(1) << "Specified molecule has " << Boundary->AtomCount << " atoms." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "Specified molecule has " << Boundary->getAtomCount() << " atoms." << endl);
     start = clock();
     LCList = new LinkedCell(Boundary, SphereRadius*2.);
Index: src/Actions/Values.hpp
===================================================================
--- src/Actions/Values.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ src/Actions/Values.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,29 @@
+/*
+ * Values.hpp
+ *
+ *  Created on: Jun 7, 2010
+ *      Author: heber
+ */
+
+#ifndef VALUES_HPP_
+#define VALUES_HPP_
+
+struct VectorValue
+{
+  double x;
+  double y;
+  double z;
+};
+
+struct BoxValue
+{
+  double xx;
+  double xy;
+  double xz;
+  double yy;
+  double yz;
+  double zz;
+};
+
+
+#endif /* VALUES_HPP_ */
Index: src/Actions/WorldAction/AddEmptyBoundaryAction.cpp
===================================================================
--- src/Actions/WorldAction/AddEmptyBoundaryAction.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/WorldAction/AddEmptyBoundaryAction.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -69,5 +69,5 @@
     AtomRunner = AllAtoms.begin();
     for (; AtomRunner != AllAtoms.end(); ++AtomRunner)
-      (*AtomRunner)->x -= Min;
+      (*AtomRunner)->x -= Min - boundary;
     delete dialog;
     return Action::success;
Index: src/Actions/WorldAction/CenterInBoxAction.cpp
===================================================================
--- src/Actions/WorldAction/CenterInBoxAction.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/WorldAction/CenterInBoxAction.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -33,5 +33,6 @@
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
-  dialog->queryEmpty(NAME, MapOfActions::getInstance().getDescription(NAME));
+  double * cell_size = World::getInstance().getDomain();
+  dialog->queryBox(NAME, &cell_size, MapOfActions::getInstance().getDescription(NAME));
 
   if(dialog->display()) {
Index: src/Actions/WorldAction/RepeatBoxAction.cpp
===================================================================
--- src/Actions/WorldAction/RepeatBoxAction.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Actions/WorldAction/RepeatBoxAction.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -23,4 +23,6 @@
 #include "UIElements/Dialog.hpp"
 #include "Actions/MapOfActions.hpp"
+#include "Descriptors/MoleculeDescriptor.hpp"
+#include "Descriptors/MoleculePtrDescriptor.hpp"
 
 const char WorldRepeatBoxAction::NAME[] = "repeat-box";
@@ -40,13 +42,25 @@
   molecule *mol = NULL;
   int j = 0;
+  atom *Walker = NULL;
+  MoleculeListClass *molecules = World::getInstance().getMolecules();
 
   dialog->queryVector(NAME, &Repeater, World::getInstance().getDomain(), false, MapOfActions::getInstance().getDescription(NAME));
-  dialog->queryMolecule("molecule-by-id", &mol,MapOfActions::getInstance().getDescription("molecule-by-id"));
+  //dialog->queryMolecule("molecule-by-id", &mol,MapOfActions::getInstance().getDescription("molecule-by-id"));
+  vector<molecule *> AllMolecules;
+  if (mol != NULL) {
+    DoLog(0) && (Log() << Verbose(0) << "Using molecule " << mol->name << "." << endl);
+    AllMolecules = World::getInstance().getAllMolecules(MoleculeByPtr(mol));
+  } else {
+    DoLog(0) && (Log() << Verbose(0) << "Using all molecules." << endl);
+    AllMolecules = World::getInstance().getAllMolecules();
+  }
 
   if(dialog->display()) {
+    (cout << "Repeating box " << Repeater << " times for (x,y,z) axis." << endl);
     double * const cell_size = World::getInstance().getDomain();
+    double *M = ReturnFullMatrixforSymmetric(cell_size);
     Vector x,y;
-    for (int axis = 1; axis <= NDIM; axis++) {
-      Vector ** vectors;
+    int n[NDIM];
+    for (int axis = 0; axis < NDIM; axis++) {
       Repeater[axis] = floor(Repeater[axis]);
       if (Repeater[axis] < 1) {
@@ -54,42 +68,54 @@
         Repeater[axis] = 1;
       }
-      mol->CountAtoms();  // recount atoms
-      if (mol->AtomCount != 0) {  // if there is more than none
-        count = mol->AtomCount;   // is changed becausing of adding, thus has to be stored away beforehand
-        Elements = new const element *[count];
-        vectors = new Vector *[count];
-        j = 0;
-        atom *first = mol->start;
-        while (first->next != mol->end) {  // make a list of all atoms with coordinates and element
-          first = first->next;
-          Elements[j] = first->type;
-          vectors[j] = &first->x;
-          j++;
-        }
-        if (count != j)
-          DoeLog(1) && (eLog()<< Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl);
-        x.Zero();
-        y.Zero();
-        y[abs(axis)-1] = cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] * abs(axis)/axis; // last term is for sign, first is for magnitude
-        for (int i=1;i<Repeater[axis];i++) {  // then add this list with respective translation factor times
-          x += y; // per factor one cell width further
-          for (int k=count;k--;) { // go through every atom of the original cell
-            first = World::getInstance().createAtom(); // create a new body
-            first->x = (*vectors[k]) + x;
-            first->type = Elements[k];  // insert original element
-            mol->AddAtom(first);        // and add to the molecule (which increments ElementsInMolecule, AtomCount, ...)
+      cell_size[(abs(axis+1) == 2) ? 2 : ((abs(axis+2) == 3) ? 5 : 0)] *= Repeater[axis];
+    }
+
+    molecule *newmol = NULL;
+    Vector ** vectors = NULL;
+    for (n[0] = 0; n[0] < Repeater[0]; n[0]++) {
+      y[0] = n[0];
+      for (n[1] = 0; n[1] < Repeater[1]; n[1]++) {
+        y[1] = n[1];
+        for (n[2] = 0; n[2] < Repeater[2]; n[2]++) {
+          y[2] = n[2];
+          if (n[0] == n[1] == n[2] == 0)
+            continue;
+          for (vector<molecule *>::iterator MolRunner = AllMolecules.begin(); MolRunner != AllMolecules.end(); ++MolRunner) {
+            mol = *MolRunner;
+            DoLog(1) && (Log() << Verbose(1) << "Current mol is " << mol->name << "." << endl);
+            count = mol->getAtomCount();   // is changed becausing of adding, thus has to be stored away beforehand
+            if (count != 0) {  // if there is more than none
+              Elements = new const element *[count];
+              vectors = new Vector *[count];
+              j = 0;
+              for(molecule::iterator AtomRunner = mol->begin(); AtomRunner != mol->end(); ++AtomRunner) {
+                Elements[j] = (*AtomRunner)->type;
+                vectors[j] = &(*AtomRunner)->x;
+                j++;
+              }
+              if (count != j)
+                DoeLog(1) && (eLog()<< Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl);
+              x = y;
+              x.MatrixMultiplication(M);
+              newmol = World::getInstance().createMolecule();
+              molecules->insert(newmol);
+              for (int k=count;k--;) { // go through every atom of the original cell
+                Walker = World::getInstance().createAtom(); // create a new body
+                Walker->x = (*vectors[k]) + x;
+                Walker->type = Elements[k];  // insert original element
+                cout << "new atom is " << *Walker << endl;
+                newmol->AddAtom(Walker);        // and add to the molecule (which increments ElementsInMolecule, AtomCount, ...)
+              }
+              // free memory
+              delete[](Elements);
+              delete[](vectors);
+            } else {
+              DoLog(1) && (Log() << Verbose(1) << "\t ... is empty." << endl);
+            }
           }
         }
-        // free memory
-        delete[](Elements);
-        delete[](vectors);
-        // correct cell size
-        if (axis < 0) { // if sign was negative, we have to translate everything
-          x =(-(Repeater[axis]-1)) * y;
-          mol->Translate(&x);
-        }
-        cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] *= Repeater[axis];
       }
     }
+    delete(M);
     delete dialog;
     return Action::success;
Index: src/Descriptors/MoleculePtrDescriptor.cpp
===================================================================
--- src/Descriptors/MoleculePtrDescriptor.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ src/Descriptors/MoleculePtrDescriptor.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,40 @@
+/*
+ * MoleculePtrDescriptor.cpp
+ *
+ *  Created on: Feb 5, 2010
+ *      Author: crueger
+ */
+
+#include "MoleculePtrDescriptor.hpp"
+#include "MoleculePtrDescriptor_impl.hpp"
+
+#include "molecule.hpp"
+
+using namespace std;
+
+
+MoleculePtrDescriptor_impl::MoleculePtrDescriptor_impl(molecule * _ptr) :
+  ptr(_ptr)
+{}
+
+MoleculePtrDescriptor_impl::~MoleculePtrDescriptor_impl()
+{}
+
+bool MoleculePtrDescriptor_impl::predicate(std::pair<moleculeId_t,molecule*> molecule) {
+  return molecule.second==ptr;
+}
+
+MoleculeDescriptor MoleculeByPtr(molecule * ptr){
+  return MoleculeDescriptor(MoleculeDescriptor::impl_ptr(new MoleculePtrDescriptor_impl(ptr)));
+}
+
+molecule *MoleculePtrDescriptor_impl::find(){
+  World::MoleculeSet molecules = getMolecules();
+  World::MoleculeSet::iterator res = molecules.find(ptr->getId());
+  return (res!=molecules.end())?((*res).second):0;
+}
+
+vector<molecule*> MoleculePtrDescriptor_impl::findAll(){
+  molecule *res = find();
+  return (res)?(vector<molecule*>(1,res)):(vector<molecule*>());
+}
Index: src/Descriptors/MoleculePtrDescriptor.hpp
===================================================================
--- src/Descriptors/MoleculePtrDescriptor.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ src/Descriptors/MoleculePtrDescriptor.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,16 @@
+/*
+ * MoleculeIdDescriptor.hpp
+ *
+ *  Created on: Feb 5, 2010
+ *      Author: crueger
+ */
+
+#ifndef MOLECULEPTRDESCRIPTOR_HPP_
+#define MOLECULEPTRDESCRIPTOR_HPP_
+
+#include "defs.hpp"
+#include "Descriptors/MoleculeDescriptor.hpp"
+
+MoleculeDescriptor MoleculeByPtr(molecule * ptr);
+
+#endif /* MOLECULEPTRDESCRIPTOR_HPP_ */
Index: src/Descriptors/MoleculePtrDescriptor_impl.hpp
===================================================================
--- src/Descriptors/MoleculePtrDescriptor_impl.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ src/Descriptors/MoleculePtrDescriptor_impl.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,23 @@
+#ifndef MOLECULEPTRDESCRIPTOR_IMPL_HPP
+#define MOLECULEPTRDESCRIPTOR_IMPL_HPP
+
+#include "Descriptors/MoleculeDescriptor_impl.hpp"
+
+class molecule;
+
+class MoleculePtrDescriptor_impl : public MoleculeDescriptor_impl
+{
+public:
+  MoleculePtrDescriptor_impl(molecule * ptr);
+  virtual ~MoleculePtrDescriptor_impl();
+
+  bool predicate(std::pair<moleculeId_t,molecule*> molecule);
+
+protected:
+  virtual molecule *find();
+  virtual std::vector<molecule*> findAll();
+private:
+  molecule * ptr;
+};
+
+#endif //MOLECULEPTRDESCRIPTOR_IMPL_HPP
Index: src/Helpers/Assert.cpp
===================================================================
--- src/Helpers/Assert.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Helpers/Assert.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -54,5 +54,4 @@
 
 
-
 bool _my_assert::check(const bool res,
                        const char* condition,
@@ -63,5 +62,5 @@
 {
   if(!res){
-    cout << "Assertion " << condition << " failed in file " << filename << " at line " << line << endl;
+    cout << "Assertion \"" << condition << "\" failed in file " << filename << " at line " << line << endl;
     cout << "Assertion Message: " << message << std::endl;
     while(true){
Index: src/Helpers/MemDebug.cpp
===================================================================
--- src/Helpers/MemDebug.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Helpers/MemDebug.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -9,6 +9,10 @@
 #include <cstdlib>
 #include <cstring>
+#include <boost/thread.hpp>
 
 using namespace std;
+
+#ifndef NDBEGUG
+#ifndef NO_MEMDEBUG
 
 namespace Memory {
@@ -40,4 +44,6 @@
   };
 
+  boost::mutex memorylock;
+
   // start and end of the doubly-linked list
   entry_t *begin=0;
@@ -128,4 +134,7 @@
 void *operator new(size_t nbytes,const char* file, int line) throw(std::bad_alloc) {
 
+  // we need to lock, so that no one changes the linked list while we are here
+  boost::mutex::scoped_lock guard(Memory::memorylock);
+
   // to avoid allocations of 0 bytes if someone screws up
   // allocation with 0 byte size are undefined behavior, so we are
@@ -153,4 +162,5 @@
   // build the entry in front of the space
   Memory::entry_t *entry = (Memory::entry_t*) res;
+  memset(res,0,entrySpace);
   entry->info.nbytes = nbytes;
   entry->info.isUsed = true;
@@ -203,4 +213,12 @@
 
 void operator delete(void *ptr) throw() {
+  if(!ptr){
+    cerr << "Warning: Deleting NULL pointer" << endl;
+    return;
+  }
+
+  // we need to lock, so the linked list does not changed while we are in here
+  boost::mutex::scoped_lock guard(Memory::memorylock);
+
   // get the size for the entry, including alignment
   static const size_t entrySpace = Memory::doAlign(sizeof(Memory::entry_t));
@@ -211,7 +229,7 @@
   // let's see if the checksum is still matching
   if(Memory::calcChecksum(&entry->info)!=entry->checksum){
-    cout << "Possible memory corruption detected!" << endl;
-    cout << "Trying to recover allocation information..." << endl;
-    cout << "Memory was allocated at " << entry->info.file << ":" << entry->info.line << endl;
+    cerr << "Possible memory corruption detected!" << endl;
+    cerr << "Trying to recover allocation information..." << endl;
+    cerr << "Memory was allocated at " << entry->info.file << ":" << entry->info.line << endl;
     terminate();
   }
@@ -240,2 +258,4 @@
   operator delete(ptr);
 }
+#endif
+#endif
Index: src/Helpers/MemDebug.hpp
===================================================================
--- src/Helpers/MemDebug.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Helpers/MemDebug.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -21,4 +21,10 @@
  * your sourcefiles.
  */
+#ifndef NDEBUG
+#ifndef NO_MEMDEBUG
+
+#ifndef MEMDEBUG
+#define MEMDEBUG
+#endif
 
 namespace Memory {
@@ -56,3 +62,20 @@
 #define new new(__FILE__,__LINE__)
 
+#endif
+#endif
+
+
+#ifndef MEMDEBUG
+// memory debugging was disabled
+
+namespace Memory {
+  inline void getState(){}
+
+  template <typename T>
+  inline T *ignore(T* ptr){
+    return ptr;
+  }
+}
+
+#endif
 #endif /* MEMDEBUG_HPP_ */
Index: src/Legacy/oldmenu.cpp
===================================================================
--- src/Legacy/oldmenu.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Legacy/oldmenu.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -424,5 +424,5 @@
 void oldmenu::RemoveAtoms(molecule *mol)
 {
-  atom *first, *second;
+  atom *second;
   int axis;
   double tmp1, tmp2;
@@ -447,14 +447,14 @@
       break;
     case 'b':
-      second = mol->AskAtom("Enter number of atom as reference point: ");
-      Log() << Verbose(0) << "Enter radius: ";
-      cin >> tmp1;
-      first = mol->start;
-      second = first->next;
-      while(second != mol->end) {
-        first = second;
-        second = first->next;
-        if (first->x.DistanceSquared(second->x) > tmp1*tmp1) // distance to first above radius ...
-          mol->RemoveAtom(first);
+      {
+        second = mol->AskAtom("Enter number of atom as reference point: ");
+        Log() << Verbose(0) << "Enter radius: ";
+        cin >> tmp1;
+        molecule::iterator runner;
+        for (molecule::iterator iter = mol->begin(); iter != mol->end(); ) {
+          runner = iter++;
+          if ((*runner)->x.DistanceSquared((*runner)->x) > tmp1*tmp1) // distance to first above radius ...
+            mol->RemoveAtom((*runner));
+        }
       }
       break;
@@ -466,12 +466,10 @@
       Log() << Verbose(0) << "Upper boundary: ";
       cin >> tmp2;
-      first = mol->start;
-      second = first->next;
-      while(second != mol->end) {
-        first = second;
-        second = first->next;
-        if ((first->x[axis] < tmp1) || (first->x[axis] > tmp2)) {// out of boundary ...
-          //Log() << Verbose(0) << "Atom " << *first << " with " << first->x.x[axis] << " on axis " << axis << " is out of bounds [" << tmp1 << "," << tmp2 << "]." << endl;
-          mol->RemoveAtom(first);
+      molecule::iterator runner;
+      for (molecule::iterator iter = mol->begin(); iter != mol->end(); ) {
+        runner = iter++;
+        if (((*runner)->x[axis] < tmp1) || ((*runner)->x[axis] > tmp2)) {// out of boundary ...
+          //Log() << Verbose(0) << "Atom " << *(*runner) << " with " << (*runner)->x.x[axis] << " on axis " << axis << " is out of bounds [" << tmp1 << "," << tmp2 << "]." << endl;
+          mol->RemoveAtom((*runner));
         }
       }
@@ -516,15 +514,13 @@
         min[i] = 0.;
 
-      second = mol->start;
-      while ((second->next != mol->end)) {
-        second = second->next; // advance
-        Z = second->type->Z;
+      for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+        Z = (*iter)->type->Z;
         tmp1 = 0.;
-        if (first != second) {
-          x = first->x - second->x;
+        if (first != (*iter)) {
+          x = first->x - (*iter)->x;
           tmp1 = x.Norm();
         }
         if ((tmp1 != 0.) && ((min[Z] == 0.) || (tmp1 < min[Z]))) min[Z] = tmp1;
-        //Log() << Verbose(0) << "Bond length between Atom " << first->nr << " and " << second->nr << ": " << tmp1 << " a.u." << endl;
+        //Log() << Verbose(0) << "Bond length between Atom " << first->nr << " and " << ((*iter)->nr << ": " << tmp1 << " a.u." << endl;
       }
       for (int i=MAX_ELEMENTS;i--;)
@@ -609,5 +605,5 @@
   Log() << Verbose(0) << "What's the desired bond order: ";
   cin >> Order1;
-  if (mol->first->next != mol->last) {  // there are bonds
+  if (mol->hasBondStructure()) {
     start = clock();
     mol->FragmentMolecule(Order1, configuration);
@@ -755,16 +751,12 @@
     Log() << Verbose(0) << "State the factor: ";
     cin >> faktor;
-
-    mol->CountAtoms(); // recount atoms
-    if (mol->AtomCount != 0) {  // if there is more than none
-      count = mol->AtomCount;  // is changed becausing of adding, thus has to be stored away beforehand
+    if (mol->getAtomCount() != 0) {  // if there is more than none
+      count = mol->getAtomCount();  // is changed becausing of adding, thus has to be stored away beforehand
       Elements = new const element *[count];
       vectors = new Vector *[count];
       j = 0;
-      first = mol->start;
-      while (first->next != mol->end) { // make a list of all atoms with coordinates and element
-        first = first->next;
-        Elements[j] = first->type;
-        vectors[j] = &first->x;
+      for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+        Elements[j] = (*iter)->type;
+        vectors[j] = &(*iter)->x;
         j++;
       }
@@ -783,5 +775,5 @@
         }
       }
-      if (mol->first->next != mol->last) // if connect matrix is present already, redo it
+      if (mol->hasBondStructure())
         mol->CreateAdjacencyList(mol->BondDistance, configuration->GetIsAngstroem(), &BondGraph::CovalentMinMaxDistance, NULL);
       // free memory
@@ -1025,14 +1017,12 @@
     return;
   }
-  atom *Walker = mol->start;
 
   // generate some KeySets
   Log() << Verbose(0) << "Generating KeySets." << endl;
-  KeySet TestSets[mol->AtomCount+1];
+  KeySet TestSets[mol->getAtomCount()+1];
   i=1;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
     for (int j=0;j<i;j++) {
-      TestSets[j].insert(Walker->nr);
+      TestSets[j].insert((*iter)->nr);
     }
     i++;
@@ -1040,12 +1030,15 @@
   Log() << Verbose(0) << "Testing insertion of already present item in KeySets." << endl;
   KeySetTestPair test;
-  test = TestSets[mol->AtomCount-1].insert(Walker->nr);
-  if (test.second) {
-    Log() << Verbose(1) << "Insertion worked?!" << endl;
+  molecule::const_iterator iter = mol->begin();
+  if (iter != mol->end()) {
+    test = TestSets[mol->getAtomCount()-1].insert((*iter)->nr);
+    if (test.second) {
+      Log() << Verbose(1) << "Insertion worked?!" << endl;
+    } else {
+      Log() << Verbose(1) << "Insertion rejected: Present object is " << (*test.first) << "." << endl;
+    }
   } else {
-    Log() << Verbose(1) << "Insertion rejected: Present object is " << (*test.first) << "." << endl;
-  }
-  TestSets[mol->AtomCount].insert(mol->end->previous->nr);
-  TestSets[mol->AtomCount].insert(mol->end->previous->previous->previous->nr);
+    eLog() << Verbose(1) << "No atoms to test double insertion." << endl;
+  }
 
   // constructing Graph structure
@@ -1055,10 +1048,10 @@
   // insert KeySets into Subgraphs
   Log() << Verbose(0) << "Inserting KeySets into Subgraph class." << endl;
-  for (int j=0;j<mol->AtomCount;j++) {
+  for (int j=0;j<mol->getAtomCount();j++) {
     Subgraphs.insert(GraphPair (TestSets[j],pair<int, double>(counter++, 1.)));
   }
   Log() << Verbose(0) << "Testing insertion of already present item in Subgraph." << endl;
   GraphTestPair test2;
-  test2 = Subgraphs.insert(GraphPair (TestSets[mol->AtomCount],pair<int, double>(counter++, 1.)));
+  test2 = Subgraphs.insert(GraphPair (TestSets[mol->getAtomCount()],pair<int, double>(counter++, 1.)));
   if (test2.second) {
     Log() << Verbose(1) << "Insertion worked?!" << endl;
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -113,12 +113,14 @@
   Descriptors/AtomTypeDescriptor.cpp \
   Descriptors/MoleculeDescriptor.cpp \
-  Descriptors/MoleculeIdDescriptor.cpp 
+  Descriptors/MoleculeIdDescriptor.cpp \ 
+  Descriptors/MoleculePtrDescriptor.cpp 
 				   
-				   
+
 DESCRIPTORHEADER = Descriptors/AtomDescriptor.hpp \
   Descriptors/AtomIdDescriptor.hpp \
   Descriptors/AtomTypeDescriptor.hpp \
   Descriptors/MoleculeDescriptor.hpp \
-  Descriptors/MoleculeIdDescriptor.hpp
+  Descriptors/MoleculeIdDescriptor.hpp \
+  Descriptors/MoleculePtrDescriptor.hpp
 				   
 EXCEPTIONSOURCE = Exceptions/CustomException.cpp \
@@ -157,8 +159,6 @@
   Line.cpp \
   linkedcell.cpp \
-  lists.cpp \
   log.cpp \
   logger.cpp \
-  memoryusageobserver.cpp \
   moleculelist.cpp \
   molecule.cpp \
@@ -171,9 +171,11 @@
   periodentafel.cpp \
   Plane.cpp \
+  Space.cpp \
   tesselation.cpp \
   tesselationhelpers.cpp \
   triangleintersectionlist.cpp \
+  vector.cpp \
+  vector_ops.cpp \
   verbose.cpp \
-  vector_ops.cpp \
   World.cpp
 
@@ -206,6 +208,4 @@
   log.hpp \
   logger.hpp \
-  memoryallocator.hpp \
-  memoryusageobserver.hpp \
   molecule.hpp \
   molecule_template.hpp \
@@ -221,4 +221,10 @@
   World.hpp 
 
+# the following files are no longer used:
+#  memoryallocator.hpp \
+#  memoryallocator.cpp \
+#  memoryusageobserver.hpp \
+#  memoryusageobserver.cpp
+
 BOOST_LIB = $(BOOST_LDFLAGS) $(BOOST_MPL_LIB)
 INCLUDES = -I$(top_srcdir)/src/unittests -I$(top_srcdir)/src/Actions -I$(top_srcdir)/src/UIElements
Index: src/Patterns/Cacheable.hpp
===================================================================
--- src/Patterns/Cacheable.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Patterns/Cacheable.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -28,5 +28,5 @@
         owner(_owner)
         {}
-      virtual T getValue()=0;
+      virtual T& getValue()=0;
       virtual void invalidate()=0;
       virtual bool isValid()=0;
@@ -46,5 +46,5 @@
         {}
 
-      virtual T getValue(){
+      virtual T& getValue(){
         // set the state to valid
         State::owner->switchState(State::owner->validState);
@@ -72,5 +72,5 @@
         {}
 
-      virtual T getValue(){
+      virtual T& getValue(){
         return content;
       }
@@ -100,5 +100,5 @@
         {}
 
-      virtual T getValue(){
+      virtual T& getValue(){
         ASSERT(0,"Cannot get a value from a Cacheable after it's Observable has died");
         // we have to return a grossly invalid reference, because no value can be produced anymore
@@ -134,5 +134,4 @@
     void subjectKilled(Observable *subject);
   private:
-
     void switchState(state_ptr newState);
 
@@ -144,5 +143,4 @@
 
     Observable *owner;
-
     boost::function<T()> recalcMethod;
 
@@ -221,5 +219,5 @@
 
     const bool isValid() const;
-    const T operator*() const;
+    const T& operator*() const;
 
     // methods implemented for base-class Observer
@@ -237,5 +235,5 @@
 
   template<typename T>
-  const T Cacheable<T>::operator*() const{
+  const T& Cacheable<T>::operator*() const{
     return recalcMethod();
   }
Index: src/Patterns/ObservedIterator.hpp
===================================================================
--- src/Patterns/ObservedIterator.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ src/Patterns/ObservedIterator.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,144 @@
+/*
+ * ObservedIterator.hpp
+ *
+ *  Created on: Mar 4, 2010
+ *      Author: crueger
+ */
+
+#ifndef OBSERVEDITERATOR_HPP_
+#define OBSERVEDITERATOR_HPP_
+
+#include "Patterns/Observer.hpp"
+
+#include <iterator>
+
+// we build an iterator that observes traversion of some kind of Data structure conforming to STL
+template<class _Set>
+class ObservedIterator
+    : public std::iterator<typename std::iterator_traits<typename _Set::iterator>::iterator_category,
+                           typename std::iterator_traits<typename _Set::iterator>::value_type,
+                           typename std::iterator_traits<typename _Set::iterator>::difference_type,
+                           typename std::iterator_traits<typename _Set::iterator>::pointer,
+                           typename std::iterator_traits<typename _Set::iterator>::reference>
+{
+public:
+  // Some typedefs to conform to STL-Iterator structure
+  typedef typename _Set::iterator _Iter;
+  typedef typename _Iter::value_type value_type;
+  typedef typename _Iter::difference_type difference_type;
+  typedef typename _Iter::pointer pointer;
+  typedef typename _Iter::reference reference;
+  typedef typename _Iter::iterator_category iterator_category;
+
+  ObservedIterator() :
+    protector(0)
+  {}
+
+  ObservedIterator(_Iter iter,Observable *obs) :
+    iter(iter),
+    collection(obs),
+    protector(0)
+  {}
+
+  ObservedIterator(const ObservedIterator &dest) :
+    iter(dest.iter),
+    collection(dest.collection),
+    protector(dest.copyLock())
+  {}
+
+  ~ObservedIterator(){
+    if(protector)
+      delete protector;
+  }
+
+  // standard Iterator methods
+  ObservedIterator& operator=(const ObservedIterator& dest){
+    if(&dest !=this){
+      // get the new lock first, in case the two locks point to the same observable
+      Observable::_Observable_protector *newLock = dest.copyLock();
+      if(protector)
+        delete protector;
+      protector = newLock;
+      // After the new lock is aquired we can safely set the iterator
+      iter = dest.iter;
+      // we need to know the collection, in case we still have to set the lock
+      collection = dest.collection;
+    }
+    return *this;
+  }
+
+  ObservedIterator& operator++()   // prefix
+  {
+    ++iter;
+    return *this;
+  }
+
+  ObservedIterator operator++(int) // postfix with the dummy int parameter
+  {
+    ObservedIterator ret(*this);
+    ++(*this);
+    return ret;
+  }
+
+  ObservedIterator& operator--()   // prefix
+  {
+    --iter;
+  }
+
+  ObservedIterator  operator--(int) // postfix with the dummy int parameter
+  {
+    ObservedIterator ret(*this);
+    --(*this);
+    return ret;
+  }
+
+  bool operator==(const ObservedIterator &rhs){
+    return iter==rhs.iter;
+  }
+
+  bool operator!=(const ObservedIterator &rhs){
+    return iter!=rhs.iter;
+  }
+
+  value_type operator*(){
+    // access is requested... time to get the lock
+    acquireLock();
+    return (*iter);
+  }
+
+  // when we turn into a const iterator we can loose our lock
+  operator typename _Set::const_iterator() {
+    // typecast will be handled by the typecast method of the original iterator
+    return iter;
+  }
+
+private:
+
+  /**
+   * gets the lock for the collection when needed
+   *
+   * The lock is only acquired when the first change is done, so we can be free to do
+   * anything with the iterator before that. I.e. step forward, turn into a const_iterator
+   * etc.
+   */
+  void acquireLock(){
+    if(!protector)
+      protector = new Observable::_Observable_protector(collection);
+  }
+
+  Observable::_Observable_protector *copyLock() const{
+    // we only copy if we actually carry a lock
+    if(protector){
+      return new Observable::_Observable_protector(*protector);
+    }
+    else{
+      return 0;
+    }
+  }
+
+  _Iter iter;
+  Observable *collection;
+  Observable::_Observable_protector *protector;
+};
+
+#endif /* OBSERVEDITERATOR_HPP_ */
Index: src/Patterns/Observer.cpp
===================================================================
--- src/Patterns/Observer.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Patterns/Observer.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -82,4 +82,10 @@
 Observable::_Observable_protector::_Observable_protector(Observable *_protege) :
   protege(_protege)
+{
+  start_observer_internal(protege);
+}
+
+Observable::_Observable_protector::_Observable_protector(const _Observable_protector &dest) :
+    protege(dest.protege)
 {
   start_observer_internal(protege);
@@ -189,4 +195,5 @@
   ASSERT(callTable.count(this),"SignOff called for an Observable without Observers.");
   callees_t &callees = callTable[this];
+
   callees_t::iterator iter;
   callees_t::iterator deliter;
Index: src/Patterns/Observer.hpp
===================================================================
--- src/Patterns/Observer.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Patterns/Observer.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -36,4 +36,7 @@
 typedef Notification *const Notification_ptr;
 
+template<class _Set>
+class ObservedIterator;
+
 /**
  * An Observer is notified by all Observed objects, when anything changes.
@@ -53,4 +56,6 @@
   friend class Observable;
   friend class Notification;
+  template<class> friend class ObservedIterator;
+
 public:
   Observer();
@@ -152,5 +157,4 @@
   static std::set<Observable*> busyObservables;
 
-
   //! @cond
   // Structure for RAII-Style notification
@@ -164,4 +168,5 @@
   public:
     _Observable_protector(Observable *);
+    _Observable_protector(const _Observable_protector&);
     ~_Observable_protector();
   private:
Index: src/Plane.cpp
===================================================================
--- src/Plane.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Plane.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -91,4 +91,13 @@
   offset = normalVector->ScalarProduct(_offsetVector);
 }
+
+/**
+ * copy constructor
+ */
+Plane::Plane(const Plane& plane) :
+  normalVector(new Vector(*plane.normalVector)),
+  offset(plane.offset)
+{}
+
 
 Plane::~Plane()
Index: src/Plane.hpp
===================================================================
--- src/Plane.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/Plane.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -26,4 +26,5 @@
   Plane(const Vector &_normalVector, double _offset)  throw(ZeroVectorException);
   Plane(const Vector &_normalVector, const Vector &_offsetVector) throw(ZeroVectorException);
+  Plane(const Plane& plane);
   virtual ~Plane();
 
Index: src/UIElements/CommandLineUI/CommandLineDialog.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineDialog.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/UIElements/CommandLineUI/CommandLineDialog.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -15,4 +15,6 @@
 #include <Descriptors/MoleculeIdDescriptor.hpp>
 #include "CommandLineUI/CommandLineDialog.hpp"
+
+#include "Actions/Values.hpp"
 
 #include "element.hpp"
@@ -116,24 +118,9 @@
 
 bool CommandLineDialog::BooleanCommandLineQuery::handle() {
-  bool badInput = false;
-  char input = ' ';
-  do{
-    badInput = false;
-    Log() << Verbose(0) << getTitle();
-    cin >> input;
-    if ((input == 'y' ) || (input == 'Y')) {
-      tmp = true;
-    } else if ((input == 'n' ) || (input == 'N')) {
-      tmp = false;
-    } else {
-      badInput=true;
-      cin.clear();
-      cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
-      Log() << Verbose(0) << "Input was not of [yYnN]!" << endl;
-    }
-  } while(badInput);
-  // clear the input buffer of anything still in the line
-  cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
-  return true;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    tmp = CommandLineParser::getInstance().vm[getTitle()].as<bool>();
+    return true;
+  } else
+    return false;
 }
 
@@ -192,5 +179,9 @@
   if (CommandLineParser::getInstance().vm.count(getTitle())) {
     IdxOfMol = CommandLineParser::getInstance().vm[getTitle()].as<int>();
-    tmp = World::getInstance().getMolecule(MoleculeById(IdxOfMol));
+    cout << "IdxOfMol " << IdxOfMol << endl;
+    if (IdxOfMol >= 0)
+      tmp = World::getInstance().getMolecule(MoleculeById(IdxOfMol));
+    else
+      tmp = NULL;
     return true;
   } else
@@ -206,10 +197,10 @@
 
 bool CommandLineDialog::VectorCommandLineQuery::handle() {
-  vector<double> temp;
-  if (CommandLineParser::getInstance().vm.count(getTitle())) {
-    temp = CommandLineParser::getInstance().vm[getTitle()].as<vector<double> >();
-    assert((temp.size() == 3) && "Vector from command line does not have three components.");
-    for (int i=0;i<NDIM;i++)
-      tmp->at(i) = temp[i];
+  VectorValue temp;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    temp = CommandLineParser::getInstance().vm[getTitle()].as< VectorValue >();
+    tmp->at(0) = temp.x;
+    tmp->at(1) = temp.y;
+    tmp->at(2) = temp.z;
     return true;
   } else
@@ -226,10 +217,13 @@
 
 bool CommandLineDialog::BoxCommandLineQuery::handle() {
-  vector<double> temp;
-  if (CommandLineParser::getInstance().vm.count(getTitle())) {
-    temp = CommandLineParser::getInstance().vm[getTitle()].as<vector<double> >();
-    assert((temp.size() == 6) && "Symmetric box matrix from command line does not have six components.");
-    for (int i=0;i<6;i++)
-      tmp[i] = temp[i];
+  BoxValue temp;
+  if (CommandLineParser::getInstance().vm.count(getTitle())) {
+    temp = CommandLineParser::getInstance().vm[getTitle()].as< BoxValue >();
+    tmp[0] = temp.xx;
+    tmp[1] = temp.xy;
+    tmp[2] = temp.xz;
+    tmp[3] = temp.yy;
+    tmp[4] = temp.yz;
+    tmp[5] = temp.zz;
     return true;
   } else
Index: src/UIElements/CommandLineUI/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -73,9 +73,9 @@
 CommandLineWindow::~CommandLineWindow()
 {
-  // go through all possible actions
-  for(std::map<const std::string,Action*>::iterator ActionRunner = ActionRegistry::getInstance().getBeginIter(); ActionRegistry::getInstance().getBeginIter() != ActionRegistry::getInstance().getEndIter(); ActionRunner = ActionRegistry::getInstance().getBeginIter()) {
-    ActionRegistry::getInstance().unregisterAction(ActionRunner->second);
-    delete(ActionRunner->second);
-  }
+//  // go through all possible actions
+//  for(std::map<const std::string,Action*>::iterator ActionRunner = ActionRegistry::getInstance().getBeginIter(); ActionRegistry::getInstance().getBeginIter() != ActionRegistry::getInstance().getEndIter(); ActionRunner = ActionRegistry::getInstance().getBeginIter()) {
+//    ActionRegistry::getInstance().unregisterAction(ActionRunner->second);
+//    delete(ActionRunner->second);
+//  }
 
   delete statusIndicator;
Index: src/UIElements/Dialog.cpp
===================================================================
--- src/UIElements/Dialog.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/UIElements/Dialog.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -166,5 +166,5 @@
   target(_target)
 {
-tmp = new Vector();
+  tmp = new Vector();
 }
 
@@ -193,6 +193,7 @@
 
 void Dialog::BoxQuery::setResult() {
-  for (int i=0;i<6;i++)
-    *target[i] = tmp[i];
+  for (int i=0;i<6;i++) {
+    (*target)[i] = tmp[i];
+  }
 }
 
Index: src/World.cpp
===================================================================
--- src/World.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/World.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -87,9 +87,11 @@
   delete[](defaultName);
   const int length = strlen(name);
-  defaultName = new char[length+2];
-  if (length < MAXSTRINGSIZE)
+  if (length < MAXSTRINGSIZE) {
+    defaultName = new char[length+2];
     strncpy(defaultName, name, length);
-  else
-    strcpy(defaultName, "none");
+  } else {
+    defaultName = new char[MAXSTRINGSIZE];
+    strncpy(defaultName, "none", MAXSTRINGSIZE-1);
+  }
 };
 
Index: src/analysis_bonds.cpp
===================================================================
--- src/analysis_bonds.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/analysis_bonds.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -26,9 +26,7 @@
   Mean = 0.;
 
-  atom *Walker = mol->start;
   int AtomCount = 0;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    const int count = Walker->ListOfBonds.size();
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    const int count = (*iter)->ListOfBonds.size();
     if (Max < count)
       Max = count;
@@ -58,10 +56,8 @@
 
   int AtomNo = 0;
-  atom *Walker = mol->start;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    if (Walker->type == type1)
-      for (BondList::const_iterator BondRunner = Walker->ListOfBonds.begin(); BondRunner != Walker->ListOfBonds.end(); BondRunner++)
-        if ((*BondRunner)->GetOtherAtom(Walker)->type == type2) {
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    if ((*iter)->type == type1)
+      for (BondList::const_iterator BondRunner = (*iter)->ListOfBonds.begin(); BondRunner != (*iter)->ListOfBonds.end(); BondRunner++)
+        if ((*BondRunner)->GetOtherAtom((*iter))->type == type2) {
           const double distance = (*BondRunner)->GetDistanceSquared();
           if (Min > distance)
@@ -126,6 +122,4 @@
 int CountHydrogenBridgeBonds(MoleculeListClass *molecules, const element * InterfaceElement = NULL)
 {
-  atom *Walker = NULL;
-  atom *Runner = NULL;
   int count = 0;
   int OtherHydrogens = 0;
@@ -133,15 +127,13 @@
   bool InterfaceFlag = false;
   bool OtherHydrogenFlag = true;
-  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin();MolWalker != molecules->ListOfMolecules.end(); MolWalker++) {
-    Walker = (*MolWalker)->start;
-    while (Walker->next != (*MolWalker)->end) {
-      Walker = Walker->next;
-      for (MoleculeList::const_iterator MolRunner = molecules->ListOfMolecules.begin();MolRunner != molecules->ListOfMolecules.end(); MolRunner++) {
-        Runner = (*MolRunner)->start;
-        while (Runner->next != (*MolRunner)->end) {
-          Runner = Runner->next;
-          if ((Walker->type->Z  == 8) && (Runner->type->Z  == 8)) {
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin();MolWalker != molecules->ListOfMolecules.end(); ++MolWalker) {
+    molecule::iterator Walker = (*MolWalker)->begin();
+    for(;Walker!=(*MolWalker)->end();++Walker){
+      for (MoleculeList::const_iterator MolRunner = molecules->ListOfMolecules.begin();MolRunner != molecules->ListOfMolecules.end(); ++MolRunner) {
+        molecule::iterator Runner = (*MolRunner)->begin();
+        for(;Runner!=(*MolRunner)->end();++Runner){
+          if (((*Walker)->type->Z  == 8) && ((*Runner)->type->Z  == 8)) {
             // check distance
-            const double distance = Runner->x.DistanceSquared(Walker->x);
+            const double distance = (*Runner)->x.DistanceSquared((*Walker)->x);
             if ((distance > MYEPSILON) && (distance < HBRIDGEDISTANCE*HBRIDGEDISTANCE)) { // distance >0 means  different atoms
               // on other atom(Runner) we check for bond to interface element and
@@ -151,9 +143,9 @@
               OtherHydrogens = 0;
               InterfaceFlag = (InterfaceElement == NULL);
-              for (BondList::const_iterator BondRunner = Runner->ListOfBonds.begin(); BondRunner != Runner->ListOfBonds.end(); BondRunner++) {
-                atom * const OtherAtom = (*BondRunner)->GetOtherAtom(Runner);
+              for (BondList::const_iterator BondRunner = (*Runner)->ListOfBonds.begin(); BondRunner != (*Runner)->ListOfBonds.end(); BondRunner++) {
+                atom * const OtherAtom = (*BondRunner)->GetOtherAtom(*Runner);
                 // if hydrogen, check angle to be greater(!) than 30 degrees
                 if (OtherAtom->type->Z == 1) {
-                  const double angle = CalculateAngle(&OtherAtom->x, &Runner->x, &Walker->x);
+                  const double angle = CalculateAngle(&OtherAtom->x, &(*Runner)->x, &(*Walker)->x);
                   OtherHydrogenFlag = OtherHydrogenFlag && (angle > M_PI*(30./180.) + MYEPSILON);
                   Otherangle += angle;
@@ -176,10 +168,10 @@
               if (InterfaceFlag && OtherHydrogenFlag) {
                 // on this element (Walker) we check for bond to hydrogen, i.e. part of water molecule
-                for (BondList::const_iterator BondRunner = Walker->ListOfBonds.begin(); BondRunner != Walker->ListOfBonds.end(); BondRunner++) {
-                  atom * const OtherAtom = (*BondRunner)->GetOtherAtom(Walker);
+                for (BondList::const_iterator BondRunner = (*Walker)->ListOfBonds.begin(); BondRunner != (*Walker)->ListOfBonds.end(); BondRunner++) {
+                  atom * const OtherAtom = (*BondRunner)->GetOtherAtom(*Walker);
                   if (OtherAtom->type->Z == 1) {
                     // check angle
-                    if (CheckHydrogenBridgeBondAngle(Walker, OtherAtom, Runner)) {
-                      DoLog(1) && (Log() << Verbose(1) << Walker->Name << ", " << OtherAtom->Name << " and " << Runner->Name << " has a hydrogen bridge bond with distance " << sqrt(distance) << " and angle " << CalculateAngle(&OtherAtom->x, &Walker->x, &Runner->x)*(180./M_PI) << "." << endl);
+                    if (CheckHydrogenBridgeBondAngle(*Walker, OtherAtom, *Runner)) {
+                      DoLog(1) && (Log() << Verbose(1) << (*Walker)->getName() << ", " << OtherAtom->getName() << " and " << (*Runner)->getName() << " has a hydrogen bridge bond with distance " << sqrt(distance) << " and angle " << CalculateAngle(&OtherAtom->x, &(*Walker)->x, &(*Runner)->x)*(180./M_PI) << "." << endl);
                       count++;
                       break;
@@ -205,15 +197,14 @@
 int CountBondsOfTwo(MoleculeListClass * const molecules, const element * const first, const element * const second)
 {
-  atom *Walker = NULL;
   int count = 0;
 
   for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin();MolWalker != molecules->ListOfMolecules.end(); MolWalker++) {
-    Walker = (*MolWalker)->start;
-    while (Walker->next != (*MolWalker)->end) {
-      Walker = Walker->next;
-      if ((Walker->type == first) || (Walker->type == second)) {  // first element matches
-        for (BondList::const_iterator BondRunner = Walker->ListOfBonds.begin(); BondRunner != Walker->ListOfBonds.end(); BondRunner++) {
-          atom * const OtherAtom = (*BondRunner)->GetOtherAtom(Walker);
-          if (((OtherAtom->type == first) || (OtherAtom->type == second)) && (Walker->nr < OtherAtom->nr)) {
+    molecule::iterator Walker = (*MolWalker)->begin();
+    for(;Walker!=(*MolWalker)->end();++Walker){
+      atom * theAtom = *Walker;
+      if ((theAtom->type == first) || (theAtom->type == second)) {  // first element matches
+        for (BondList::const_iterator BondRunner = theAtom->ListOfBonds.begin(); BondRunner != theAtom->ListOfBonds.end(); BondRunner++) {
+          atom * const OtherAtom = (*BondRunner)->GetOtherAtom(theAtom);
+          if (((OtherAtom->type == first) || (OtherAtom->type == second)) && (theAtom->nr < OtherAtom->nr)) {
             count++;
             DoLog(1) && (Log() << Verbose(1) << first->name << "-" << second->name << " bond found between " << *Walker << " and " << *OtherAtom << "." << endl);
@@ -240,5 +231,4 @@
   bool MatchFlag[2];
   bool result = false;
-  atom *Walker = NULL;
   const element * ElementArray[2];
   ElementArray[0] = first;
@@ -246,12 +236,12 @@
 
   for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin();MolWalker != molecules->ListOfMolecules.end(); MolWalker++) {
-    Walker = (*MolWalker)->start;
-    while (Walker->next != (*MolWalker)->end) {
-      Walker = Walker->next;
-      if (Walker->type == second) {  // first element matches
+    molecule::iterator Walker = (*MolWalker)->begin();
+    for(;Walker!=(*MolWalker)->end();++Walker){
+      atom *theAtom = *Walker;
+      if (theAtom->type == second) {  // first element matches
         for (int i=0;i<2;i++)
           MatchFlag[i] = false;
-        for (BondList::const_iterator BondRunner = Walker->ListOfBonds.begin(); BondRunner != Walker->ListOfBonds.end(); BondRunner++) {
-          atom * const OtherAtom = (*BondRunner)->GetOtherAtom(Walker);
+        for (BondList::const_iterator BondRunner = theAtom->ListOfBonds.begin(); BondRunner != theAtom->ListOfBonds.end(); BondRunner++) {
+          atom * const OtherAtom = (*BondRunner)->GetOtherAtom(theAtom);
           for (int i=0;i<2;i++)
             if ((!MatchFlag[i]) && (OtherAtom->type == ElementArray[i])) {
Index: src/analysis_correlation.cpp
===================================================================
--- src/analysis_correlation.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/analysis_correlation.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -39,32 +39,33 @@
     return outmap;
   }
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+    (*MolWalker)->doCountAtoms();
   outmap = new PairCorrelationMap;
-  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++){
     if ((*MolWalker)->ActiveFlag) {
       DoeLog(2) && (eLog()<< Verbose(2) << "Current molecule is " << *MolWalker << "." << endl);
-      atom *Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << *Walker << "." << endl);
-        if ((type1 == NULL) || (Walker->type == type1)) {
-          for (MoleculeList::const_iterator MolOtherWalker = MolWalker; MolOtherWalker != molecules->ListOfMolecules.end(); MolOtherWalker++)
+      eLog() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl;
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << **iter << "." << endl);
+        if ((type1 == NULL) || ((*iter)->type == type1)) {
+          for (MoleculeList::const_iterator MolOtherWalker = MolWalker; MolOtherWalker != molecules->ListOfMolecules.end(); MolOtherWalker++){
             if ((*MolOtherWalker)->ActiveFlag) {
               DoLog(2) && (Log() << Verbose(2) << "Current other molecule is " << *MolOtherWalker << "." << endl);
-              atom *OtherWalker = (*MolOtherWalker)->start;
-              while (OtherWalker->next != (*MolOtherWalker)->end) { // only go up to Walker
-                OtherWalker = OtherWalker->next;
-                DoLog(3) && (Log() << Verbose(3) << "Current otheratom is " << *OtherWalker << "." << endl);
-                if (Walker->nr < OtherWalker->nr)
-                  if ((type2 == NULL) || (OtherWalker->type == type2)) {
-                    distance = Walker->node->PeriodicDistance(*OtherWalker->node, World::getInstance().getDomain());
-                    //Log() << Verbose(1) <<"Inserting " << *Walker << " and " << *OtherWalker << endl;
-                    outmap->insert ( pair<double, pair <atom *, atom*> > (distance, pair<atom *, atom*> (Walker, OtherWalker) ) );
+              for (molecule::const_iterator runner = (*MolOtherWalker)->begin(); runner != (*MolOtherWalker)->end(); ++runner) {
+                DoLog(3) && (Log() << Verbose(3) << "Current otheratom is " << **runner << "." << endl);
+                if ((*iter)->getId() < (*runner)->getId()){
+                  if ((type2 == NULL) || ((*runner)->type == type2)) {
+                    distance = (*iter)->node->PeriodicDistance(*(*runner)->node,  World::getInstance().getDomain());
+                    //Log() << Verbose(1) <<"Inserting " << *(*iter) << " and " << *(*runner) << endl;
+                    outmap->insert ( pair<double, pair <atom *, atom*> > (distance, pair<atom *, atom*> ((*iter), (*runner)) ) );
                   }
+                }
               }
+            }
           }
         }
       }
     }
-
+  }
   return outmap;
 };
@@ -95,4 +96,6 @@
     return outmap;
   }
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+    (*MolWalker)->doCountAtoms();
   outmap = new PairCorrelationMap;
   for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
@@ -101,10 +104,8 @@
       double * FullInverseMatrix = InverseMatrix(FullMatrix);
       DoeLog(2) && (eLog()<< Verbose(2) << "Current molecule is " << *MolWalker << "." << endl);
-      atom *Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << *Walker << "." << endl);
-        if ((type1 == NULL) || (Walker->type == type1)) {
-          periodicX = *(Walker->node);
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << **iter << "." << endl);
+        if ((type1 == NULL) || ((*iter)->type == type1)) {
+          periodicX = *(*iter)->node;
           periodicX.MatrixMultiplication(FullInverseMatrix);  // x now in [0,1)^3
           // go through every range in xyz and get distance
@@ -117,11 +118,9 @@
                   if ((*MolOtherWalker)->ActiveFlag) {
                     DoLog(2) && (Log() << Verbose(2) << "Current other molecule is " << *MolOtherWalker << "." << endl);
-                    atom *OtherWalker = (*MolOtherWalker)->start;
-                    while (OtherWalker->next != (*MolOtherWalker)->end) { // only go up to Walker
-                      OtherWalker = OtherWalker->next;
-                      DoLog(3) && (Log() << Verbose(3) << "Current otheratom is " << *OtherWalker << "." << endl);
-                      if (Walker->nr < OtherWalker->nr)
-                        if ((type2 == NULL) || (OtherWalker->type == type2)) {
-                          periodicOtherX = *(OtherWalker->node);
+                    for (molecule::const_iterator runner = (*MolOtherWalker)->begin(); runner != (*MolOtherWalker)->end(); ++runner) {
+                      DoLog(3) && (Log() << Verbose(3) << "Current otheratom is " << **runner << "." << endl);
+                      if ((*iter)->nr < (*runner)->nr)
+                        if ((type2 == NULL) || ((*runner)->type == type2)) {
+                          periodicOtherX = *(*runner)->node;
                           periodicOtherX.MatrixMultiplication(FullInverseMatrix);  // x now in [0,1)^3
                           // go through every range in xyz and get distance
@@ -132,6 +131,6 @@
                                 checkOtherX.MatrixMultiplication(FullMatrix);
                                 distance = checkX.distance(checkOtherX);
-                                //Log() << Verbose(1) <<"Inserting " << *Walker << " and " << *OtherWalker << endl;
-                                outmap->insert ( pair<double, pair <atom *, atom*> > (distance, pair<atom *, atom*> (Walker, OtherWalker) ) );
+                                //Log() << Verbose(1) <<"Inserting " << *(*iter) << " and " << *(*runner) << endl;
+                                outmap->insert ( pair<double, pair <atom *, atom*> > (distance, pair<atom *, atom*> ((*iter), (*runner)) ) );
                               }
                         }
@@ -141,6 +140,6 @@
         }
       }
-      Free(&FullMatrix);
-      Free(&FullInverseMatrix);
+      delete[](FullMatrix);
+      delete[](FullInverseMatrix);
     }
 
@@ -165,16 +164,16 @@
     return outmap;
   }
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+    (*MolWalker)->doCountAtoms();
   outmap = new CorrelationToPointMap;
   for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
     if ((*MolWalker)->ActiveFlag) {
       DoLog(2) && (Log() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl);
-      atom *Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << *Walker << "." << endl);
-        if ((type == NULL) || (Walker->type == type)) {
-          distance = Walker->node->PeriodicDistance(*point, World::getInstance().getDomain());
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << **iter << "." << endl);
+        if ((type == NULL) || ((*iter)->type == type)) {
+          distance = (*iter)->node->PeriodicDistance(*point, World::getInstance().getDomain());
           DoLog(4) && (Log() << Verbose(4) << "Current distance is " << distance << "." << endl);
-          outmap->insert ( pair<double, pair<atom *, const Vector*> >(distance, pair<atom *, const Vector*> (Walker, point) ) );
+          outmap->insert ( pair<double, pair<atom *, const Vector*> >(distance, pair<atom *, const Vector*> ((*iter), point) ) );
         }
       }
@@ -205,4 +204,6 @@
     return outmap;
   }
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+    (*MolWalker)->doCountAtoms();
   outmap = new CorrelationToPointMap;
   for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
@@ -211,10 +212,8 @@
       double * FullInverseMatrix = InverseMatrix(FullMatrix);
       DoLog(2) && (Log() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl);
-      atom *Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << *Walker << "." << endl);
-        if ((type == NULL) || (Walker->type == type)) {
-          periodicX = *(Walker->node);
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << **iter << "." << endl);
+        if ((type == NULL) || ((*iter)->type == type)) {
+          periodicX = *(*iter)->node;
           periodicX.MatrixMultiplication(FullInverseMatrix);  // x now in [0,1)^3
           // go through every range in xyz and get distance
@@ -226,10 +225,10 @@
                 distance = checkX.distance(*point);
                 DoLog(4) && (Log() << Verbose(4) << "Current distance is " << distance << "." << endl);
-                outmap->insert ( pair<double, pair<atom *, const Vector*> >(distance, pair<atom *, const Vector*> (Walker, point) ) );
+                outmap->insert ( pair<double, pair<atom *, const Vector*> >(distance, pair<atom *, const Vector*> (*iter, point) ) );
               }
         }
       }
-      Free(&FullMatrix);
-      Free(&FullInverseMatrix);
+      delete[](FullMatrix);
+      delete[](FullInverseMatrix);
     }
 
@@ -257,21 +256,24 @@
     return outmap;
   }
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+    (*MolWalker)->doCountAtoms();
   outmap = new CorrelationToSurfaceMap;
   for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
     if ((*MolWalker)->ActiveFlag) {
       DoLog(1) && (Log() << Verbose(1) << "Current molecule is " << (*MolWalker)->name << "." << endl);
-      atom *Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        //Log() << Verbose(1) << "Current atom is " << *Walker << "." << endl;
-        if ((type == NULL) || (Walker->type == type)) {
-          TriangleIntersectionList Intersections(Walker->node,Surface,LC);
+      if ((*MolWalker)->empty())
+        DoLog(1) && (1) && (Log() << Verbose(1) << "\t is empty." << endl);
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        DoLog(1) && (Log() << Verbose(1) << "\tCurrent atom is " << *(*iter) << "." << endl);
+        if ((type == NULL) || ((*iter)->type == type)) {
+          TriangleIntersectionList Intersections((*iter)->node,Surface,LC);
           distance = Intersections.GetSmallestDistance();
           triangle = Intersections.GetClosestTriangle();
-          outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(distance, pair<atom *, BoundaryTriangleSet*> (Walker, triangle) ) );
-        }
-      }
-    } else
+          outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(distance, pair<atom *, BoundaryTriangleSet*> ((*iter), triangle) ) );
+        }
+      }
+    } else {
       DoLog(1) && (Log() << Verbose(1) << "molecule " << (*MolWalker)->name << " is not active." << endl);
+    }
 
   return outmap;
@@ -306,4 +308,6 @@
     return outmap;
   }
+  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
+    (*MolWalker)->doCountAtoms();
   outmap = new CorrelationToSurfaceMap;
   double ShortestDistance = 0.;
@@ -314,10 +318,8 @@
       double * FullInverseMatrix = InverseMatrix(FullMatrix);
       DoLog(2) && (Log() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl);
-      atom *Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << *Walker << "." << endl);
-        if ((type == NULL) || (Walker->type == type)) {
-          periodicX = *(Walker->node);
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        DoLog(3) && (Log() << Verbose(3) << "Current atom is " << **iter << "." << endl);
+        if ((type == NULL) || ((*iter)->type == type)) {
+          periodicX = *(*iter)->node;
           periodicX.MatrixMultiplication(FullInverseMatrix);  // x now in [0,1)^3
           // go through every range in xyz and get distance
@@ -337,10 +339,10 @@
               }
           // insert
-          outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(ShortestDistance, pair<atom *, BoundaryTriangleSet*> (Walker, ShortestTriangle) ) );
+          outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(ShortestDistance, pair<atom *, BoundaryTriangleSet*> (*iter, ShortestTriangle) ) );
           //Log() << Verbose(1) << "INFO: Inserting " << Walker << " with distance " << ShortestDistance << " to " << *ShortestTriangle << "." << endl;
         }
       }
-      Free(&FullMatrix);
-      Free(&FullInverseMatrix);
+      delete[](FullMatrix);
+      delete[](FullInverseMatrix);
     }
 
Index: src/analyzer.cpp
===================================================================
--- src/analyzer.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/analyzer.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -75,5 +75,5 @@
     return 1;
   } else {
-    dir = Malloc<char>(strlen(argv[2]) + 2, "main: *dir");
+    dir = new char[strlen(argv[2]) + 2];
     strcpy(dir, "/");
     strcat(dir, argv[2]);
@@ -82,5 +82,5 @@
   if (argc > 4) {
     DoLog(0) && (Log() << Verbose(0) << "Loading periodentafel." << endl);
-    periode = Malloc<periodentafel>(1, "main - periode");
+    periode = new periodentafel;
     periode->LoadPeriodentafel(argv[4]);
   }
@@ -558,5 +558,5 @@
   // ++++++++++++++++ exit ++++++++++++++++++++++++++++++++++
   delete(periode);
-  Free(&dir);
+  delete[](dir);
   DoLog(0) && (Log() << Verbose(0) << "done." << endl);
   return 0;
Index: src/atom.cpp
===================================================================
--- src/atom.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -40,5 +40,5 @@
 
 atom *atom::clone(){
-  atom *res = new atom();
+  atom *res = new atom(this);
   res->previous=0;
   res->next=0;
@@ -59,5 +59,4 @@
 atom::~atom()
 {
-  unlink(this);
 };
 
@@ -270,6 +269,6 @@
 {
   if (ComponentNr != NULL)
-    Free(&ComponentNr);
-  ComponentNr = Malloc<int>(ListOfBonds.size()+1, "atom::InitComponentNumbers: *ComponentNr");
+    delete[](ComponentNr);
+  ComponentNr = new int[ListOfBonds.size()+1];
   for (int i=ListOfBonds.size()+1;i--;)
     ComponentNr[i] = -1;
Index: src/atom_bondedparticle.cpp
===================================================================
--- src/atom_bondedparticle.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom_bondedparticle.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -44,5 +44,5 @@
 void BondedParticle::OutputBondOfAtom() const
 {
-  DoLog(4) && (Log() << Verbose(4) << "Atom " << Name << "/" << nr << " with " << ListOfBonds.size() << " bonds: " << endl);
+  DoLog(4) && (Log() << Verbose(4) << "Atom " << getName() << "/" << nr << " with " << ListOfBonds.size() << " bonds: " << endl);
   int TotalDegree = 0;
   for (BondList::const_iterator Runner = ListOfBonds.begin(); Runner != ListOfBonds.end(); ++Runner) {
Index: src/atom_graphnode.cpp
===================================================================
--- src/atom_graphnode.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom_graphnode.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -27,5 +27,5 @@
 void GraphNode::OutputGraphInfo() const
 {
-  DoLog(2) && (Log() << Verbose(2) << "Atom " << Name << " is " << ((SeparationVertex) ? "a" : "not a") << " separation vertex, components are ");
+  DoLog(2) && (Log() << Verbose(2) << "Atom " << getName() << " is " << ((SeparationVertex) ? "a" : "not a") << " separation vertex, components are ");
   OutputComponentNumber();
   DoLog(3) && (Log() << Verbose(3) << " with Lowpoint " << LowpointNr << " and Graph Nr. " << GraphNr << "." << endl);
Index: src/atom_graphnodeinfo.cpp
===================================================================
--- src/atom_graphnodeinfo.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom_graphnodeinfo.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -17,4 +17,4 @@
 GraphNodeInfo::~GraphNodeInfo()
 {
-  Free<int>(&ComponentNr, "atom::~atom: *ComponentNr");
+  delete[](ComponentNr);
 };
Index: src/atom_particleinfo.cpp
===================================================================
--- src/atom_particleinfo.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom_particleinfo.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -11,13 +11,11 @@
 /** Constructor of ParticleInfo.
  */
-ParticleInfo::ParticleInfo() : nr(-1), Name(NULL) {};
+ParticleInfo::ParticleInfo() : nr(-1), name("Unknown") {
+};
 
 ParticleInfo::ParticleInfo(ParticleInfo *pointer) :
     nr(pointer->nr),
-    Name(pointer->Name)
-    {
-      if (Name == NULL)
-        Name = " ";
-    }
+    name(pointer->name)
+    {}
 
 
@@ -25,14 +23,17 @@
  */
 ParticleInfo::~ParticleInfo()
-{
-  Free(&Name);
-};
+{};
+
+const string& ParticleInfo::getName() const{
+  return name;
+}
+
+void ParticleInfo::setName(const string& _name){
+  name = _name;
+}
 
 ostream & operator << (ostream &ost, const ParticleInfo &a)
 {
-  if (a.Name == NULL)
-    ost << "[NULL]";
-  else
-    ost << "[" << a.Name << "|" << &a << "]";
+  ost << "[" << a.getName() << "|" << &a << "]";
   return ost;
 };
@@ -40,8 +41,5 @@
 ostream & ParticleInfo::operator << (ostream &ost) const
 {
-  if (Name == NULL)
-    ost << "[NULL]";
-  else
-    ost << "[" << Name << "|" << this << "]";
+  ost << "[" << name << "|" << this << "]";
   return ost;
 };
Index: src/atom_particleinfo.hpp
===================================================================
--- src/atom_particleinfo.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom_particleinfo.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -28,5 +28,4 @@
 public:
   int nr;       // index to easierly identify
-  char *Name;   // some name to reference to on output
 
   ParticleInfo();
@@ -34,7 +33,11 @@
   ~ParticleInfo();
 
+  const std::string& getName() const;
+  void setName(const std::string&);
+
   ostream & operator << (ostream &ost) const;
 
 private:
+  std::string name;   // some name to reference to on output
 };
 
Index: src/atom_trajectoryparticle.cpp
===================================================================
--- src/atom_trajectoryparticle.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/atom_trajectoryparticle.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -10,4 +10,5 @@
 #include "config.hpp"
 #include "element.hpp"
+#include "info.hpp"
 #include "log.hpp"
 #include "parser.hpp"
@@ -71,6 +72,7 @@
 void TrajectoryParticle::ResizeTrajectory(int MaxSteps)
 {
+  Info FunctionInfo(__func__);
   if (Trajectory.R.size() <= (unsigned int)(MaxSteps)) {
-    //Log() << Verbose(0) << "Increasing size for trajectory array of " << keyword << " to " << (MaxSteps+1) << "." << endl;
+    DoLog(0) && (Log() << Verbose(0) << "Increasing size for trajectory array of " << nr << " from " << Trajectory.R.size() << " to " << (MaxSteps+1) << "." << endl);
     Trajectory.R.resize(MaxSteps+1);
     Trajectory.U.resize(MaxSteps+1);
Index: src/bond.cpp
===================================================================
--- src/bond.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/bond.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -53,5 +53,5 @@
 ostream & operator << (ostream &ost, const bond &b)
 {
-  ost << "[" << b.leftatom->Name << " <" << b.BondDegree << "(H" << b.HydrogenBond << ")>" << b.rightatom->Name << "]";
+  ost << "[" << b.leftatom->getName() << " <" << b.BondDegree << "(H" << b.HydrogenBond << ")>" << b.rightatom->getName() << "]";
   return ost;
 };
Index: src/bondgraph.cpp
===================================================================
--- src/bondgraph.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/bondgraph.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -88,7 +88,7 @@
 {
   Info FunctionInfo(__func__);
-bool status = true;
+  bool status = true;
 
-  if (mol->start->next == mol->end) // only construct if molecule is not empty
+  if (mol->empty()) // only construct if molecule is not empty
     return false;
 
@@ -124,9 +124,7 @@
   max_distance = 0.;
 
-  atom *Runner = mol->start;
-  while (Runner->next != mol->end) {
-    Runner = Runner->next;
-    if (Runner->type->CovalentRadius > max_distance)
-      max_distance = Runner->type->CovalentRadius;
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    if ((*iter)->type->CovalentRadius > max_distance)
+      max_distance = (*iter)->type->CovalentRadius;
   }
   max_distance *= 2.;
Index: src/boundary.cpp
===================================================================
--- src/boundary.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/boundary.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -139,5 +139,4 @@
 {
 	Info FunctionInfo(__func__);
-  atom *Walker = NULL;
   PointMap PointsOnBoundary;
   LineMap LinesOnBoundary;
@@ -165,8 +164,6 @@
 
     // 3b. construct set of all points, transformed into cylindrical system and with left and right neighbours
-    Walker = mol->start;
-    while (Walker->next != mol->end) {
-      Walker = Walker->next;
-      ProjectedVector = Walker->x - (*MolCenter);
+    for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+      ProjectedVector = (*iter)->x - (*MolCenter);
       ProjectedVector.ProjectOntoPlane(AxisVector);
 
@@ -182,21 +179,22 @@
         angle = 2. * M_PI - angle;
       }
-      DoLog(1) && (Log() << Verbose(1) << "Inserting " << *Walker << ": (r, alpha) = (" << radius << "," << angle << "): " << ProjectedVector << endl);
-      BoundaryTestPair = BoundaryPoints[axis].insert(BoundariesPair(angle, DistancePair (radius, Walker)));
+    DoLog(1) && (Log() << Verbose(1) << "Inserting " << **iter << ": (r, alpha) = (" << radius << "," << angle << "): " << ProjectedVector << endl);
+      BoundaryTestPair = BoundaryPoints[axis].insert(BoundariesPair(angle, DistancePair (radius, (*iter))));
       if (!BoundaryTestPair.second) { // same point exists, check first r, then distance of original vectors to center of gravity
         DoLog(2) && (Log() << Verbose(2) << "Encountered two vectors whose projection onto axis " << axis << " is equal: " << endl);
         DoLog(2) && (Log() << Verbose(2) << "Present vector: " << *BoundaryTestPair.first->second.second << endl);
-        DoLog(2) && (Log() << Verbose(2) << "New vector: " << *Walker << endl);
+        DoLog(2) && (Log() << Verbose(2) << "New vector: " << **iter << endl);
         const double ProjectedVectorNorm = ProjectedVector.NormSquared();
         if ((ProjectedVectorNorm - BoundaryTestPair.first->second.first) > MYEPSILON) {
           BoundaryTestPair.first->second.first = ProjectedVectorNorm;
-          BoundaryTestPair.first->second.second = Walker;
+          BoundaryTestPair.first->second.second = (*iter);
           DoLog(2) && (Log() << Verbose(2) << "Keeping new vector due to larger projected distance " << ProjectedVectorNorm << "." << endl);
         } else if (fabs(ProjectedVectorNorm - BoundaryTestPair.first->second.first) < MYEPSILON) {
-          helper = Walker->x - (*MolCenter);
+          helper = (*iter)->x;
+          helper -= *MolCenter;
           const double oldhelperNorm = helper.NormSquared();
           helper = BoundaryTestPair.first->second.second->x - (*MolCenter);
           if (helper.NormSquared() < oldhelperNorm) {
-            BoundaryTestPair.first->second.second = Walker;
+            BoundaryTestPair.first->second.second = (*iter);
             DoLog(2) && (Log() << Verbose(2) << "Keeping new vector due to larger distance to molecule center " << helper.NormSquared() << "." << endl);
           } else {
@@ -226,7 +224,11 @@
     do { // do as long as we still throw one out per round
       flag = false;
-      Boundaries::iterator left = BoundaryPoints[axis].end();
-      Boundaries::iterator right = BoundaryPoints[axis].end();
-      for (Boundaries::iterator runner = BoundaryPoints[axis].begin(); runner != BoundaryPoints[axis].end(); runner++) {
+      Boundaries::iterator left = BoundaryPoints[axis].begin();
+      Boundaries::iterator right = BoundaryPoints[axis].begin();
+      Boundaries::iterator runner = BoundaryPoints[axis].begin();
+      bool LoopOnceDone = false;
+      while (!LoopOnceDone) {
+	runner = right;
+	right++;
         // set neighbours correctly
         if (runner == BoundaryPoints[axis].begin()) {
@@ -236,8 +238,7 @@
         }
         left--;
-        right = runner;
-        right++;
         if (right == BoundaryPoints[axis].end()) {
           right = BoundaryPoints[axis].begin();
+          LoopOnceDone = true;
         }
         // check distance
@@ -279,4 +280,5 @@
             DoLog(1) && (Log() << Verbose(1) << "Throwing out " << *runner->second.second << "." << endl);
             BoundaryPoints[axis].erase(runner);
+            runner = right;
             flag = true;
           }
@@ -359,24 +361,5 @@
 
   // 4. Store triangles in tecplot file
-  if (filename != NULL) {
-    if (DoTecplotOutput) {
-      string OutputName(filename);
-      OutputName.append("_intermed");
-      OutputName.append(TecplotSuffix);
-      ofstream *tecplot = new ofstream(OutputName.c_str());
-      WriteTecplotFile(tecplot, TesselStruct, mol, 0);
-      tecplot->close();
-      delete(tecplot);
-    }
-    if (DoRaster3DOutput) {
-      string OutputName(filename);
-      OutputName.append("_intermed");
-      OutputName.append(Raster3DSuffix);
-      ofstream *rasterplot = new ofstream(OutputName.c_str());
-      WriteRaster3dFile(rasterplot, TesselStruct, mol);
-      rasterplot->close();
-      delete(rasterplot);
-    }
-  }
+  StoreTrianglesinFile(mol, TesselStruct, filename, "_intermed");
 
   // 3d. check all baselines whether the peaks of the two adjacent triangles with respect to center of baseline are convex, if not, make the baseline between the two peaks and baseline endpoints become the new peaks
@@ -397,4 +380,5 @@
           TesselStruct->FlipBaseline(line);
           DoLog(1) && (Log() << Verbose(1) << "INFO: Correction of concave baselines worked." << endl);
+          LineRunner = TesselStruct->LinesOnBoundary.begin(); // LineRunner may have been erase if line was deleted from LinesOnBoundary
         }
       }
@@ -409,23 +393,5 @@
 
   // 4. Store triangles in tecplot file
-  if (filename != NULL) {
-    if (DoTecplotOutput) {
-      string OutputName(filename);
-      OutputName.append(TecplotSuffix);
-      ofstream *tecplot = new ofstream(OutputName.c_str());
-      WriteTecplotFile(tecplot, TesselStruct, mol, 0);
-      tecplot->close();
-      delete(tecplot);
-    }
-    if (DoRaster3DOutput) {
-      string OutputName(filename);
-      OutputName.append(Raster3DSuffix);
-      ofstream *rasterplot = new ofstream(OutputName.c_str());
-      WriteRaster3dFile(rasterplot, TesselStruct, mol);
-      rasterplot->close();
-      delete(rasterplot);
-    }
-  }
-
+  StoreTrianglesinFile(mol, TesselStruct, filename, "");
 
   // free reference lists
@@ -620,14 +586,12 @@
   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->endpoints[0]->node->node) - (*runner->second->endpoints[1]->node->node);
-      y = (*runner->second->endpoints[0]->node->node) - (*runner->second->endpoints[2]->node->node);
-      const double a = sqrt(runner->second->endpoints[0]->node->node->DistanceSquared(*runner->second->endpoints[1]->node->node));
-      const double b = sqrt(runner->second->endpoints[0]->node->node->DistanceSquared(*runner->second->endpoints[2]->node->node));
-      const double c = sqrt(runner->second->endpoints[2]->node->node->DistanceSquared(*runner->second->endpoints[1]->node->node));
+      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 = Plane(*(runner->second->endpoints[0]->node->node),
-                *(runner->second->endpoints[1]->node->node),
-                *(runner->second->endpoints[2]->node->node)).getNormal();
-      x.Scale(runner->second->endpoints[1]->node->node->ScalarProduct(x));
+      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)
@@ -680,4 +644,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()
+ * TODO: Here, we need a VolumeOfGeneralEnvelope (i.e. non-convex one)
  * \param *out output stream for debugging
  * \param *configuration needed for path to store convex envelope file
@@ -697,5 +662,4 @@
   int repetition[NDIM] = { 1, 1, 1 };
   int TotalNoClusters = 1;
-  atom *Walker = NULL;
   double totalmass = 0.;
   double clustervolume = 0.;
@@ -708,6 +672,8 @@
   GreatestDiameter = GetDiametersOfCluster(BoundaryPoints, mol, TesselStruct, IsAngstroem);
   BoundaryPoints = GetBoundaryPoints(mol, TesselStruct);
-  LinkedCell LCList(mol, 10.);
-  FindConvexBorder(mol, TesselStruct, &LCList, NULL);
+  LinkedCell *LCList = new LinkedCell(mol, 10.);
+  FindConvexBorder(mol, TesselStruct, (const LinkedCell *&)LCList, NULL);
+  delete (LCList);
+
 
   // some preparations beforehand
@@ -721,8 +687,6 @@
 
   // sum up the atomic masses
-  Walker = mol->start;
-  while (Walker->next != mol->end) {
-      Walker = Walker->next;
-      totalmass += Walker->type->mass;
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+      totalmass += (*iter)->type->mass;
   }
   DoLog(0) && (Log() << Verbose(0) << "RESULT: The summed mass is " << setprecision(10) << totalmass << " atomicmassunit." << endl);
@@ -806,5 +770,4 @@
   Vector Inserter;
   double FillIt = false;
-  atom *Walker = NULL;
   bond *Binder = NULL;
   double phi[NDIM];
@@ -813,5 +776,5 @@
 
   for (MoleculeList::iterator ListRunner = List->ListOfMolecules.begin(); ListRunner != List->ListOfMolecules.end(); ListRunner++)
-    if ((*ListRunner)->AtomCount > 0) {
+    if ((*ListRunner)->getAtomCount() > 0) {
       DoLog(1) && (Log() << Verbose(1) << "Pre-creating linked cell lists for molecule " << *ListRunner << "." << endl);
       LCList[(*ListRunner)] = new LinkedCell((*ListRunner), 10.); // get linked cell list
@@ -824,13 +787,12 @@
   filler->CenterEdge(&Inserter);
   filler->Center.Zero();
+  const int FillerCount = filler->getAtomCount();
   DoLog(2) && (Log() << Verbose(2) << "INFO: Filler molecule has the following bonds:" << endl);
-  Binder = filler->first;
-  while(Binder->next != filler->last) {
-    Binder = Binder->next;
-    DoLog(2) && (Log() << Verbose(2) << "  " << *Binder << endl);
-  }
-
-  filler->CountAtoms();
-  atom * CopyAtoms[filler->AtomCount];
+  for(molecule::iterator AtomRunner = filler->begin(); AtomRunner != filler->end(); ++AtomRunner)
+    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner)
+        DoLog(2) && (Log() << Verbose(2) << "  " << *(*BondRunner) << endl);
+
+  atom * CopyAtoms[FillerCount];
 
   // calculate filler grid in [0,1]^3
@@ -857,9 +819,7 @@
 
         // go through all atoms
-        for (int i=0;i<filler->AtomCount;i++)
+        for (int i=0;i<FillerCount;i++)
           CopyAtoms[i] = NULL;
-        Walker = filler->start;
-        while (Walker->next != filler->end) {
-          Walker = Walker->next;
+        for(molecule::const_iterator iter = filler->begin(); iter !=filler->end();++iter){
 
           // create atomic random translation vector ...
@@ -885,5 +845,5 @@
 
           // ... and put at new position
-          Inserter = Walker->x;
+          Inserter = (*iter)->x;
           if (DoRandomRotation)
             Inserter.MatrixMultiplication(Rotations);
@@ -909,26 +869,27 @@
             DoLog(1) && (Log() << Verbose(1) << "INFO: Position at " << Inserter << " is outer point." << endl);
             // copy atom ...
-            CopyAtoms[Walker->nr] = Walker->clone();
-            CopyAtoms[Walker->nr]->x = Inserter;
-            Filling->AddAtom(CopyAtoms[Walker->nr]);
-            DoLog(4) && (Log() << Verbose(4) << "Filling atom " << *Walker << ", translated to " << AtomTranslations << ", at final position is " << (CopyAtoms[Walker->nr]->x) << "." << endl);
+            CopyAtoms[(*iter)->nr] = (*iter)->clone();
+            CopyAtoms[(*iter)->nr]->x = Inserter;
+            Filling->AddAtom(CopyAtoms[(*iter)->nr]);
+            DoLog(4) && (Log() << Verbose(4) << "Filling atom " << **iter << ", translated to " << AtomTranslations << ", at final position is " << (CopyAtoms[(*iter)->nr]->x) << "." << endl);
           } else {
             DoLog(1) && (Log() << Verbose(1) << "INFO: Position at " << Inserter << " is inner point, within boundary or outside of MaxDistance." << endl);
-            CopyAtoms[Walker->nr] = NULL;
+            CopyAtoms[(*iter)->nr] = NULL;
             continue;
           }
         }
         // go through all bonds and add as well
-        Binder = filler->first;
-        while(Binder->next != filler->last) {
-          Binder = Binder->next;
-          if ((CopyAtoms[Binder->leftatom->nr] != NULL) && (CopyAtoms[Binder->rightatom->nr] != NULL)) {
-            Log()  << Verbose(3) << "Adding Bond between " << *CopyAtoms[Binder->leftatom->nr] << " and " << *CopyAtoms[Binder->rightatom->nr]<< "." << endl;
-            Filling->AddBond(CopyAtoms[Binder->leftatom->nr], CopyAtoms[Binder->rightatom->nr], Binder->BondDegree);
-          }
-        }
+        for(molecule::iterator AtomRunner = filler->begin(); AtomRunner != filler->end(); ++AtomRunner)
+          for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+            if ((*BondRunner)->leftatom == *AtomRunner) {
+              Binder = (*BondRunner);
+              if ((CopyAtoms[Binder->leftatom->nr] != NULL) && (CopyAtoms[Binder->rightatom->nr] != NULL)) {
+                Log()  << Verbose(3) << "Adding Bond between " << *CopyAtoms[Binder->leftatom->nr] << " and " << *CopyAtoms[Binder->rightatom->nr]<< "." << endl;
+                Filling->AddBond(CopyAtoms[Binder->leftatom->nr], CopyAtoms[Binder->rightatom->nr], Binder->BondDegree);
+              }
+            }
       }
-  Free(&M);
-  Free(&MInverse);
+  delete[](M);
+  delete[](MInverse);
 
   return Filling;
@@ -954,4 +915,6 @@
   bool TesselationFailFlag = false;
 
+  mol->getAtomCount();
+
   if (TesselStruct == NULL) {
     DoLog(1) && (Log() << Verbose(1) << "Allocating Tesselation struct ..." << endl);
@@ -1025,8 +988,7 @@
 //  // look whether all points are inside of the convex envelope, otherwise add them via degenerated triangles
 //  //->InsertStraddlingPoints(mol, LCList);
-//  mol->GoToFirst();
+//  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
 //  class TesselPoint *Runner = NULL;
-//  while (!mol->IsEnd()) {
-//    Runner = mol->GetPoint();
+//    Runner = *iter;
 //    Log() << Verbose(1) << "Checking on " << Runner->Name << " ... " << endl;
 //    if (!->IsInnerPoint(Runner, LCList)) {
@@ -1036,5 +998,4 @@
 //      Log() << Verbose(2) << Runner->Name << " is inside of or on envelope." << endl;
 //    }
-//    mol->GoToNext();
 //  }
 
@@ -1045,6 +1006,8 @@
   status = CheckListOfBaselines(TesselStruct);
 
+  cout << "before correction" << endl;
+
   // store before correction
-  StoreTrianglesinFile(mol, (const Tesselation *&)TesselStruct, filename, "");
+  StoreTrianglesinFile(mol, TesselStruct, filename, "");
 
 //  // correct degenerated polygons
@@ -1056,5 +1019,6 @@
   // write final envelope
   CalculateConcavityPerBoundaryPoint(TesselStruct);
-  StoreTrianglesinFile(mol, (const Tesselation *&)TesselStruct, filename, "");
+  cout << "after correction" << endl;
+  StoreTrianglesinFile(mol, TesselStruct, filename, "");
 
   if (freeLC)
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/builder.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -53,4 +53,5 @@
 
 #include <cstring>
+#include <cstdlib>
 
 #include "analysis_bonds.hpp"
@@ -864,6 +865,6 @@
 
         mol->CountAtoms(); // recount atoms
-        if (mol->AtomCount != 0) {  // if there is more than none
-          count = mol->AtomCount;  // is changed becausing of adding, thus has to be stored away beforehand
+        if (mol->getAtomCount() != 0) {  // if there is more than none
+          count = mol->getAtomCount();  // is changed becausing of adding, thus has to be stored away beforehand
           Elements = new element *[count];
           vectors = new Vector *[count];
@@ -1295,5 +1296,5 @@
   // generate some KeySets
   DoLog(0) && (Log() << Verbose(0) << "Generating KeySets." << endl);
-  KeySet TestSets[mol->AtomCount+1];
+  KeySet TestSets[mol->getAtomCount()+1];
   i=1;
   while (Walker->next != mol->end) {
@@ -1306,5 +1307,5 @@
   DoLog(0) && (Log() << Verbose(0) << "Testing insertion of already present item in KeySets." << endl);
   KeySetTestPair test;
-  test = TestSets[mol->AtomCount-1].insert(Walker->nr);
+  test = TestSets[mol->getAtomCount()-1].insert(Walker->nr);
   if (test.second) {
     DoLog(1) && (Log() << Verbose(1) << "Insertion worked?!" << endl);
@@ -1312,6 +1313,6 @@
     DoLog(1) && (Log() << Verbose(1) << "Insertion rejected: Present object is " << (*test.first) << "." << endl);
   }
-  TestSets[mol->AtomCount].insert(mol->end->previous->nr);
-  TestSets[mol->AtomCount].insert(mol->end->previous->previous->previous->nr);
+  TestSets[mol->getAtomCount()].insert(mol->end->previous->nr);
+  TestSets[mol->getAtomCount()].insert(mol->end->previous->previous->previous->nr);
 
   // constructing Graph structure
@@ -1321,10 +1322,10 @@
   // insert KeySets into Subgraphs
   DoLog(0) && (Log() << Verbose(0) << "Inserting KeySets into Subgraph class." << endl);
-  for (int j=0;j<mol->AtomCount;j++) {
+  for (int j=0;j<mol->getAtomCount();j++) {
     Subgraphs.insert(GraphPair (TestSets[j],pair<int, double>(counter++, 1.)));
   }
   DoLog(0) && (Log() << Verbose(0) << "Testing insertion of already present item in Subgraph." << endl);
   GraphTestPair test2;
-  test2 = Subgraphs.insert(GraphPair (TestSets[mol->AtomCount],pair<int, double>(counter++, 1.)));
+  test2 = Subgraphs.insert(GraphPair (TestSets[mol->getAtomCount()],pair<int, double>(counter++, 1.)));
   if (test2.second) {
     DoLog(1) && (Log() << Verbose(1) << "Insertion worked?!" << endl);
@@ -1494,5 +1495,5 @@
  */
 static int ParseCommandLineOptions(int argc, char **argv, MoleculeListClass *&molecules, periodentafel *&periode,
-                                   config& configuration, char *&ConfigFileName, set<int> &ArgcList)
+                                   config& configuration, char **ConfigFileName, set<int> &ArgcList)
 {
   Vector x,y,z,n;  // coordinates for absolute point in cell volume
@@ -1512,5 +1513,5 @@
   molecule *mol = NULL;
   string BondGraphFileName("\n");
-  strncpy(configuration.databasepath, LocalPath, MAXSTRINGSIZE-1);
+  bool DatabasePathGiven = false;
 
   if (argc > 1) { // config file specified as option
@@ -1529,28 +1530,23 @@
             break;
           case 'v':
-            ArgcList.insert(argptr-1);
-            return(1);
-            break;
-          case 'V':
+            setVerbosity(atoi(argv[argptr]));
             ArgcList.insert(argptr-1);
             ArgcList.insert(argptr);
             argptr++;
             break;
+          case 'V':
+            ArgcList.insert(argptr-1);
+            return(1);
+            break;
           case 'B':
+            ArgcList.insert(argptr-1);
+            ArgcList.insert(argptr);
+            ArgcList.insert(argptr+1);
+            ArgcList.insert(argptr+2);
+            ArgcList.insert(argptr+3);
+            ArgcList.insert(argptr+4);
+            ArgcList.insert(argptr+5);
+            argptr+=6;
             if (ExitFlag == 0) ExitFlag = 1;
-            if ((argptr+5 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) ) {
-              ExitFlag = 255;
-              DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl);
-              performCriticalExit();
-            } else {
-              SaveFlag = true;
-              j = -1;
-              DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl);
-              double * const cell_size = World::getInstance().getDomain();
-              for (int i=0;i<6;i++) {
-                cell_size[i] = atof(argv[argptr+i]);
-              }
-              argptr+=6;
-            }
             break;
           case 'e':
@@ -1561,4 +1557,5 @@
               DoLog(0) && (Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl);
               strncpy (configuration.databasepath, argv[argptr], MAXSTRINGSIZE-1);
+              DatabasePathGiven = true;
               argptr+=1;
             }
@@ -1574,4 +1571,15 @@
             }
             break;
+          case 'M':
+            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
+              ExitFlag = 255;
+              DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -M <basis name>" << endl);
+              performCriticalExit();
+            } else {
+              configuration.basis = argv[argptr];
+              DoLog(1) && (Log() << Verbose(1) << "Setting MPQC basis to " << configuration.basis << "." << endl);
+              argptr+=1;
+            }
+            break;
           case 'n':
             DoLog(0) && (Log() << Verbose(0) << "I won't parse trajectories." << endl);
@@ -1581,5 +1589,5 @@
             {
               World::getInstance().setDefaultName(argv[argptr]);
-              DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << *World::getInstance().getDefaultName() << "." << endl);
+              DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << World::getInstance().getDefaultName() << "." << endl);
             }
             break;
@@ -1593,11 +1601,12 @@
 
     // 3a. Parse the element database
-    if (periode->LoadPeriodentafel(configuration.databasepath)) {
-      DoLog(0) && (Log() << Verbose(0) << "Element list loaded successfully." << endl);
-      //periode->Output();
-    } else {
-      DoLog(0) && (Log() << Verbose(0) << "Element list loading failed." << endl);
-      return 1;
-    }
+    if (DatabasePathGiven)
+      if (periode->LoadPeriodentafel(configuration.databasepath)) {
+        DoLog(0) && (Log() << Verbose(0) << "Element list loaded successfully." << endl);
+        //periode->Output();
+      } else {
+        DoLog(0) && (Log() << Verbose(0) << "Element list loading failed." << endl);
+        return 1;
+      }
     // 3b. Find config file name and parse if possible, also BondGraphFileName
     if (argv[1][0] != '-') {
@@ -1613,5 +1622,5 @@
         } else {
           DoLog(0) && (Log() << Verbose(0) << "Empty configuration file." << endl);
-          ConfigFileName = argv[1];
+          strcpy(*ConfigFileName, argv[1]);
           configPresent = empty;
           output.close();
@@ -1619,15 +1628,15 @@
       } else {
         test.close();
-        ConfigFileName = argv[1];
+        strcpy(*ConfigFileName, argv[1]);
         DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
-        switch (configuration.TestSyntax(ConfigFileName, periode)) {
+        switch (configuration.TestSyntax(*ConfigFileName, periode)) {
           case 1:
             DoLog(0) && (Log() << Verbose(0) << "new syntax." << endl);
-            configuration.Load(ConfigFileName, BondGraphFileName, periode, molecules);
+            configuration.Load(*ConfigFileName, BondGraphFileName, periode, molecules);
             configPresent = present;
             break;
           case 0:
             DoLog(0) && (Log() << Verbose(0) << "old syntax." << endl);
-            configuration.LoadOld(ConfigFileName, BondGraphFileName, periode, molecules);
+            configuration.LoadOld(*ConfigFileName, BondGraphFileName, periode, molecules);
             configPresent = present;
             break;
@@ -1650,6 +1659,6 @@
        mol = World::getInstance().createMolecule();
        mol->ActiveFlag = true;
-       if (ConfigFileName != NULL)
-         mol->SetNameFromFilename(ConfigFileName);
+       if (*ConfigFileName != NULL)
+         mol->SetNameFromFilename(*ConfigFileName);
        molecules->insert(mol);
      }
@@ -1705,5 +1714,5 @@
                 if (first->type != NULL) {
                   mol->AddAtom(first);  // add to molecule
-                  if ((configPresent == empty) && (mol->AtomCount != 0))
+                  if ((configPresent == empty) && (mol->getAtomCount() != 0))
                     configPresent = present;
                 } else
@@ -1718,15 +1727,4 @@
         if (configPresent == present) {
           switch(argv[argptr-1][1]) {
-            case 'M':
-              if ((argptr >= argc) || (argv[argptr][0] == '-')) {
-                ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl);
-                performCriticalExit();
-              } else {
-                configuration.basis = argv[argptr];
-                DoLog(1) && (Log() << Verbose(1) << "Setting MPQC basis to " << configuration.basis << "." << endl);
-                argptr+=1;
-              }
-              break;
             case 'D':
               if (ExitFlag == 0) ExitFlag = 1;
@@ -1734,5 +1732,5 @@
                 DoLog(1) && (Log() << Verbose(1) << "Depth-First-Search Analysis." << endl);
                 MoleculeLeafClass *Subgraphs = NULL;      // list of subgraphs from DFS analysis
-                int *MinimumRingSize = new int[mol->AtomCount];
+                int *MinimumRingSize = new int[mol->getAtomCount()];
                 atom ***ListOfLocalAtoms = NULL;
                 class StackClass<bond *> *BackEdgeStack = NULL;
@@ -1754,6 +1752,6 @@
                   delete(Subgraphs);
                   for (int i=0;i<FragmentCounter;i++)
-                    Free(&ListOfLocalAtoms[i]);
-                  Free(&ListOfLocalAtoms);
+                    delete[](ListOfLocalAtoms[i]);
+                  delete[](ListOfLocalAtoms);
                 }
                 delete(BackEdgeStack);
@@ -1795,5 +1793,5 @@
                         if ((argptr+6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (!IsValidNumber(argv[argptr+2])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-')) {
                           ExitFlag = 255;
-                          DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C E <Z1> <Z2> <output> <bin output>" << endl);
+                          DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C E <Z1> <Z2> <output> <bin output> <binstart> <binend>" << endl);
                           performCriticalExit();
                         } else {
@@ -1810,5 +1808,5 @@
                           else
                             correlationmap = PairCorrelation(molecules, elemental, elemental2);
-                          //OutputCorrelationToSurface(&output, correlationmap);
+                          OutputPairCorrelation(&output, correlationmap);
                           BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd );
                           OutputCorrelation ( &binoutput, binmap );
@@ -1826,5 +1824,5 @@
                         if ((argptr+8 >= argc) || (!IsValidNumber(argv[argptr+1])) ||  (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+7])) || (!IsValidNumber(argv[argptr+8])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-') || (argv[argptr+5][0] == '-') || (argv[argptr+6][0] == '-')) {
                           ExitFlag = 255;
-                          DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C P <Z1> <x> <y> <z> <output> <bin output>" << endl);
+                          DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C P <Z1> <x> <y> <z> <output> <bin output> <binstart> <binend>" << endl);
                           performCriticalExit();
                         } else {
@@ -1841,5 +1839,5 @@
                           else
                             correlationmap = CorrelationToPoint(molecules, elemental, Point);
-                          //OutputCorrelationToSurface(&output, correlationmap);
+                          OutputCorrelationToPoint(&output, correlationmap);
                           BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd );
                           OutputCorrelation ( &binoutput, binmap );
@@ -1882,10 +1880,10 @@
                           int counter  = 0;
                           for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
-                            if ((Boundary == NULL) || (Boundary->AtomCount < (*BigFinder)->AtomCount)) {
+                            if ((Boundary == NULL) || (Boundary->getAtomCount() < (*BigFinder)->getAtomCount())) {
                               Boundary = *BigFinder;
                             }
                             counter++;
                           }
-                          bool *Actives = Malloc<bool>(counter, "ParseCommandLineOptions() - case C -- *Actives");
+                          bool *Actives = new bool[counter];
                           counter = 0;
                           for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
@@ -1913,7 +1911,8 @@
                           output.close();
                           binoutput.close();
+                          counter = 0;
                           for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++)
                             (*BigFinder)->ActiveFlag = Actives[counter++];
-                          Free(&Actives);
+                          delete[](Actives);
                           delete(LCList);
                           delete(TesselStruct);
@@ -1941,4 +1940,5 @@
                 performCriticalExit();
               } else {
+                mol->getAtomCount();
                 SaveFlag = true;
                 DoLog(1) && (Log() << Verbose(1) << "Changing atom " << argv[argptr] << " to element " << argv[argptr+1] << "." << endl);
@@ -1950,52 +1950,19 @@
             case 'F':
               if (ExitFlag == 0) ExitFlag = 1;
-              MaxDistance = -1;
-              if (argv[argptr-1][2] == 'F') { // option is -FF?
-                // fetch first argument as max distance to surface
-                MaxDistance = atof(argv[argptr++]);
-                DoLog(0) && (Log() << Verbose(0) << "Filling with maximum layer distance of " << MaxDistance << "." << endl);
-              }
-              if ((argptr+7 >=argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (!IsValidNumber(argv[argptr+7]))) {
-                ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for filling box with water: -F <xyz of filler> <dist_x> <dist_y> <dist_z> <boundary> <randatom> <randmol> <DoRotate>" << endl);
-                performCriticalExit();
-              } else {
-                SaveFlag = true;
-                DoLog(1) && (Log() << Verbose(1) << "Filling Box with water molecules." << endl);
-                // construct water molecule
-                molecule *filler = World::getInstance().createMolecule();
-                if (!filler->AddXYZFile(argv[argptr])) {
-                  DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse filler molecule from " << argv[argptr] << "." << endl);
-                }
-                filler->SetNameFromFilename(argv[argptr]);
-                configuration.BG->ConstructBondGraph(filler);
-                molecule *Filling = NULL;
-                atom *second = NULL, *third = NULL;
-                first = World::getInstance().createAtom();
-                first->type = periode->FindElement(1);
-                first->x = Vector(0.441, -0.143, 0.);
-                filler->AddAtom(first);
-                second = World::getInstance().createAtom();
-                second->type = periode->FindElement(1);
-                second->x = Vector(-0.464, 1.137, 0.0);
-                filler->AddAtom(second);
-                third = World::getInstance().createAtom();
-                third->type = periode->FindElement(8);
-                third->x = Vector(-0.464, 0.177, 0.);
-                filler->AddAtom(third);
-                filler->AddBond(first, third, 1);
-                filler->AddBond(second, third, 1);
-                // call routine
-                double distance[NDIM];
-                for (int i=0;i<NDIM;i++)
-                  distance[i] = atof(argv[argptr+i+1]);
-                Filling = FillBoxWithMolecule(molecules, filler, configuration, MaxDistance, distance, atof(argv[argptr+4]), atof(argv[argptr+5]), atof(argv[argptr+6]), atoi(argv[argptr+7]));
-                if (Filling != NULL) {
-                  Filling->ActiveFlag = false;
-                  molecules->insert(Filling);
-                }
-                World::getInstance().destroyMolecule(filler);
-                argptr+=6;
-              }
+              ArgcList.insert(argptr-1);
+              ArgcList.insert(argptr);
+              ArgcList.insert(argptr+1);
+              ArgcList.insert(argptr+2);
+              ArgcList.insert(argptr+3);
+              ArgcList.insert(argptr+4);
+              ArgcList.insert(argptr+5);
+              ArgcList.insert(argptr+6);
+              ArgcList.insert(argptr+7);
+              ArgcList.insert(argptr+8);
+              ArgcList.insert(argptr+9);
+              ArgcList.insert(argptr+10);
+              ArgcList.insert(argptr+11);
+              ArgcList.insert(argptr+12);
+              argptr+=13;
               break;
             case 'A':
@@ -2007,7 +1974,7 @@
               } else {
                 DoLog(0) && (Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl);
-                ifstream *input = new ifstream(argv[argptr]);
-                mol->CreateAdjacencyListFromDbondFile(input);
-                input->close();
+                ifstream input(argv[argptr]);
+                mol->CreateAdjacencyListFromDbondFile(&input);
+                input.close();
                 argptr+=1;
               }
@@ -2059,11 +2026,10 @@
                 int counter  = 0;
                 for (MoleculeList::iterator BigFinder = molecules->ListOfMolecules.begin(); BigFinder != molecules->ListOfMolecules.end(); BigFinder++) {
-                  (*BigFinder)->CountAtoms();
-                  if ((Boundary == NULL) || (Boundary->AtomCount < (*BigFinder)->AtomCount)) {
+                  if ((Boundary == NULL) || (Boundary->getAtomCount() < (*BigFinder)->getAtomCount())) {
                     Boundary = *BigFinder;
                   }
                   counter++;
                 }
-                DoLog(1) && (Log() << Verbose(1) << "Biggest molecule has " << Boundary->AtomCount << " atoms." << endl);
+                DoLog(1) && (Log() << Verbose(1) << "Biggest molecule has " << Boundary->getAtomCount() << " atoms." << endl);
                 start = clock();
                 LCList = new LinkedCell(Boundary, atof(argv[argptr])*2.);
@@ -2100,5 +2066,5 @@
               if ((argptr >= argc) || (argv[argptr][0] == '-')) {
                 ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl);
+                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for linear interpolation: -L <step0> <step1> <prefix> <identity mapping?>" << endl);
                 performCriticalExit();
               } else {
@@ -2132,26 +2098,25 @@
             case 'R':
               if (ExitFlag == 0) ExitFlag = 1;
-              if ((argptr+1 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])))  {
+              if ((argptr+3 >= argc) || (argv[argptr][0] == '-') || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])))  {
                 ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl);
+                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <x> <y> <z> <distance>" << endl);
                 performCriticalExit();
               } else {
                 SaveFlag = true;
-                DoLog(1) && (Log() << Verbose(1) << "Removing atoms around " << argv[argptr] << " with radius " << argv[argptr+1] << "." << endl);
-                double tmp1 = atof(argv[argptr+1]);
-                atom *third = mol->FindAtom(atoi(argv[argptr]));
-                atom *first = mol->start;
-                if ((third != NULL) && (first != mol->end)) {
-                  atom *second = first->next;
-                  while(second != mol->end) {
-                    first = second;
-                    second = first->next;
-                    if (first->x.DistanceSquared(third->x) > tmp1*tmp1) // distance to first above radius ...
-                      mol->RemoveAtom(first);
+                const double radius = atof(argv[argptr+3]);
+                Vector point(atof(argv[argptr]),atof(argv[argptr+1]),atof(argv[argptr+2]));
+                DoLog(1) && (Log() << Verbose(1) << "Removing atoms around " << point << " with radius " << radius << "." << endl);
+                atom *Walker = NULL;
+                molecule::iterator advancer = mol->begin();
+                for(molecule::iterator iter = advancer; advancer != mol->end();) {
+                  iter = advancer++;
+                  if ((*iter)->x.DistanceSquared(point) > radius*radius){ // distance to first above radius ...
+                    Walker = (*iter);
+                    DoLog(1) && (Log() << Verbose(1) << "Removing atom " << *Walker << "." << endl);
+                    mol->RemoveAtom(*(iter));
+                    World::getInstance().destroyAtom(Walker);
                   }
-                } else {
-                  DoeLog(1) && (eLog()<< Verbose(1) << "Removal failed due to missing atoms on molecule or wrong id." << endl);
                 }
-                argptr+=2;
+                argptr+=4;
               }
               break;
@@ -2190,24 +2155,13 @@
             case 's':
               if (ExitFlag == 0) ExitFlag = 1;
-              if ((argptr >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
+              if ((argptr+2 >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
                 ExitFlag = 255;
                 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl);
                 performCriticalExit();
               } else {
-                SaveFlag = true;
-                j = -1;
-                DoLog(1) && (Log() << Verbose(1) << "Scaling all ion positions by factor." << endl);
-                factor = new double[NDIM];
-                factor[0] = atof(argv[argptr]);
-                factor[1] = atof(argv[argptr+1]);
-                factor[2] = atof(argv[argptr+2]);
-                mol->Scale((const double ** const)&factor);
-                double * const cell_size = World::getInstance().getDomain();
-                for (int i=0;i<NDIM;i++) {
-                  j += i+1;
-                  x[i] = atof(argv[NDIM+i]);
-                  cell_size[j]*=factor[i];
-                }
-                delete[](factor);
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
                 argptr+=3;
               }
@@ -2220,13 +2174,11 @@
                 performCriticalExit();
               } else {
-                SaveFlag = true;
-                j = -1;
-                DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl);
-                double * const cell_size = World::getInstance().getDomain();
-                for (int i=0;i<6;i++) {
-                  cell_size[i] = atof(argv[argptr+i]);
-                }
-                // center
-                mol->CenterInBox();
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
+                ArgcList.insert(argptr+3);
+                ArgcList.insert(argptr+4);
+                ArgcList.insert(argptr+5);
                 argptr+=6;
               }
@@ -2239,13 +2191,11 @@
                 performCriticalExit();
               } else {
-                SaveFlag = true;
-                j = -1;
-                DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given simulation box." << endl);
-                double * const cell_size = World::getInstance().getDomain();
-                for (int i=0;i<6;i++) {
-                  cell_size[i] = atof(argv[argptr+i]);
-                }
-                // center
-                mol->BoundInBox();
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
+                ArgcList.insert(argptr+3);
+                ArgcList.insert(argptr+4);
+                ArgcList.insert(argptr+5);
                 argptr+=6;
               }
@@ -2258,20 +2208,8 @@
                 performCriticalExit();
               } else {
-                SaveFlag = true;
-                j = -1;
-                DoLog(1) && (Log() << Verbose(1) << "Centering atoms in config file within given additional boundary." << endl);
-                // make every coordinate positive
-                mol->CenterEdge(&x);
-                // update Box of atoms by boundary
-                mol->SetBoxDimension(&x);
-                // translate each coordinate by boundary
-                double * const cell_size = World::getInstance().getDomain();
-                j=-1;
-                for (int i=0;i<NDIM;i++) {
-                  j += i+1;
-                  x[i] = atof(argv[argptr+i]);
-                  cell_size[j] += x[i]*2.;
-                }
-                mol->Translate((const Vector *)&x);
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
                 argptr+=3;
               }
@@ -2279,9 +2217,5 @@
             case 'O':
               if (ExitFlag == 0) ExitFlag = 1;
-              SaveFlag = true;
-              DoLog(1) && (Log() << Verbose(1) << "Centering atoms on edge and setting box dimensions." << endl);
-              x.Zero();
-              mol->CenterEdge(&x);
-              mol->SetBoxDimension(&x);
+              ArgcList.insert(argptr-1);
               argptr+=0;
               break;
@@ -2293,4 +2227,5 @@
                 performCriticalExit();
               } else {
+                mol->getAtomCount();
                 SaveFlag = true;
                 DoLog(1) && (Log() << Verbose(1) << "Removing atom " << argv[argptr] << "." << endl);
@@ -2312,5 +2247,5 @@
                 mol->CreateAdjacencyList(atof(argv[argptr]), configuration.GetIsAngstroem(), &BondGraph::CovalentMinMaxDistance, NULL);
                 DoLog(0) && (Log() << Verbose(0) << "Fragmenting molecule with current connection matrix ..." << endl);
-                if (mol->first->next != mol->last) {
+                if (mol->hasBondStructure()) {
                   ExitFlag = mol->FragmentMolecule(atoi(argv[argptr+1]), &configuration);
                 }
@@ -2401,53 +2336,9 @@
                 performCriticalExit();
               } else {
-                SaveFlag = true;
-                double * const cell_size = World::getInstance().getDomain();
-                for (int axis = 1; axis <= NDIM; axis++) {
-                  int faktor = atoi(argv[argptr++]);
-                  int count;
-                  const element ** Elements;
-                  Vector ** vectors;
-                  if (faktor < 1) {
-                    DoeLog(1) && (eLog()<< Verbose(1) << "Repetition factor mus be greater than 1!" << endl);
-                    faktor = 1;
-                  }
-                  mol->CountAtoms();  // recount atoms
-                  if (mol->AtomCount != 0) {  // if there is more than none
-                    count = mol->AtomCount;   // is changed becausing of adding, thus has to be stored away beforehand
-                    Elements = new const element *[count];
-                    vectors = new Vector *[count];
-                    j = 0;
-                    first = mol->start;
-                    while (first->next != mol->end) {  // make a list of all atoms with coordinates and element
-                      first = first->next;
-                      Elements[j] = first->type;
-                      vectors[j] = &first->x;
-                      j++;
-                    }
-                    if (count != j)
-                      DoeLog(1) && (eLog()<< Verbose(1) << "AtomCount " << count << " is not equal to number of atoms in molecule " << j << "!" << endl);
-                    x.Zero();
-                    y.Zero();
-                    y[abs(axis)-1] = cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] * abs(axis)/axis; // last term is for sign, first is for magnitude
-                    for (int i=1;i<faktor;i++) {  // then add this list with respective translation factor times
-                      x += y; // per factor one cell width further
-                      for (int k=count;k--;) { // go through every atom of the original cell
-                        first = World::getInstance().createAtom(); // create a new body
-                        first->x = (*vectors[k]) + x;
-                        first->type = Elements[k];  // insert original element
-                        mol->AddAtom(first);        // and add to the molecule (which increments ElementsInMolecule, AtomCount, ...)
-                      }
-                    }
-                    // free memory
-                    delete[](Elements);
-                    delete[](vectors);
-                    // correct cell size
-                    if (axis < 0) { // if sign was negative, we have to translate everything
-                      x =(-(faktor-1)) * y;
-                      mol->Translate(&x);
-                    }
-                    cell_size[(abs(axis) == 2) ? 2 : ((abs(axis) == 3) ? 5 : 0)] *= faktor;
-                  }
-                }
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
+                argptr+=3;
               }
               break;
@@ -2461,5 +2352,5 @@
     } while (argptr < argc);
     if (SaveFlag)
-      configuration.SaveAll(ConfigFileName, periode, molecules);
+      configuration.SaveAll(*ConfigFileName, periode, molecules);
   } else {  // no arguments, hence scan the elements db
     if (periode->LoadPeriodentafel(configuration.databasepath))
@@ -2476,9 +2367,4 @@
 void cleanUp(){
   World::purgeInstance();
-  Log() << Verbose(0) <<  "Maximum of allocated memory: "
-    << MemoryUsageObserver::getInstance()->getMaximumUsedMemory() << endl;
-  Log() << Verbose(0) <<  "Remaining non-freed memory: "
-    << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl;
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
   errorLogger::purgeInstance();
@@ -2488,4 +2374,5 @@
   ActionRegistry::purgeInstance();
   ActionHistory::purgeInstance();
+  Memory::getState();
 }
 
@@ -2493,4 +2380,7 @@
 {
     config *configuration = World::getInstance().getConfig();
+    // while we are non interactive, we want to abort from asserts
+    //ASSERT_DO(Assert::Abort);
+    molecule *mol = NULL;
     Vector x, y, z, n;
     ifstream test;
@@ -2499,5 +2389,7 @@
     char **Arguments = NULL;
     int ArgcSize = 0;
+    int ExitFlag = 0;
     bool ArgumentsCopied = false;
+    char *ConfigFileName = new char[MAXSTRINGSIZE];
 
     // print version check whether arguments are present at all
@@ -2505,4 +2397,6 @@
     if (argc < 2) {
       cout << "Obtain help with " << argv[0] << " -h." << endl;
+      cleanUp();
+      Memory::getState();
       return(1);
     }
@@ -2512,4 +2406,11 @@
     // need to init the history before any action is created
     ActionHistory::init();
+
+    // In the interactive mode, we can leave the user the choice in case of error
+    ASSERT_DO(Assert::Ask);
+
+    // from this moment on, we need to be sure to deeinitialize in the correct order
+    // this is handled by the cleanup function
+    atexit(cleanUp);
 
     // Parse command line options and if present create respective UI
@@ -2518,12 +2419,11 @@
       ArgcList.insert(0); // push back program!
       ArgcList.insert(1); // push back config file name
-      char ConfigFileName[MAXSTRINGSIZE];
       // handle arguments by ParseCommandLineOptions()
-      ParseCommandLineOptions(argc,argv,World::getInstance().getMolecules(),World::getInstance().getPeriode(),*World::getInstance().getConfig(), (char *&)ConfigFileName, ArgcList);
+      ExitFlag = ParseCommandLineOptions(argc,argv,World::getInstance().getMolecules(),World::getInstance().getPeriode(),*World::getInstance().getConfig(), &ConfigFileName, ArgcList);
       // copy all remaining arguments to a new argv
-      Arguments = Malloc<char *>(ArgcList.size(), "main - **Arguments");
+      Arguments = new char *[ArgcList.size()];
       cout << "The following arguments are handled by CommandLineParser: ";
       for (set<int>::iterator ArgcRunner = ArgcList.begin(); ArgcRunner != ArgcList.end(); ++ArgcRunner) {
-        Arguments[ArgcSize] = Malloc<char>(strlen(argv[*ArgcRunner])+2, "main - *Arguments[]");
+        Arguments[ArgcSize] = new char[strlen(argv[*ArgcRunner])+2];
         strcpy(Arguments[ArgcSize], argv[*ArgcRunner]);
         cout << " " << argv[*ArgcRunner];
@@ -2550,20 +2450,16 @@
     }
 
-    if(World::getInstance().getPeriode()->StorePeriodentafel(configuration->databasepath))
-        Log() << Verbose(0) << "Saving of elements.db successful." << endl;
-
-    else
-        Log() << Verbose(0) << "Saving of elements.db failed." << endl;
+    Log() << Verbose(0) << "Saving to " << ConfigFileName << "." << endl;
+    World::getInstance().getConfig()->SaveAll(ConfigFileName, World::getInstance().getPeriode(), World::getInstance().getMolecules());
 
   // free the new argv
   if (ArgumentsCopied) {
     for (int i=0; i<ArgcSize;i++)
-      Free(&Arguments[i]);
-    Free(&Arguments);
+      delete[](Arguments[i]);
+    delete[](Arguments);
   }
-
-  cleanUp();
-  Memory::getState();
-  return (0);
+  delete[](ConfigFileName);
+
+  return (ExitFlag == 1 ? 0 : ExitFlag);
 }
 
Index: src/config.cpp
===================================================================
--- src/config.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/config.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -14,4 +14,5 @@
 #include "element.hpp"
 #include "helpers.hpp"
+#include "info.hpp"
 #include "lists.hpp"
 #include "log.hpp"
@@ -93,5 +94,5 @@
     return;
   } else
-    buffer = Malloc<char*>(NoLines, "ConfigFileBuffer::ConfigFileBuffer: **buffer");
+    buffer = new char *[NoLines];
 
   // scan each line and put into buffer
@@ -99,5 +100,5 @@
   int i;
   do {
-    buffer[lines] = Malloc<char>(MAXSTRINGSIZE, "ConfigFileBuffer::ConfigFileBuffer: *buffer[]");
+    buffer[lines] = new char[MAXSTRINGSIZE];
     file->getline(buffer[lines], MAXSTRINGSIZE-1);
     i = strlen(buffer[lines]);
@@ -119,7 +120,7 @@
 {
   for(int i=0;i<NoLines;++i)
-    Free(&buffer[i]);
-  Free(&buffer);
-  Free(&LineMapping);
+    delete[](buffer[i]);
+  delete[](buffer);
+  delete[](LineMapping);
 }
 
@@ -129,5 +130,5 @@
 void ConfigFileBuffer::InitMapping()
 {
-  LineMapping = Malloc<int>(NoLines, "ConfigFileBuffer::InitMapping: *LineMapping");
+  LineMapping = new int[NoLines];
   for (int i=0;i<NoLines;i++)
     LineMapping[i] = i;
@@ -179,10 +180,10 @@
     MaxLevel(5), RiemannTensor(0), LevRFactor(0), RiemannLevel(0), Lev0Factor(2), RTActualUse(0), AddPsis(0), RCut(20.), StructOpt(0), IsAngstroem(1), RelativeCoord(0),
     MaxTypes(0) {
-  mainname = Malloc<char>(MAXSTRINGSIZE,"config constructor: mainname");
-  defaultpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: defaultpath");
-  pseudopotpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: pseudopotpath");
-  databasepath = Malloc<char>(MAXSTRINGSIZE,"config constructor: databasepath");
-  configpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: configpath");
-  configname = Malloc<char>(MAXSTRINGSIZE,"config constructor: configname");
+  mainname = new char[MAXSTRINGSIZE];
+  defaultpath = new char[MAXSTRINGSIZE];
+  pseudopotpath = new char[MAXSTRINGSIZE];
+  databasepath = new char[MAXSTRINGSIZE];
+  configpath = new char[MAXSTRINGSIZE];
+  configname = new char[MAXSTRINGSIZE];
   strcpy(mainname,"pcp");
   strcpy(defaultpath,"not specified");
@@ -199,14 +200,14 @@
 config::~config()
 {
-  Free(&mainname);
-  Free(&defaultpath);
-  Free(&pseudopotpath);
-  Free(&databasepath);
-  Free(&configpath);
-  Free(&configname);
-  Free(&ThermostatImplemented);
+  delete[](mainname);
+  delete[](defaultpath);
+  delete[](pseudopotpath);
+  delete[](databasepath);
+  delete[](configpath);
+  delete[](configname);
+  delete[](ThermostatImplemented);
   for (int j=0;j<MaxThermostats;j++)
-    Free(&ThermostatNames[j]);
-  Free(&ThermostatNames);
+    delete[](ThermostatNames[j]);
+  delete[](ThermostatNames);
 
   if (BG != NULL)
@@ -218,8 +219,8 @@
 void config::InitThermostats()
 {
-  ThermostatImplemented = Malloc<int>(MaxThermostats, "config constructor: *ThermostatImplemented");
-  ThermostatNames = Malloc<char*>(MaxThermostats, "config constructor: *ThermostatNames");
+  ThermostatImplemented = new int[MaxThermostats];
+  ThermostatNames = new char *[MaxThermostats];
   for (int j=0;j<MaxThermostats;j++)
-    ThermostatNames[j] = Malloc<char>(12, "config constructor: ThermostatNames[]");
+    ThermostatNames[j] = new char[12];
 
   strcpy(ThermostatNames[0],"None");
@@ -242,5 +243,5 @@
 void config::ParseThermostats(class ConfigFileBuffer * const fb)
 {
-  char * const thermo = Malloc<char>(12, "IonsInitRead: thermo");
+  char * const thermo = new char[12];
   const int verbose = 0;
 
@@ -309,5 +310,5 @@
     Thermostat = None;
   }
-  Free(thermo);
+  delete[](thermo);
 };
 
@@ -1547,5 +1548,4 @@
   int AtomNo = -1;
   int MolNo = 0;
-  atom *Walker = NULL;
   FILE *f = NULL;
 
@@ -1560,30 +1560,30 @@
   fprintf(f, "# Created by MoleCuilder\n");
 
-  for (MoleculeList::const_iterator Runner = MolList->ListOfMolecules.begin(); Runner != MolList->ListOfMolecules.end(); Runner++) {
-    Walker = (*Runner)->start;
-    int *elementNo = Calloc<int>(MAX_ELEMENTS, "config::SavePDB - elementNo");
+  for (MoleculeList::const_iterator MolRunner = MolList->ListOfMolecules.begin(); MolRunner != MolList->ListOfMolecules.end(); MolRunner++) {
+    int *elementNo = new int[MAX_ELEMENTS];
+    for (int i=0;i<MAX_ELEMENTS;i++)
+      elementNo[i] = 0;
     AtomNo = 0;
-    while (Walker->next != (*Runner)->end) {
-      Walker = Walker->next;
-      sprintf(name, "%2s%2d",Walker->type->symbol, elementNo[Walker->type->Z]);
-      elementNo[Walker->type->Z] = (elementNo[Walker->type->Z]+1) % 100;   // confine to two digits
+    for (molecule::const_iterator iter = (*MolRunner)->begin(); iter != (*MolRunner)->end(); ++iter) {
+      sprintf(name, "%2s%2d",(*iter)->type->symbol, elementNo[(*iter)->type->Z]);
+      elementNo[(*iter)->type->Z] = (elementNo[(*iter)->type->Z]+1) % 100;   // confine to two digits
       fprintf(f,
              "ATOM %6u %-4s %4s%c%4u    %8.3f%8.3f%8.3f%6.2f%6.2f      %4s%2s%2s\n",
-             Walker->nr,                /* atom serial number */
+             (*iter)->nr,                /* atom serial number */
              name,         /* atom name */
-             (*Runner)->name,      /* residue name */
+             (*MolRunner)->name,      /* residue name */
              'a'+(unsigned char)(AtomNo % 26),           /* letter for chain */
              MolNo,         /* residue sequence number */
-             Walker->node->at(0),                 /* position X in Angstroem */
-             Walker->node->at(1),                 /* position Y in Angstroem */
-             Walker->node->at(2),                 /* position Z in Angstroem */
-             (double)Walker->type->Valence,         /* occupancy */
-             (double)Walker->type->NoValenceOrbitals,          /* temperature factor */
+             (*iter)->node->at(0),                 /* position X in Angstroem */
+             (*iter)->node->at(1),                 /* position Y in Angstroem */
+             (*iter)->node->at(2),                 /* position Z in Angstroem */
+             (double)(*iter)->type->Valence,         /* occupancy */
+             (double)(*iter)->type->NoValenceOrbitals,          /* temperature factor */
              "0",            /* segment identifier */
-             Walker->type->symbol,    /* element symbol */
+             (*iter)->type->symbol,    /* element symbol */
              "0");           /* charge */
       AtomNo++;
     }
-    Free(&elementNo);
+    delete[](elementNo);
     MolNo++;
   }
@@ -1601,8 +1601,9 @@
 {
   int AtomNo = -1;
-  atom *Walker = NULL;
   FILE *f = NULL;
 
-  int *elementNo = Calloc<int>(MAX_ELEMENTS, "config::SavePDB - elementNo");
+  int *elementNo = new int[MAX_ELEMENTS];
+  for (int i=0;i<MAX_ELEMENTS;i++)
+    elementNo[i] = 0;
   char name[MAXSTRINGSIZE];
   strncpy(name, filename, MAXSTRINGSIZE-1);
@@ -1611,34 +1612,32 @@
   if (f == NULL) {
     DoeLog(1) && (eLog()<< Verbose(1) << "Cannot open pdb output file:" << name << endl);
-    Free(&elementNo);
+    delete[](elementNo);
     return false;
   }
   fprintf(f, "# Created by MoleCuilder\n");
 
-  Walker = mol->start;
   AtomNo = 0;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    sprintf(name, "%2s%2d",Walker->type->symbol, elementNo[Walker->type->Z]);
-    elementNo[Walker->type->Z] = (elementNo[Walker->type->Z]+1) % 100;   // confine to two digits
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    sprintf(name, "%2s%2d",(*iter)->type->symbol, elementNo[(*iter)->type->Z]);
+    elementNo[(*iter)->type->Z] = (elementNo[(*iter)->type->Z]+1) % 100;   // confine to two digits
     fprintf(f,
            "ATOM %6u %-4s %4s%c%4u    %8.3f%8.3f%8.3f%6.2f%6.2f      %4s%2s%2s\n",
-           Walker->nr,                /* atom serial number */
+           (*iter)->nr,                /* atom serial number */
            name,         /* atom name */
            mol->name,      /* residue name */
            'a'+(unsigned char)(AtomNo % 26),           /* letter for chain */
            0,         /* residue sequence number */
-           Walker->node->at(0),                 /* position X in Angstroem */
-           Walker->node->at(1),                 /* position Y in Angstroem */
-           Walker->node->at(2),                 /* position Z in Angstroem */
-           (double)Walker->type->Valence,         /* occupancy */
-           (double)Walker->type->NoValenceOrbitals,          /* temperature factor */
+           (*iter)->node->at(0),                 /* position X in Angstroem */
+           (*iter)->node->at(1),                 /* position Y in Angstroem */
+           (*iter)->node->at(2),                 /* position Z in Angstroem */
+           (double)(*iter)->type->Valence,         /* occupancy */
+           (double)(*iter)->type->NoValenceOrbitals,          /* temperature factor */
            "0",            /* segment identifier */
-           Walker->type->symbol,    /* element symbol */
+           (*iter)->type->symbol,    /* element symbol */
            "0");           /* charge */
     AtomNo++;
   }
   fclose(f);
-  Free(&elementNo);
+  delete[](elementNo);
 
   return true;
@@ -1653,5 +1652,4 @@
 bool config::SaveTREMOLO(const char * const filename, const molecule * const mol) const
 {
-  atom *Walker = NULL;
   ofstream *output = NULL;
   stringstream * const fname = new stringstream;
@@ -1666,27 +1664,23 @@
 
   // scan maximum number of neighbours
-  Walker = mol->start;
   int MaxNeighbours = 0;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    const int count = Walker->ListOfBonds.size();
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    const int count = (*iter)->ListOfBonds.size();
     if (MaxNeighbours < count)
       MaxNeighbours = count;
   }
-  *output << "# ATOMDATA Id name resName resSeq x=3 charge type neighbors=" << MaxNeighbours << endl;
-
-  Walker = mol->start;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    *output << Walker->nr << "\t";
-    *output << Walker->Name << "\t";
+  *output << "# ATOMDATA Id name resName resSeq x=3 Charge type neighbors=" << MaxNeighbours << endl;
+
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    *output << (*iter)->nr << "\t";
+    *output << (*iter)->getName() << "\t";
     *output << mol->name << "\t";
     *output << 0 << "\t";
-    *output << Walker->node->at(0) << "\t" << Walker->node->at(1) << "\t" << Walker->node->at(2) << "\t";
-    *output << static_cast<double>(Walker->type->Valence) << "\t";
-    *output << Walker->type->symbol << "\t";
-    for (BondList::iterator runner = Walker->ListOfBonds.begin(); runner != Walker->ListOfBonds.end(); runner++)
-      *output << (*runner)->GetOtherAtom(Walker)->nr << "\t";
-    for(int i=Walker->ListOfBonds.size(); i < MaxNeighbours; i++)
+    *output << (*iter)->node->at(0) << "\t" << (*iter)->node->at(1) << "\t" << (*iter)->node->at(2) << "\t";
+    *output << static_cast<double>((*iter)->type->Valence) << "\t";
+    *output << (*iter)->type->symbol << "\t";
+    for (BondList::iterator runner = (*iter)->ListOfBonds.begin(); runner != (*iter)->ListOfBonds.end(); runner++)
+      *output << (*runner)->GetOtherAtom(*iter)->nr << "\t";
+    for(int i=(*iter)->ListOfBonds.size(); i < MaxNeighbours; i++)
       *output << "-\t";
     *output << endl;
@@ -1708,5 +1702,5 @@
 bool config::SaveTREMOLO(const char * const filename, const MoleculeListClass * const MolList) const
 {
-  atom *Walker = NULL;
+  Info FunctionInfo(__func__);
   ofstream *output = NULL;
   stringstream * const fname = new stringstream;
@@ -1723,26 +1717,24 @@
   int MaxNeighbours = 0;
   for (MoleculeList::const_iterator MolWalker = MolList->ListOfMolecules.begin(); MolWalker != MolList->ListOfMolecules.end(); MolWalker++) {
-    Walker = (*MolWalker)->start;
-    while (Walker->next != (*MolWalker)->end) {
-      Walker = Walker->next;
-      const int count = Walker->ListOfBonds.size();
+    for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+      const int count = (*iter)->ListOfBonds.size();
       if (MaxNeighbours < count)
         MaxNeighbours = count;
     }
   }
-  *output << "# ATOMDATA Id name resName resSeq x=3 charge type neighbors=" << MaxNeighbours << endl;
+  *output << "# ATOMDATA Id name resName resSeq x=3 Charge type neighbors=" << MaxNeighbours << endl;
 
   // create global to local id map
-  int **LocalNotoGlobalNoMap = Calloc<int *>(MolList->ListOfMolecules.size(), "config::SaveTREMOLO - **LocalNotoGlobalNoMap");
+  map<int, int> LocalNotoGlobalNoMap;
   {
-    int MolCounter = 0;
-    int AtomNo = 0;
+    unsigned int MolCounter = 0;
+    int AtomNo = 1;
     for (MoleculeList::const_iterator MolWalker = MolList->ListOfMolecules.begin(); MolWalker != MolList->ListOfMolecules.end(); MolWalker++) {
-      LocalNotoGlobalNoMap[MolCounter] = Calloc<int>(MolList->CountAllAtoms(), "config::SaveTREMOLO - *LocalNotoGlobalNoMap[]");
-
-      (*MolWalker)->SetIndexedArrayForEachAtomTo( LocalNotoGlobalNoMap[MolCounter], &atom::nr, IncrementalAbsoluteValue, &AtomNo);
-
+      for(molecule::iterator AtomRunner = (*MolWalker)->begin(); AtomRunner != (*MolWalker)->end(); ++AtomRunner) {
+        LocalNotoGlobalNoMap.insert( pair<int,int>((*AtomRunner)->getId(), AtomNo++) );
+      }
       MolCounter++;
     }
+    ASSERT(MolCounter == MolList->ListOfMolecules.size(), "SaveTREMOLO: LocalNotoGlobalNoMap[] has not been correctly initialized for each molecule");
   }
 
@@ -1752,17 +1744,15 @@
     int AtomNo = 0;
     for (MoleculeList::const_iterator MolWalker = MolList->ListOfMolecules.begin(); MolWalker != MolList->ListOfMolecules.end(); MolWalker++) {
-      Walker = (*MolWalker)->start;
-      while (Walker->next != (*MolWalker)->end) {
-        Walker = Walker->next;
-        *output << AtomNo+1 << "\t";
-        *output << Walker->Name << "\t";
+      for (molecule::const_iterator iter = (*MolWalker)->begin(); iter != (*MolWalker)->end(); ++iter) {
+        *output << LocalNotoGlobalNoMap[ (*iter)->getId() ] << "\t";
+        *output << (*iter)->getName() << "\t";
         *output << (*MolWalker)->name << "\t";
         *output << MolCounter+1 << "\t";
-        *output << Walker->node->at(0) << "\t" << Walker->node->at(1) << "\t" << Walker->node->at(2) << "\t";
-        *output << (double)Walker->type->Valence << "\t";
-        *output << Walker->type->symbol << "\t";
-        for (BondList::iterator runner = Walker->ListOfBonds.begin(); runner != Walker->ListOfBonds.end(); runner++)
-          *output << LocalNotoGlobalNoMap[MolCounter][ (*runner)->GetOtherAtom(Walker)->nr ]+1 << "\t";
-        for(int i=Walker->ListOfBonds.size(); i < MaxNeighbours; i++)
+        *output << (*iter)->node->at(0) << "\t" << (*iter)->node->at(1) << "\t" << (*iter)->node->at(2) << "\t";
+        *output << (double)(*iter)->type->Valence << "\t";
+        *output << (*iter)->type->symbol << "\t";
+        for (BondList::iterator runner = (*iter)->ListOfBonds.begin(); runner != (*iter)->ListOfBonds.end(); runner++)
+          *output << LocalNotoGlobalNoMap[ (*runner)->GetOtherAtom((*iter))->getId() ] << "\t";
+        for(int i=(*iter)->ListOfBonds.size(); i < MaxNeighbours; i++)
           *output << "-\t";
         *output << endl;
@@ -1778,7 +1768,4 @@
   delete(output);
   delete(fname);
-  for(size_t i=0;i<MolList->ListOfMolecules.size(); i++)
-    Free(&LocalNotoGlobalNoMap[i]);
-  Free(&LocalNotoGlobalNoMap);
 
   return true;
@@ -1808,9 +1795,9 @@
   if (output == NULL)
     strcpy(filename,"main_pcp_linux");
-  Log() << Verbose(0) << "Saving as pdb input ";
+  Log() << Verbose(0) << "Saving as pdb input ... " << endl;
   if (SavePDB(filename, molecules))
-    Log() << Verbose(0) << "done." << endl;
+    Log() << Verbose(0) << "\t... done." << endl;
   else
-    Log() << Verbose(0) << "failed." << endl;
+    Log() << Verbose(0) << "\t... failed." << endl;
 
   // then save as tremolo data file
@@ -1819,9 +1806,9 @@
   if (output == NULL)
     strcpy(filename,"main_pcp_linux");
-  Log() << Verbose(0) << "Saving as tremolo data input ";
+  Log() << Verbose(0) << "Saving as tremolo data input ... " << endl;
   if (SaveTREMOLO(filename, molecules))
-    Log() << Verbose(0) << "done." << endl;
+    Log() << Verbose(0) << "\t... done." << endl;
   else
-    Log() << Verbose(0) << "failed." << endl;
+    Log() << Verbose(0) << "\t... failed." << endl;
 
   // translate each to its center and merge all molecules in MoleculeListClass into this molecule
@@ -1859,9 +1846,9 @@
   output.close();
   output.clear();
-  Log() << Verbose(0) << "Saving of config file ";
+  Log() << Verbose(0) << "Saving of config file ... " << endl;
   if (Save(filename, periode, mol))
-    Log() << Verbose(0) << "successful." << endl;
+    Log() << Verbose(0) << "\t... successful." << endl;
   else
-    Log() << Verbose(0) << "failed." << endl;
+    Log() << Verbose(0) << "\t... failed." << endl;
 
   // and save to xyz file
@@ -1876,15 +1863,15 @@
     output.open(filename, ios::trunc);
   }
-  Log() << Verbose(0) << "Saving of XYZ file ";
+  Log() << Verbose(0) << "Saving of XYZ file ... " << endl;
   if (mol->MDSteps <= 1) {
     if (mol->OutputXYZ(&output))
-      Log() << Verbose(0) << "successful." << endl;
+      Log() << Verbose(0) << "\t... successful." << endl;
     else
-      Log() << Verbose(0) << "failed." << endl;
+      Log() << Verbose(0) << "\t... failed." << endl;
   } else {
     if (mol->OutputTrajectoriesXYZ(&output))
-      Log() << Verbose(0) << "successful." << endl;
+      Log() << Verbose(0) << "\t... successful." << endl;
     else
-      Log() << Verbose(0) << "failed." << endl;
+      Log() << Verbose(0) << "\t... failed." << endl;
   }
   output.close();
@@ -1896,9 +1883,9 @@
   if (output == NULL)
     strcpy(filename,"main_pcp_linux");
-  Log() << Verbose(0) << "Saving as mpqc input ";
+  Log() << Verbose(0) << "Saving as mpqc input .. " << endl;
   if (SaveMPQC(filename, mol))
-    Log() << Verbose(0) << "done." << endl;
+    Log() << Verbose(0) << "\t... done." << endl;
   else
-    Log() << Verbose(0) << "failed." << endl;
+    Log() << Verbose(0) << "\t... failed." << endl;
 
   if (!strcmp(configpath, GetDefaultPath())) {
@@ -1938,5 +1925,5 @@
   char *dummy1 = NULL;
   char *dummy = NULL;
-  char * const free_dummy = Malloc<char>(256, "config::ParseForParameter: *free_dummy");    // pointers in the line that is read in per step
+  char free_dummy[MAXSTRINGSIZE];    // pointers in the line that is read in per step
   dummy1 = free_dummy;
 
@@ -1954,5 +1941,4 @@
       if (file->eof()) {
         if ((critical) && (found == 0)) {
-          Free(free_dummy);
           //Error(InitReading, name);
           fprintf(stderr,"Error:InitReading, critical %s not found\n", name);
@@ -1962,5 +1948,4 @@
           file->clear();
           file->seekg(file_position, ios::beg);  // rewind to start position
-          Free(free_dummy);
           return 0;
         }
@@ -1993,5 +1978,4 @@
         dummy = strchr(dummy1, '\n'); // set on line end then (whole line = keyword)
         //fprintf(stderr,"Error: Cannot find tabs or spaces on line %i in search for %s\n", line, name);
-        //Free((void **)&free_dummy);
         //Error(FileOpenParams, NULL);
       } else {
@@ -2014,5 +1998,4 @@
               if (file->eof()) {
                 if ((critical) && (found == 0)) {
-                  Free(free_dummy);
                   //Error(InitReading, name);
                   fprintf(stderr,"Error:InitReading, critical %s not found\n", name);
@@ -2022,5 +2005,4 @@
                   file->clear();
                   file->seekg(file_position, ios::beg);  // rewind to start position
-                  Free(free_dummy);
                   return 0;
                 }
@@ -2063,5 +2045,4 @@
                   if (critical) {
                     if (verbose) fprintf(stderr,"Error: EoL at %i and still missing %i value(s) for parameter %s\n", line, yth-j, name);
-                    Free(free_dummy);
                     //return 0;
                     exit(255);
@@ -2071,5 +2052,4 @@
                     file->clear();
                     file->seekg(file_position, ios::beg);  // rewind to start position
-                    Free(free_dummy);
                     return 0;
                   }
@@ -2084,5 +2064,4 @@
                   file->seekg(file_position, ios::beg);  // rewind to start position
                 }
-                Free(free_dummy);
                 return 0;
               }
@@ -2140,5 +2119,4 @@
   if ((type >= row_int) && (verbose))
     fprintf(stderr,"\n");
-  Free(free_dummy);
   if (!sequential) {
     file->clear();
@@ -2221,5 +2199,4 @@
         dummy = strchr(dummy1, '\n'); // set on line end then (whole line = keyword)
         //fprintf(stderr,"Error: Cannot find tabs or spaces on line %i in search for %s\n", line, name);
-        //Free(&free_dummy);
         //Error(FileOpenParams, NULL);
       } else {
Index: src/helpers.cpp
===================================================================
--- src/helpers.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/helpers.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -58,5 +58,5 @@
 int CountLinesinFile(ifstream &InputFile)
 {
-  char *buffer = Malloc<char>(MAXSTRINGSIZE, "CountLinesinFile: *buffer");
+  char *buffer = new char[MAXSTRINGSIZE];
   int lines=0;
 
@@ -70,5 +70,5 @@
   }
   InputFile.seekg(PositionMarker, ios::beg);
-  Free(&buffer);
+  delete[](buffer);
   return lines;
 };
@@ -90,5 +90,5 @@
   }
   // allocate string
-  returnstring = Malloc<char>(order + 2, "FixedDigitNumber: *returnstring");
+  returnstring = new char[order + 2];
   // terminate  and fill string array from end backward
   returnstring[order] = '\0';
@@ -122,5 +122,5 @@
 double * ReturnFullMatrixforSymmetric(const double * const symm)
 {
-  double *matrix = Malloc<double>(NDIM * NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix");
+  double *matrix = new double[NDIM * NDIM];
   matrix[0] = symm[0];
   matrix[1] = symm[1];
@@ -140,5 +140,5 @@
 double * InverseMatrix( const double * const A)
 {
-  double *B = Malloc<double>(NDIM * NDIM, "Vector::InverseMatrix: *B");
+  double *B = new double[NDIM * NDIM];
   double detA = RDET3(A);
   double detAReci;
@@ -180,38 +180,8 @@
 
 
-/** Allocates a memory range using malloc().
- * Prints the provided error message in case of a failure.
- *
- * \param number of memory slices of type X to allocate
- * \param failure message which is printed if the allocation fails
- * \return pointer to the allocated memory range, will be NULL if a failure occurred
- */
-template <> char* Malloc<char>(size_t size, const char* output)
-{
-  char* buffer = NULL;
-  buffer = (char*) malloc(sizeof(char) * (size + 1));
-  for (size_t i = size; i--;)
-    buffer[i] = (i % 2 == 0) ? 'p': 'c';
-  buffer[size] = '\0';
-
-  if (buffer != NULL) {
-    MemoryUsageObserver::getInstance()->addMemory(buffer, size);
-  } else {
-    Log() << Verbose(0) << "Malloc for datatype " << typeid(char).name()
-      << " failed - pointer is NULL: " << output << endl;
-  }
-
-  return buffer;
-};
-
 /**
- * Frees all memory registered by the memory observer and calls exit(225) afterwards.
+ * Calls exit(255).
  */
 void performCriticalExit() {
-  map<void*, size_t> pointers = MemoryUsageObserver::getInstance()->getPointersToAllocatedMemory();
-  for (map<void*, size_t>::iterator runner = pointers.begin(); runner != pointers.end(); runner++) {
-    Free(((void**) &runner->first));
-  }
-
   exit(255);
 }
Index: src/helpers.hpp
===================================================================
--- src/helpers.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/helpers.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -97,5 +97,5 @@
 
   if (LookupTable != NULL) {
-    DoLog(0) && (Log() << Verbose(0) << "Pointer for Lookup table is not NULL! Aborting ..." <<endl);
+    DoeLog(0) && (eLog() << Verbose(0) << "Pointer for Lookup table is not NULL! Aborting ..." <<endl);
     return false;
   }
@@ -110,10 +110,10 @@
   }
   if (count <= 0) {
-    DoLog(0) && (Log() << Verbose(0) << "Count of lookup list is 0 or less." << endl);
+    DoeLog(1) && (eLog() << Verbose(1) << "Count of lookup list is 0 or less." << endl);
     return false;
   }
 
   // allocate and fill
-  LookupTable = Calloc<T*>(count, "CreateFatherLookupTable - **LookupTable");
+  LookupTable = new T*[count];
   if (LookupTable == NULL) {
     DoeLog(0) && (eLog()<< Verbose(0) << "LookupTable memory allocation failed!" << endl);
@@ -129,5 +129,5 @@
         LookupTable[AtomNo] = Walker;
       } else {
-        DoLog(0) && (Log() << Verbose(0) << "Walker " << *Walker << " exceeded range of nuclear ids [0, " << count << ")." << endl);
+        DoeLog(2) && (eLog() << Verbose(2) << "Walker " << *Walker << " exceeded range of nuclear ids [0, " << count << ")." << endl);
         status = false;
         break;
@@ -138,4 +138,5 @@
   return status;
 };
+
 
 /** Frees a two-dimensional array.
Index: src/joiner.cpp
===================================================================
--- src/joiner.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/joiner.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -58,5 +58,5 @@
     return 1;
   } else {
-    dir = Malloc<char>(strlen(argv[2]) + 2, "main: *dir");
+    dir = new char[strlen(argv[2]) + 2];
     strcpy(dir, "/");
     strcat(dir, argv[2]);
@@ -243,5 +243,5 @@
   // exit
   delete(periode);
-  Free(&dir);
+  delete[](dir);
   DoLog(0) && (Log() << Verbose(0) << "done." << endl);
   return 0;
Index: c/lists.cpp
===================================================================
--- src/lists.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/*
- * lists.cpp
- *
- *  Created on: Feb 24, 2010
- *      Author: crueger
- */
-
-#include "lists.hpp"
-#include "World.hpp"
-#include "atom.hpp"
-
-// specialized templates for lists
-// can be directly compiled since no further templatization is needed
-template <> void removewithoutcheck<atom>(atom *walker)
-{
-  if (walker != 0) {
-    unlink(walker);
-    walker->getWorld()->destroyAtom(walker);
-    walker = 0;
-  }
-};
Index: src/lists.hpp
===================================================================
--- src/lists.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/lists.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -134,27 +134,3 @@
 };
 
-/** Returns the first marker in a chain list.
- * \param *me one arbitrary item in chain list
- * \return poiner to first marker
- */
-template <typename X> X *GetFirst(X *me)
-{
-  X *Binder = me;
-  while(Binder->previous != 0)
-    Binder = Binder->previous;
-  return Binder;
-};
-
-/** Returns the last marker in a chain list.
- * \param *me one arbitrary item in chain list
- * \return poiner to last marker
- */
-template <typename X> X *GetLast(X *me)
-{
-  X *Binder = me;
-  while(Binder->next != 0)
-    Binder = Binder->next;
-  return Binder;
-};
-
 #endif /* LISTS_HPP_ */
Index: src/memoryallocator.cpp
===================================================================
--- src/memoryallocator.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ src/memoryallocator.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,36 @@
+/*
+ * memoryallocator.cpp
+ *
+ *  Created on: May 31, 2010
+ *      Author: heber
+ */
+
+using namespace std;
+
+#include "memoryallocator.hpp"
+
+/** Allocates a memory range using malloc().
+ * Prints the provided error message in case of a failure.
+ *
+ * \param number of memory slices of type X to allocate
+ * \param failure message which is printed if the allocation fails
+ * \return pointer to the allocated memory range, will be NULL if a failure occurred
+ */
+template <> char* Malloc<char>(size_t size, const char* output)
+{
+  char* buffer = NULL;
+  buffer = (char*) malloc(sizeof(char) * (size + 1));
+  for (size_t i = size; i--;)
+    buffer[i] = (i % 2 == 0) ? 'p': 'c';
+  buffer[size] = '\0';
+
+  if (buffer != NULL) {
+    //MemoryUsageObserver::getInstance()->addMemory(buffer, size);
+  } else {
+    Log() << Verbose(0) << "Malloc for datatype " << typeid(char).name()
+      << " failed - pointer is NULL: " << output << endl;
+  }
+
+  return buffer;
+};
+
Index: src/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -35,19 +35,11 @@
  * Initialises molecule list with correctly referenced start and end, and sets molecule::last_atom to zero.
  */
-molecule::molecule(const periodentafel * const teil) : elemente(teil), start(World::getInstance().createAtom()), end(World::getInstance().createAtom()),
-  first(new bond(start, end, 1, -1)), last(new bond(start, end, 1, -1)), MDSteps(0), AtomCount(0), 
+molecule::molecule(const periodentafel * const teil) : elemente(teil),
+  MDSteps(0),
   BondCount(0), ElementCount(0), NoNonHydrogen(0), NoNonBonds(0), NoCyclicBonds(0), BondDistance(0.), 
   ActiveFlag(false), IndexNr(-1),
   formula(this,boost::bind(&molecule::calcFormula,this)),
-  last_atom(0),
-  InternalPointer(start)
-{
-  // init atom chain list
-  start->father = NULL;
-  end->father = NULL;
-  link(start,end);
-
-  // init bond chain list
-  link(first,last);
+  AtomCount(this,boost::bind(&molecule::doCountAtoms,this)), last_atom(0),  InternalPointer(begin())
+{
 
   // other stuff
@@ -67,8 +59,4 @@
 {
   CleanupMolecule();
-  delete(first);
-  delete(last);
-  end->getWorld()->destroyAtom(end);
-  start->getWorld()->destroyAtom(start);
 };
 
@@ -81,4 +69,8 @@
 const std::string molecule::getName(){
   return std::string(name);
+}
+
+int molecule::getAtomCount() const{
+  return *AtomCount;
 }
 
@@ -104,6 +96,6 @@
   stringstream sstr;
   periodentafel *periode = World::getInstance().getPeriode();
-  for(atom *Walker = start; Walker != end; Walker = Walker->next) {
-    counts[Walker->type->getNumber()]++;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    counts[(*iter)->type->getNumber()]++;
   }
   std::map<atomicNumber_t,unsigned int>::reverse_iterator iter;
@@ -115,4 +107,65 @@
 }
 
+/************************** Access to the List of Atoms ****************/
+
+
+molecule::iterator molecule::begin(){
+  return molecule::iterator(atoms.begin(),this);
+}
+
+molecule::const_iterator molecule::begin() const{
+  return atoms.begin();
+}
+
+molecule::iterator molecule::end(){
+  return molecule::iterator(atoms.end(),this);
+}
+
+molecule::const_iterator molecule::end() const{
+  return atoms.end();
+}
+
+bool molecule::empty() const
+{
+  return (begin() == end());
+}
+
+size_t molecule::size() const
+{
+  size_t counter = 0;
+  for (molecule::const_iterator iter = begin(); iter != end (); ++iter)
+    counter++;
+  return counter;
+}
+
+molecule::const_iterator molecule::erase( const_iterator loc )
+{
+  molecule::const_iterator iter = loc;
+  iter--;
+  atoms.erase( loc );
+  return iter;
+}
+
+molecule::const_iterator molecule::erase( atom *& key )
+{
+  cout << "trying to erase atom" << endl;
+  molecule::const_iterator iter = find(key);
+  if (iter != end()){
+    // remove this position and step forward (post-increment)
+    atoms.erase( iter++ );
+  }
+  return iter;
+}
+
+molecule::const_iterator molecule::find ( atom *& key ) const
+{
+  return atoms.find( key );
+}
+
+pair<molecule::iterator,bool> molecule::insert ( atom * const key )
+{
+  pair<atomSet::iterator,bool> res = atoms.insert(key);
+  return pair<iterator,bool>(iterator(res.first,this),res.second);
+}
 
 /** Adds given atom \a *pointer from molecule list.
@@ -123,10 +176,7 @@
 bool molecule::AddAtom(atom *pointer)
 {
-  bool retval = false;
   OBSERVE;
   if (pointer != NULL) {
     pointer->sort = &pointer->nr;
-    pointer->nr = last_atom++;  // increase number within molecule
-    AtomCount++;
     if (pointer->type != NULL) {
       if (ElementsInMolecule[pointer->type->Z] == 0)
@@ -135,13 +185,13 @@
       if (pointer->type->Z != 1)
         NoNonHydrogen++;
-      if (pointer->Name == NULL) {
-        Free(&pointer->Name);
-        pointer->Name = Malloc<char>(6, "molecule::AddAtom: *pointer->Name");
-        sprintf(pointer->Name, "%2s%02d", pointer->type->symbol, pointer->nr+1);
-      }
-    }
-    retval = add(pointer, end);
-  }
-  return retval;
+      if(pointer->getName() == "Unknown"){
+        stringstream sstr;
+        sstr << pointer->type->symbol << pointer->nr+1;
+        pointer->setName(sstr.str());
+      }
+    }
+    insert(pointer);
+  }
+  return true;
 };
 
@@ -157,11 +207,9 @@
   if (pointer != NULL) {
     atom *walker = pointer->clone();
-    walker->Name = Malloc<char>(strlen(pointer->Name) + 1, "atom::atom: *Name");
-    strcpy (walker->Name, pointer->Name);
+    walker->setName(pointer->getName());
     walker->nr = last_atom++;  // increase number within molecule
-    add(walker, end);
+    insert(walker);
     if ((pointer->type != NULL) && (pointer->type->Z != 1))
       NoNonHydrogen++;
-    AtomCount++;
     retval=walker;
   }
@@ -241,5 +289,5 @@
     Orthovector1.MatrixMultiplication(matrix);
     InBondvector -= Orthovector1; // subtract just the additional translation
-    Free(&matrix);
+    delete[](matrix);
     bondlength = InBondvector.Norm();
 //    Log() << Verbose(4) << "Corrected InBondvector is now: ";
@@ -250,7 +298,8 @@
   InBondvector.Normalize();
   // get typical bond length and store as scale factor for later
+  ASSERT(TopOrigin->type != NULL, "AddHydrogenReplacementAtom: element of TopOrigin is not given.");
   BondRescale = TopOrigin->type->HBondDistance[TopBond->BondDegree-1];
   if (BondRescale == -1) {
-    DoeLog(1) && (eLog()<< Verbose(1) << "There is no typical hydrogen bond distance in replacing bond (" << TopOrigin->Name << "<->" << TopReplacement->Name << ") of degree " << TopBond->BondDegree << "!" << endl);
+    DoeLog(1) && (eLog()<< Verbose(1) << "There is no typical hydrogen bond distance in replacing bond (" << TopOrigin->getName() << "<->" << TopReplacement->getName() << ") of degree " << TopBond->BondDegree << "!" << endl);
     return false;
     BondRescale = bondlength;
@@ -275,5 +324,5 @@
       InBondvector *= BondRescale;   // rescale the distance vector to Hydrogen bond length
       FirstOtherAtom->x = TopOrigin->x; // set coordination to origin ...
-      FirstOtherAtom->x = InBondvector;  // ... and add distance vector to replacement atom
+      FirstOtherAtom->x += InBondvector;  // ... and add distance vector to replacement atom
       AllWentWell = AllWentWell && AddAtom(FirstOtherAtom);
 //      Log() << Verbose(4) << "Added " << *FirstOtherAtom << " at: ";
@@ -295,5 +344,5 @@
             SecondOtherAtom = (*Runner)->GetOtherAtom(TopOrigin);
           } else {
-            DoeLog(2) && (eLog()<< Verbose(2) << "Detected more than four bonds for atom " << TopOrigin->Name);
+            DoeLog(2) && (eLog()<< Verbose(2) << "Detected more than four bonds for atom " << TopOrigin->getName());
           }
         }
@@ -339,5 +388,5 @@
       bondangle = TopOrigin->type->HBondAngle[1];
       if (bondangle == -1) {
-        DoeLog(1) && (eLog()<< Verbose(1) << "There is no typical hydrogen bond angle in replacing bond (" << TopOrigin->Name << "<->" << TopReplacement->Name << ") of degree " << TopBond->BondDegree << "!" << endl);
+        DoeLog(1) && (eLog()<< Verbose(1) << "There is no typical hydrogen bond angle in replacing bond (" << TopOrigin->getName() << "<->" << TopReplacement->getName() << ") of degree " << TopBond->BondDegree << "!" << endl);
         return false;
         bondangle = 0;
@@ -471,5 +520,5 @@
       break;
   }
-  Free(&matrix);
+  delete[](matrix);
 
 //  Log() << Verbose(3) << "End of AddHydrogenReplacementAtom." << endl;
@@ -554,26 +603,27 @@
 
   // copy all bonds
-  bond *Binder = first;
+  bond *Binder = NULL;
   bond *NewBond = NULL;
-  while(Binder->next != last) {
-    Binder = Binder->next;
-
-    // get the pendant atoms of current bond in the copy molecule
-    copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->leftatom, (const atom **)&LeftAtom );
-    copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->rightatom, (const atom **)&RightAtom );
-
-    NewBond = copy->AddBond(LeftAtom, RightAtom, Binder->BondDegree);
-    NewBond->Cyclic = Binder->Cyclic;
-    if (Binder->Cyclic)
-      copy->NoCyclicBonds++;
-    NewBond->Type = Binder->Type;
-  }
+  for(molecule::iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); !(*AtomRunner)->ListOfBonds.empty(); BondRunner = (*AtomRunner)->ListOfBonds.begin())
+      if ((*BondRunner)->leftatom == *AtomRunner) {
+        Binder = (*BondRunner);
+
+        // get the pendant atoms of current bond in the copy molecule
+        copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->leftatom, (const atom **)&LeftAtom );
+        copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->rightatom, (const atom **)&RightAtom );
+
+        NewBond = copy->AddBond(LeftAtom, RightAtom, Binder->BondDegree);
+        NewBond->Cyclic = Binder->Cyclic;
+        if (Binder->Cyclic)
+          copy->NoCyclicBonds++;
+        NewBond->Type = Binder->Type;
+      }
   // correct fathers
   ActOnAllAtoms( &atom::CorrectFather );
 
   // copy values
-  copy->CountAtoms();
   copy->CountElements();
-  if (first->next != last) {  // if adjaceny list is present
+  if (hasBondStructure()) {  // if adjaceny list is present
     copy->BondDistance = BondDistance;
   }
@@ -608,14 +658,17 @@
 {
   bond *Binder = NULL;
-  if ((atom1 != NULL) && (FindAtom(atom1->nr) != NULL) && (atom2 != NULL) && (FindAtom(atom2->nr) != NULL)) {
-    Binder = new bond(atom1, atom2, degree, BondCount++);
-    atom1->RegisterBond(Binder);
-    atom2->RegisterBond(Binder);
-    if ((atom1->type != NULL) && (atom1->type->Z != 1) && (atom2->type != NULL) && (atom2->type->Z != 1))
-      NoNonBonds++;
-    add(Binder, last);
-  } else {
-    DoeLog(1) && (eLog()<< Verbose(1) << "Could not add bond between " << atom1->Name << " and " << atom2->Name << " as one or both are not present in the molecule." << endl);
-  }
+
+  // some checks to make sure we are able to create the bond
+  ASSERT(atom1, "First atom in bond-creation was an invalid pointer");
+  ASSERT(atom2, "Second atom in bond-creation was an invalid pointer");
+  ASSERT(FindAtom(atom1->nr),"First atom in bond-creation was not part of molecule");
+  ASSERT(FindAtom(atom2->nr),"Second atom in bond-creation was not parto of molecule");
+
+  Binder = new bond(atom1, atom2, degree, BondCount++);
+  atom1->RegisterBond(Binder);
+  atom2->RegisterBond(Binder);
+  if ((atom1->type != NULL) && (atom1->type->Z != 1) && (atom2->type != NULL) && (atom2->type->Z != 1))
+    NoNonBonds++;
+
   return Binder;
 };
@@ -629,7 +682,5 @@
 {
   //DoeLog(1) && (eLog()<< Verbose(1) << "molecule::RemoveBond: Function not implemented yet." << endl);
-  pointer->leftatom->RegisterBond(pointer);
-  pointer->rightatom->RegisterBond(pointer);
-  removewithoutcheck(pointer);
+  delete(pointer);
   return true;
 };
@@ -691,13 +742,15 @@
 bool molecule::RemoveAtom(atom *pointer)
 {
+  ASSERT(pointer, "Null pointer passed to molecule::RemoveAtom().");
+  OBSERVE;
   if (ElementsInMolecule[pointer->type->Z] != 0)  { // this would indicate an error
     ElementsInMolecule[pointer->type->Z]--;  // decrease number of atom of this element
-    AtomCount--;
   } else
-    DoeLog(1) && (eLog()<< Verbose(1) << "Atom " << pointer->Name << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl);
+    DoeLog(1) && (eLog()<< Verbose(1) << "Atom " << pointer->getName() << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl);
   if (ElementsInMolecule[pointer->type->Z] == 0)  // was last atom of this element?
     ElementCount--;
   RemoveBonds(pointer);
-  return remove(pointer, start, end);
+  erase(pointer);
+  return true;
 };
 
@@ -713,8 +766,8 @@
     ElementsInMolecule[pointer->type->Z]--; // decrease number of atom of this element
   else
-    DoeLog(1) && (eLog()<< Verbose(1) << "Atom " << pointer->Name << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl);
+    DoeLog(1) && (eLog()<< Verbose(1) << "Atom " << pointer->getName() << " is of element " << pointer->type->Z << " but the entry in the table of the molecule is 0!" << endl);
   if (ElementsInMolecule[pointer->type->Z] == 0)  // was last atom of this element?
     ElementCount--;
-  unlink(pointer);
+  erase(pointer);
   return true;
 };
@@ -725,5 +778,6 @@
 bool molecule::CleanupMolecule()
 {
-  return (cleanup(first,last) && cleanup(start,end));
+  for (molecule::iterator iter = begin(); !empty(); iter = begin())
+      erase(iter);
 };
 
@@ -732,9 +786,13 @@
  * \return pointer to atom or NULL
  */
-atom * molecule::FindAtom(int Nr)  const{
-  atom * walker = find(&Nr, start,end);
-  if (walker != NULL) {
+atom * molecule::FindAtom(int Nr)  const
+{
+  molecule::const_iterator iter = begin();
+  for (; iter != end(); ++iter)
+    if ((*iter)->nr == Nr)
+      break;
+  if (iter != end()) {
     //Log() << Verbose(0) << "Found Atom Nr. " << walker->nr << endl;
-    return walker;
+    return (*iter);
   } else {
     DoLog(0) && (Log() << Verbose(0) << "Atom not found in list." << endl);
@@ -866,5 +924,5 @@
     now = time((time_t *)NULL);   // Get the system time and put it into 'now' as 'calender time'
     for (int step=0;step<MDSteps;step++) {
-      *output << AtomCount << "\n\tCreated by molecuilder, step " << step << ", on " << ctime(&now);
+      *output << getAtomCount() << "\n\tCreated by molecuilder, step " << step << ", on " << ctime(&now);
       ActOnAllAtoms( &atom::OutputTrajectoryXYZ, output, step );
     }
@@ -883,5 +941,5 @@
   if (output != NULL) {
     now = time((time_t *)NULL);   // Get the system time and put it into 'now' as 'calender time'
-    *output << AtomCount << "\n\tCreated by molecuilder on " << ctime(&now);
+    *output << getAtomCount() << "\n\tCreated by molecuilder on " << ctime(&now);
     ActOnAllAtoms( &atom::OutputXYZLine, output );
     return true;
@@ -893,35 +951,20 @@
  * \param *out output stream for debugging
  */
-void molecule::CountAtoms()
-{
+int molecule::doCountAtoms()
+{
+  int res = size();
   int i = 0;
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
+  NoNonHydrogen = 0;
+  for (molecule::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+    (*iter)->nr = i;   // update number in molecule (for easier referencing in FragmentMolecule lateron)
+    if ((*iter)->type->Z != 1) // count non-hydrogen atoms whilst at it
+      NoNonHydrogen++;
+    stringstream sstr;
+    sstr << (*iter)->type->symbol << (*iter)->nr+1;
+    (*iter)->setName(sstr.str());
+    DoLog(3) && (Log() << Verbose(3) << "Naming atom nr. " << (*iter)->nr << " " << (*iter)->getName() << "." << endl);
     i++;
   }
-  if ((AtomCount == 0) || (i != AtomCount)) {
-    DoLog(3) && (Log() << Verbose(3) << "Mismatch in AtomCount " << AtomCount << " and recounted number " << i << ", renaming all." << endl);
-    AtomCount = i;
-
-    // count NonHydrogen atoms and give each atom a unique name
-    if (AtomCount != 0) {
-      i=0;
-      NoNonHydrogen = 0;
-      Walker = start;
-      while (Walker->next != end) {
-        Walker = Walker->next;
-        Walker->nr = i;   // update number in molecule (for easier referencing in FragmentMolecule lateron)
-        if (Walker->type->Z != 1) // count non-hydrogen atoms whilst at it
-          NoNonHydrogen++;
-        Free(&Walker->Name);
-        Walker->Name = Malloc<char>(6, "molecule::CountAtoms: *walker->Name");
-        sprintf(Walker->Name, "%2s%02d", Walker->type->symbol, Walker->nr+1);
-        DoLog(3) && (Log() << Verbose(3) << "Naming atom nr. " << Walker->nr << " " << Walker->Name << "." << endl);
-        i++;
-      }
-    } else
-      DoLog(3) && (Log() << Verbose(3) << "AtomCount is still " << AtomCount << ", thus counting nothing." << endl);
-  }
+  return res;
 };
 
@@ -985,6 +1028,4 @@
   /// first count both their atoms and elements and update lists thereby ...
   //Log() << Verbose(0) << "Counting atoms, updating list" << endl;
-  CountAtoms();
-  OtherMolecule->CountAtoms();
   CountElements();
   OtherMolecule->CountElements();
@@ -993,8 +1034,8 @@
   /// -# AtomCount
   if (result) {
-    if (AtomCount != OtherMolecule->AtomCount) {
-      DoLog(4) && (Log() << Verbose(4) << "AtomCounts don't match: " << AtomCount << " == " << OtherMolecule->AtomCount << endl);
+    if (getAtomCount() != OtherMolecule->getAtomCount()) {
+      DoLog(4) && (Log() << Verbose(4) << "AtomCounts don't match: " << getAtomCount() << " == " << OtherMolecule->getAtomCount() << endl);
       result = false;
-    } else Log() << Verbose(4) << "AtomCounts match: " << AtomCount << " == " << OtherMolecule->AtomCount << endl;
+    } else Log() << Verbose(4) << "AtomCounts match: " << getAtomCount() << " == " << OtherMolecule->getAtomCount() << endl;
   }
   /// -# ElementCount
@@ -1033,18 +1074,28 @@
   if (result) {
     DoLog(5) && (Log() << Verbose(5) << "Calculating distances" << endl);
-    Distances = Calloc<double>(AtomCount, "molecule::IsEqualToWithinThreshold: Distances");
-    OtherDistances = Calloc<double>(AtomCount, "molecule::IsEqualToWithinThreshold: OtherDistances");
+    Distances = new double[getAtomCount()];
+    OtherDistances = new double[getAtomCount()];
     SetIndexedArrayForEachAtomTo ( Distances, &atom::nr, &atom::DistanceSquaredToVector, (const Vector &)CenterOfGravity);
     SetIndexedArrayForEachAtomTo ( OtherDistances, &atom::nr, &atom::DistanceSquaredToVector, (const Vector &)CenterOfGravity);
+    for(int i=0;i<getAtomCount();i++) {
+      Distances[i] = 0.;
+      OtherDistances[i] = 0.;
+    }
 
     /// ... sort each list (using heapsort (o(N log N)) from GSL)
     DoLog(5) && (Log() << Verbose(5) << "Sorting distances" << endl);
-    PermMap = Calloc<size_t>(AtomCount, "molecule::IsEqualToWithinThreshold: *PermMap");
-    OtherPermMap = Calloc<size_t>(AtomCount, "molecule::IsEqualToWithinThreshold: *OtherPermMap");
-    gsl_heapsort_index (PermMap, Distances, AtomCount, sizeof(double), CompareDoubles);
-    gsl_heapsort_index (OtherPermMap, OtherDistances, AtomCount, sizeof(double), CompareDoubles);
-    PermutationMap = Calloc<int>(AtomCount, "molecule::IsEqualToWithinThreshold: *PermutationMap");
+    PermMap = new size_t[getAtomCount()];
+    OtherPermMap = new size_t[getAtomCount()];
+    for(int i=0;i<getAtomCount();i++) {
+      PermMap[i] = 0;
+      OtherPermMap[i] = 0;
+    }
+    gsl_heapsort_index (PermMap, Distances, getAtomCount(), sizeof(double), CompareDoubles);
+    gsl_heapsort_index (OtherPermMap, OtherDistances, getAtomCount(), sizeof(double), CompareDoubles);
+    PermutationMap = new int[getAtomCount()];
+    for(int i=0;i<getAtomCount();i++)
+      PermutationMap[i] = 0;
     DoLog(5) && (Log() << Verbose(5) << "Combining Permutation Maps" << endl);
-    for(int i=AtomCount;i--;)
+    for(int i=getAtomCount();i--;)
       PermutationMap[PermMap[i]] = (int) OtherPermMap[i];
 
@@ -1052,5 +1103,5 @@
     DoLog(4) && (Log() << Verbose(4) << "Comparing distances" << endl);
     flag = 0;
-    for (int i=0;i<AtomCount;i++) {
+    for (int i=0;i<getAtomCount();i++) {
       DoLog(5) && (Log() << Verbose(5) << "Distances squared: |" << Distances[PermMap[i]] << " - " << OtherDistances[OtherPermMap[i]] << "| = " << fabs(Distances[PermMap[i]] - OtherDistances[OtherPermMap[i]]) << " ?<? " <<  threshold << endl);
       if (fabs(Distances[PermMap[i]] - OtherDistances[OtherPermMap[i]]) > threshold*threshold)
@@ -1059,10 +1110,10 @@
 
     // free memory
-    Free(&PermMap);
-    Free(&OtherPermMap);
-    Free(&Distances);
-    Free(&OtherDistances);
+    delete[](PermMap);
+    delete[](OtherPermMap);
+    delete[](Distances);
+    delete[](OtherDistances);
     if (flag) { // if not equal
-      Free(&PermutationMap);
+      delete[](PermutationMap);
       result = false;
     }
@@ -1088,32 +1139,27 @@
 int * molecule::GetFatherSonAtomicMap(molecule *OtherMolecule)
 {
-  atom *Walker = NULL, *OtherWalker = NULL;
   DoLog(3) && (Log() << Verbose(3) << "Begin of GetFatherAtomicMap." << endl);
-  int *AtomicMap = Malloc<int>(AtomCount, "molecule::GetAtomicMap: *AtomicMap");
-  for (int i=AtomCount;i--;)
+  int *AtomicMap = new int[getAtomCount()];
+  for (int i=getAtomCount();i--;)
     AtomicMap[i] = -1;
   if (OtherMolecule == this) {  // same molecule
-    for (int i=AtomCount;i--;) // no need as -1 means already that there is trivial correspondence
+    for (int i=getAtomCount();i--;) // no need as -1 means already that there is trivial correspondence
       AtomicMap[i] = i;
     DoLog(4) && (Log() << Verbose(4) << "Map is trivial." << endl);
   } else {
     DoLog(4) && (Log() << Verbose(4) << "Map is ");
-    Walker = start;
-    while (Walker->next != end) {
-      Walker = Walker->next;
-      if (Walker->father == NULL) {
-        AtomicMap[Walker->nr] = -2;
+    for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+      if ((*iter)->father == NULL) {
+        AtomicMap[(*iter)->nr] = -2;
       } else {
-        OtherWalker = OtherMolecule->start;
-        while (OtherWalker->next != OtherMolecule->end) {
-          OtherWalker = OtherWalker->next;
+        for (molecule::const_iterator runner = OtherMolecule->begin(); runner != OtherMolecule->end(); ++runner) {
       //for (int i=0;i<AtomCount;i++) { // search atom
-        //for (int j=0;j<OtherMolecule->AtomCount;j++) {
-          //Log() << Verbose(4) << "Comparing father " << Walker->father << " with the other one " << OtherWalker->father << "." << endl;
-          if (Walker->father == OtherWalker)
-            AtomicMap[Walker->nr] = OtherWalker->nr;
+        //for (int j=0;j<OtherMolecule->getAtomCount();j++) {
+          //Log() << Verbose(4) << "Comparing father " << (*iter)->father << " with the other one " << (*runner)->father << "." << endl;
+          if ((*iter)->father == (*runner))
+            AtomicMap[(*iter)->nr] = (*runner)->nr;
         }
       }
-      DoLog(0) && (Log() << Verbose(0) << AtomicMap[Walker->nr] << "\t");
+      DoLog(0) && (Log() << Verbose(0) << AtomicMap[(*iter)->nr] << "\t");
     }
     DoLog(0) && (Log() << Verbose(0) << endl);
@@ -1149,8 +1195,6 @@
 void molecule::SetIndexedArrayForEachAtomTo ( atom **array, int ParticleInfo::*index) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    array[(Walker->*index)] = Walker;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    array[((*iter)->*index)] = (*iter);
   }
 };
Index: src/molecule.hpp
===================================================================
--- src/molecule.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -34,4 +34,5 @@
 #include "tesselation.hpp"
 #include "Patterns/Observer.hpp"
+#include "Patterns/ObservedIterator.hpp"
 #include "Patterns/Cacheable.hpp"
 
@@ -90,12 +91,18 @@
   friend molecule *NewMolecule();
   friend void DeleteMolecule(molecule *);
+
   public:
+    typedef std::set<atom*> atomSet;
+    typedef ObservedIterator<atomSet> iterator;
+    typedef atomSet::const_iterator const_iterator;
+
     const periodentafel * const elemente; //!< periodic table with each element
-    atom *start;        //!< start of atom list
-    atom *end;          //!< end of atom list
-    bond *first;        //!< start of bond list
-    bond *last;         //!< end of bond list
+    // old deprecated atom handling
+    //atom *start;        //!< start of atom list
+    //atom *end;          //!< end of atom list
+    //bond *first;        //!< start of bond list
+    //bond *last;         //!< end of bond list
     int MDSteps;        //!< The number of MD steps in Trajectories
-    int AtomCount;          //!< number of atoms, brought up-to-date by CountAtoms()
+    //int AtomCount;          //!< number of atoms, brought up-to-date by CountAtoms()
     int BondCount;          //!< number of atoms, brought up-to-date by CountBonds()
     int ElementCount;       //!< how many unique elements are therein
@@ -112,6 +119,16 @@
   private:
     Cacheable<string> formula;
+    Cacheable<int>    AtomCount;
     moleculeId_t id;
+    atomSet atoms; //<!set of atoms
   protected:
+    //void CountAtoms();
+    /**
+     * this iterator type should be used for internal variables, \
+     * since it will not lock
+     */
+    typedef atomSet::iterator internal_iterator;
+
+
     molecule(const periodentafel * const teil);
     virtual ~molecule();
@@ -121,4 +138,6 @@
   //getter and setter
   const std::string getName();
+  int getAtomCount() const;
+  int doCountAtoms();
   moleculeId_t getId();
   void setId(moleculeId_t);
@@ -127,4 +146,15 @@
   std::string calcFormula();
 
+  iterator begin();
+  const_iterator begin() const;
+  iterator end();
+  const_iterator end() const;
+  bool empty() const;
+  size_t size() const;
+  const_iterator erase( const_iterator loc );
+  const_iterator erase( atom *& key );
+  const_iterator find (  atom *& key ) const;
+  pair<iterator,bool> insert ( atom * const key );
+
 
   // re-definition of virtual functions from PointCloud
@@ -132,10 +162,7 @@
   Vector *GetCenter() const ;
   TesselPoint *GetPoint() const ;
-  TesselPoint *GetTerminalPoint() const ;
   int GetMaxId() const;
   void GoToNext() const ;
-  void GoToPrevious() const ;
   void GoToFirst() const ;
-  void GoToLast() const ;
   bool IsEmpty() const ;
   bool IsEnd() const ;
@@ -226,4 +253,6 @@
   bool RemoveBond(bond *pointer);
   bool RemoveBonds(atom *BondPartner);
+  bool hasBondStructure();
+  unsigned int CountBonds() const;
 
   /// Find atoms.
@@ -232,5 +261,4 @@
 
   /// Count and change present atoms' coordination.
-  void CountAtoms();
   void CountElements();
   void CalculateOrbitals(class config &configuration);
@@ -249,4 +277,5 @@
   Vector * DetermineCenterOfGravity();
   Vector * DetermineCenterOfAll() const;
+  Vector * DetermineCenterOfBox() const;
   void SetNameFromFilename(const char *filename);
   void SetBoxDimension(Vector *dim);
@@ -301,4 +330,5 @@
   bool StoreForcesFile(MoleculeListClass *BondFragments, char *path, int *SortIndex);
   bool CreateMappingLabelsToConfigSequence(int *&SortIndex);
+  bool CreateFatherLookupTable(atom **&LookupTable, int count = 0);
   void BreadthFirstSearchAdd(molecule *Mol, atom **&AddedAtomList, bond **&AddedBondList, atom *Root, bond *Bond, int BondOrder, bool IsAngstroem);
   /// -# BOSSANOVA
@@ -329,5 +359,5 @@
   private:
   int last_atom;      //!< number given to last atom
-  mutable atom *InternalPointer;  //!< internal pointer for PointCloud
+  mutable internal_iterator InternalPointer;  //!< internal pointer for PointCloud
 };
 
@@ -350,4 +380,5 @@
   bool StoreForcesFile(char *path, int *SortIndex);
   void insert(molecule *mol);
+  void erase(molecule *mol);
   molecule * ReturnIndex(int index);
   bool OutputConfigForListOfFragments(config *configuration, int *SortIndex);
Index: src/molecule_dynamics.cpp
===================================================================
--- src/molecule_dynamics.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule_dynamics.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -10,4 +10,5 @@
 #include "config.hpp"
 #include "element.hpp"
+#include "info.hpp"
 #include "log.hpp"
 #include "memoryallocator.hpp"
@@ -28,12 +29,10 @@
   gsl_matrix *A = gsl_matrix_alloc(NDIM,NDIM);
   gsl_vector *x = gsl_vector_alloc(NDIM);
-  atom * Runner = mol->start;
   atom *Sprinter = NULL;
   Vector trajectory1, trajectory2, normal, TestVector;
   double Norm1, Norm2, tmp, result = 0.;
 
-  while (Runner->next != mol->end) {
-    Runner = Runner->next;
-    if (Runner == Walker) // hence, we only go up to the Walker, not beyond (similar to i=0; i<j; i++)
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    if ((*iter) == Walker) // hence, we only go up to the Walker, not beyond (similar to i=0; i<j; i++)
       break;
     // determine normalized trajectories direction vector (n1, n2)
@@ -42,19 +41,19 @@
     trajectory1.Normalize();
     Norm1 = trajectory1.Norm();
-    Sprinter = Params.PermutationMap[Runner->nr];   // find second target point
-    trajectory2 = Sprinter->Trajectory.R.at(Params.endstep) - Runner->Trajectory.R.at(Params.startstep);
+    Sprinter = Params.PermutationMap[(*iter)->nr];   // find second target point
+    trajectory2 = Sprinter->Trajectory.R.at(Params.endstep) - (*iter)->Trajectory.R.at(Params.startstep);
     trajectory2.Normalize();
     Norm2 = trajectory1.Norm();
     // check whether either is zero()
     if ((Norm1 < MYEPSILON) && (Norm2 < MYEPSILON)) {
-      tmp = Walker->Trajectory.R.at(Params.startstep).distance(Runner->Trajectory.R.at(Params.startstep));
+      tmp = Walker->Trajectory.R.at(Params.startstep).distance((*iter)->Trajectory.R.at(Params.startstep));
     } else if (Norm1 < MYEPSILON) {
       Sprinter = Params.PermutationMap[Walker->nr];   // find first target point
-      trajectory1 = Sprinter->Trajectory.R.at(Params.endstep) - Runner->Trajectory.R.at(Params.startstep);
+      trajectory1 = Sprinter->Trajectory.R.at(Params.endstep) - (*iter)->Trajectory.R.at(Params.startstep);
       trajectory2 *= trajectory1.ScalarProduct(trajectory2); // trajectory2 is scaled to unity, hence we don't need to divide by anything
       trajectory1 -= trajectory2;   // project the part in norm direction away
       tmp = trajectory1.Norm();  // remaining norm is distance
     } else if (Norm2 < MYEPSILON) {
-      Sprinter = Params.PermutationMap[Runner->nr];   // find second target point
+      Sprinter = Params.PermutationMap[(*iter)->nr];   // find second target point
       trajectory2 = Sprinter->Trajectory.R.at(Params.endstep) - Walker->Trajectory.R.at(Params.startstep);  // copy second offset
       trajectory1 *= trajectory2.ScalarProduct(trajectory1); // trajectory1 is scaled to unity, hence we don't need to divide by anything
@@ -66,8 +65,8 @@
   //        Log() << Verbose(0) << " and ";
   //        Log() << Verbose(0) << trajectory2;
-      tmp = Walker->Trajectory.R.at(Params.startstep).distance(Runner->Trajectory.R.at(Params.startstep));
+      tmp = Walker->Trajectory.R.at(Params.startstep).distance((*iter)->Trajectory.R.at(Params.startstep));
   //        Log() << Verbose(0) << " with distance " << tmp << "." << endl;
     } else { // determine distance by finding minimum distance
-  //        Log() << Verbose(3) << "Both trajectories of " << *Walker << " and " << *Runner << " are linear independent ";
+  //        Log() << Verbose(3) << "Both trajectories of " << *Walker << " and " << *(*iter) << " are linear independent ";
   //        Log() << Verbose(0) << endl;
   //        Log() << Verbose(0) << "First Trajectory: ";
@@ -85,5 +84,5 @@
         gsl_matrix_set(A, 1, i, trajectory2[i]);
         gsl_matrix_set(A, 2, i, normal[i]);
-        gsl_vector_set(x,i, (Walker->Trajectory.R.at(Params.startstep)[i] - Runner->Trajectory.R.at(Params.startstep)[i]));
+        gsl_vector_set(x,i, (Walker->Trajectory.R.at(Params.startstep)[i] - (*iter)->Trajectory.R.at(Params.startstep)[i]));
       }
       // solve the linear system by Householder transformations
@@ -96,5 +95,5 @@
       trajectory2.Scale(gsl_vector_get(x,1));
       normal.Scale(gsl_vector_get(x,2));
-      TestVector = Runner->Trajectory.R.at(Params.startstep) + trajectory2 + normal
+      TestVector = (*iter)->Trajectory.R.at(Params.startstep) + trajectory2 + normal
                    - (Walker->Trajectory.R.at(Params.startstep) + trajectory1);
       if (TestVector.Norm() < MYEPSILON) {
@@ -125,10 +124,8 @@
 {
   double result = 0.;
-  atom * Runner = mol->start;
-  while (Runner->next != mol->end) {
-    Runner = Runner->next;
-    if ((Params.PermutationMap[Walker->nr] == Params.PermutationMap[Runner->nr]) && (Walker->nr < Runner->nr)) {
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    if ((Params.PermutationMap[Walker->nr] == Params.PermutationMap[(*iter)->nr]) && (Walker->nr < (*iter)->nr)) {
   //    atom *Sprinter = PermutationMap[Walker->nr];
-  //        Log() << Verbose(0) << *Walker << " and " << *Runner << " are heading to the same target at ";
+  //        Log() << Verbose(0) << *Walker << " and " << *(*iter) << " are heading to the same target at ";
   //        Log() << Verbose(0) << Sprinter->Trajectory.R.at(endstep);
   //        Log() << Verbose(0) << ", penalting." << endl;
@@ -161,10 +158,8 @@
   // go through every atom
   atom *Runner = NULL;
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
     // first term: distance to target
-    Runner = Params.PermutationMap[Walker->nr];   // find target point
-    tmp = (Walker->Trajectory.R.at(Params.startstep).distance(Runner->Trajectory.R.at(Params.endstep)));
+    Runner = Params.PermutationMap[(*iter)->nr];   // find target point
+    tmp = ((*iter)->Trajectory.R.at(Params.startstep).distance(Runner->Trajectory.R.at(Params.endstep)));
     tmp *= Params.IsAngstroem ? 1. : 1./AtomicLengthToAngstroem;
     result += Params.PenaltyConstants[0] * tmp;
@@ -172,8 +167,8 @@
 
     // second term: sum of distances to other trajectories
-    result += SumDistanceOfTrajectories(Walker, this, Params);
+    result += SumDistanceOfTrajectories((*iter), this, Params);
 
     // third term: penalty for equal targets
-    result += PenalizeEqualTargets(Walker, this, Params);
+    result += PenalizeEqualTargets((*iter), this, Params);
   }
 
@@ -189,5 +184,7 @@
 {
   stringstream zeile1, zeile2;
-  int *DoubleList = Calloc<int>(AtomCount, "PrintPermutationMap: *DoubleList");
+  int *DoubleList = new int[AtomCount];
+  for(int i=0;i<AtomCount;i++)
+    DoubleList[i] = 0;
   int doubles = 0;
   zeile1 << "PermutationMap: ";
@@ -203,5 +200,5 @@
   if (doubles >0)
     DoLog(2) && (Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl);
-  Free(&DoubleList);
+  delete[](DoubleList);
 //  Log() << Verbose(2) << zeile1.str() << endl << zeile2.str() << endl;
 };
@@ -213,17 +210,12 @@
 void FillDistanceList(molecule *mol, struct EvaluatePotential &Params)
 {
-  for (int i=mol->AtomCount; i--;) {
+  for (int i=mol->getAtomCount(); i--;) {
     Params.DistanceList[i] = new DistanceMap;    // is the distance sorted target list per atom
     Params.DistanceList[i]->clear();
   }
 
-  atom *Runner = NULL;
-  atom *Walker = mol->start;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    Runner = mol->start;
-    while(Runner->next != mol->end) {
-      Runner = Runner->next;
-      Params.DistanceList[Walker->nr]->insert( DistancePair(Walker->Trajectory.R.at(Params.startstep).distance(Runner->Trajectory.R.at(Params.endstep)), Runner) );
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    for (molecule::const_iterator runner = mol->begin(); runner != mol->end(); ++runner) {
+      Params.DistanceList[(*iter)->nr]->insert( DistancePair((*iter)->Trajectory.R.at(Params.startstep).distance((*runner)->Trajectory.R.at(Params.endstep)), (*runner)) );
     }
   }
@@ -237,12 +229,10 @@
 void CreateInitialLists(molecule *mol, struct EvaluatePotential &Params)
 {
-  atom *Walker = mol->start;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    Params.StepList[Walker->nr] = Params.DistanceList[Walker->nr]->begin();    // stores the step to the next iterator that could be a possible next target
-    Params.PermutationMap[Walker->nr] = Params.DistanceList[Walker->nr]->begin()->second;   // always pick target with the smallest distance
-    Params.DoubleList[Params.DistanceList[Walker->nr]->begin()->second->nr]++;            // increase this target's source count (>1? not injective)
-    Params.DistanceIterators[Walker->nr] = Params.DistanceList[Walker->nr]->begin();    // and remember which one we picked
-    DoLog(2) && (Log() << Verbose(2) << *Walker << " starts with distance " << Params.DistanceList[Walker->nr]->begin()->first << "." << endl);
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    Params.StepList[(*iter)->nr] = Params.DistanceList[(*iter)->nr]->begin();    // stores the step to the next iterator that could be a possible next target
+    Params.PermutationMap[(*iter)->nr] = Params.DistanceList[(*iter)->nr]->begin()->second;   // always pick target with the smallest distance
+    Params.DoubleList[Params.DistanceList[(*iter)->nr]->begin()->second->nr]++;            // increase this target's source count (>1? not injective)
+    Params.DistanceIterators[(*iter)->nr] = Params.DistanceList[(*iter)->nr]->begin();    // and remember which one we picked
+    DoLog(2) && (Log() << Verbose(2) << **iter << " starts with distance " << Params.DistanceList[(*iter)->nr]->begin()->first << "." << endl);
   }
 };
@@ -285,19 +275,23 @@
 void MakeInjectivePermutation(molecule *mol, struct EvaluatePotential &Params)
 {
-  atom *Walker = mol->start;
+  molecule::const_iterator iter = mol->begin();
   DistanceMap::iterator NewBase;
   double Potential = fabs(mol->ConstrainedPotential(Params));
 
+  if (mol->empty()) {
+    eLog() << Verbose(1) << "Molecule is empty." << endl;
+    return;
+  }
   while ((Potential) > Params.PenaltyConstants[2]) {
-    PrintPermutationMap(mol->AtomCount, Params);
-    Walker = Walker->next;
-    if (Walker == mol->end) // round-robin at the end
-      Walker = mol->start->next;
-    if (Params.DoubleList[Params.DistanceIterators[Walker->nr]->second->nr] <= 1)  // no need to make those injective that aren't
+    PrintPermutationMap(mol->getAtomCount(), Params);
+    iter++;
+    if (iter == mol->end()) // round-robin at the end
+      iter = mol->begin();
+    if (Params.DoubleList[Params.DistanceIterators[(*iter)->nr]->second->nr] <= 1)  // no need to make those injective that aren't
       continue;
     // now, try finding a new one
-    Potential = TryNextNearestNeighbourForInjectivePermutation(mol, Walker, Potential, Params);
-  }
-  for (int i=mol->AtomCount; i--;) // now each single entry in the DoubleList should be <=1
+    Potential = TryNextNearestNeighbourForInjectivePermutation(mol, (*iter), Potential, Params);
+  }
+  for (int i=mol->getAtomCount(); i--;) // now each single entry in the DoubleList should be <=1
     if (Params.DoubleList[i] > 1) {
       DoeLog(0) && (eLog()<< Verbose(0) << "Failed to create an injective PermutationMap!" << endl);
@@ -338,12 +332,18 @@
   double Potential, OldPotential, OlderPotential;
   struct EvaluatePotential Params;
-  Params.PermutationMap = Calloc<atom*>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.**PermutationMap");
-  Params.DistanceList = Malloc<DistanceMap*>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.**DistanceList");
-  Params.DistanceIterators = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.*DistanceIterators");
-  Params.DoubleList = Calloc<int>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.*DoubleList");
-  Params.StepList = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.*StepList");
+  Params.PermutationMap = new atom *[getAtomCount()];
+  Params.DistanceList = new DistanceMap *[getAtomCount()];
+  Params.DistanceIterators = new DistanceMap::iterator[getAtomCount()];
+  Params.DoubleList = new int[getAtomCount()];
+  Params.StepList = new DistanceMap::iterator[getAtomCount()];
   int round;
-  atom *Walker = NULL, *Runner = NULL, *Sprinter = NULL;
+  atom *Sprinter = NULL;
   DistanceMap::iterator Rider, Strider;
+
+  // set to zero
+  for (int i=0;i<getAtomCount();i++) {
+    Params.PermutationMap[i] = NULL;
+    Params.DoubleList[i] = 0;
+  }
 
   /// Minimise the potential
@@ -362,5 +362,5 @@
   DoLog(1) && (Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl);
   MakeInjectivePermutation(this, Params);
-  Free(&Params.DoubleList);
+  delete[](Params.DoubleList);
 
   // argument minimise the constrained potential in this injective PermutationMap
@@ -371,38 +371,37 @@
     DoLog(2) && (Log() << Verbose(2) << "Starting round " << ++round << ", at current potential " << OldPotential << " ... " << endl);
     OlderPotential = OldPotential;
+    molecule::const_iterator iter;
     do {
-      Walker = start;
-      while (Walker->next != end) { // pick one
-        Walker = Walker->next;
-        PrintPermutationMap(AtomCount, Params);
-        Sprinter = Params.DistanceIterators[Walker->nr]->second;   // store initial partner
-        Strider = Params.DistanceIterators[Walker->nr];  //remember old iterator
-        Params.DistanceIterators[Walker->nr] = Params.StepList[Walker->nr];
-        if (Params.DistanceIterators[Walker->nr] == Params.DistanceList[Walker->nr]->end()) {// stop, before we run through the list and still on
-          Params.DistanceIterators[Walker->nr] == Params.DistanceList[Walker->nr]->begin();
+      iter = begin();
+      for (; iter != end(); ++iter) {
+        PrintPermutationMap(getAtomCount(), Params);
+        Sprinter = Params.DistanceIterators[(*iter)->nr]->second;   // store initial partner
+        Strider = Params.DistanceIterators[(*iter)->nr];  //remember old iterator
+        Params.DistanceIterators[(*iter)->nr] = Params.StepList[(*iter)->nr];
+        if (Params.DistanceIterators[(*iter)->nr] == Params.DistanceList[(*iter)->nr]->end()) {// stop, before we run through the list and still on
+          Params.DistanceIterators[(*iter)->nr] == Params.DistanceList[(*iter)->nr]->begin();
           break;
         }
-        //Log() << Verbose(2) << "Current Walker: " << *Walker << " with old/next candidate " << *Sprinter << "/" << *DistanceIterators[Walker->nr]->second << "." << endl;
+        //Log() << Verbose(2) << "Current Walker: " << *(*iter) << " with old/next candidate " << *Sprinter << "/" << *DistanceIterators[(*iter)->nr]->second << "." << endl;
         // find source of the new target
-        Runner = start->next;
-        while(Runner != end) { // find the source whose toes we might be stepping on (Walker's new target should be in use by another already)
-          if (Params.PermutationMap[Runner->nr] == Params.DistanceIterators[Walker->nr]->second) {
-            //Log() << Verbose(2) << "Found the corresponding owner " << *Runner << " to " << *PermutationMap[Runner->nr] << "." << endl;
+        molecule::const_iterator runner = begin();
+        for (; runner != end(); ++runner) { // find the source whose toes we might be stepping on (Walker's new target should be in use by another already)
+          if (Params.PermutationMap[(*runner)->nr] == Params.DistanceIterators[(*iter)->nr]->second) {
+            //Log() << Verbose(2) << "Found the corresponding owner " << *(*runner) << " to " << *PermutationMap[(*runner)->nr] << "." << endl;
             break;
           }
-          Runner = Runner->next;
         }
-        if (Runner != end) { // we found the other source
+        if (runner != end()) { // we found the other source
           // then look in its distance list for Sprinter
-          Rider = Params.DistanceList[Runner->nr]->begin();
-          for (; Rider != Params.DistanceList[Runner->nr]->end(); Rider++)
+          Rider = Params.DistanceList[(*runner)->nr]->begin();
+          for (; Rider != Params.DistanceList[(*runner)->nr]->end(); Rider++)
             if (Rider->second == Sprinter)
               break;
-          if (Rider != Params.DistanceList[Runner->nr]->end()) { // if we have found one
-            //Log() << Verbose(2) << "Current Other: " << *Runner << " with old/next candidate " << *PermutationMap[Runner->nr] << "/" << *Rider->second << "." << endl;
+          if (Rider != Params.DistanceList[(*runner)->nr]->end()) { // if we have found one
+            //Log() << Verbose(2) << "Current Other: " << *(*runner) << " with old/next candidate " << *PermutationMap[(*runner)->nr] << "/" << *Rider->second << "." << endl;
             // exchange both
-            Params.PermutationMap[Walker->nr] = Params.DistanceIterators[Walker->nr]->second; // put next farther distance into PermutationMap
-            Params.PermutationMap[Runner->nr] = Sprinter;  // and hand the old target to its respective owner
-            PrintPermutationMap(AtomCount, Params);
+            Params.PermutationMap[(*iter)->nr] = Params.DistanceIterators[(*iter)->nr]->second; // put next farther distance into PermutationMap
+            Params.PermutationMap[(*runner)->nr] = Sprinter;  // and hand the old target to its respective owner
+            PrintPermutationMap(getAtomCount(), Params);
             // calculate the new potential
             //Log() << Verbose(2) << "Checking new potential ..." << endl;
@@ -410,13 +409,13 @@
             if (Potential > OldPotential) { // we made everything worse! Undo ...
               //Log() << Verbose(3) << "Nay, made the potential worse: " << Potential << " vs. " << OldPotential << "!" << endl;
-              //Log() << Verbose(3) << "Setting " << *Runner << "'s source to " << *Params.DistanceIterators[Runner->nr]->second << "." << endl;
+              //Log() << Verbose(3) << "Setting " << *(*runner) << "'s source to " << *Params.DistanceIterators[(*runner)->nr]->second << "." << endl;
               // Undo for Runner (note, we haven't moved the iteration yet, we may use this)
-              Params.PermutationMap[Runner->nr] = Params.DistanceIterators[Runner->nr]->second;
+              Params.PermutationMap[(*runner)->nr] = Params.DistanceIterators[(*runner)->nr]->second;
               // Undo for Walker
-              Params.DistanceIterators[Walker->nr] = Strider;  // take next farther distance target
-              //Log() << Verbose(3) << "Setting " << *Walker << "'s source to " << *Params.DistanceIterators[Walker->nr]->second << "." << endl;
-              Params.PermutationMap[Walker->nr] = Params.DistanceIterators[Walker->nr]->second;
+              Params.DistanceIterators[(*iter)->nr] = Strider;  // take next farther distance target
+              //Log() << Verbose(3) << "Setting " << *(*iter) << "'s source to " << *Params.DistanceIterators[(*iter)->nr]->second << "." << endl;
+              Params.PermutationMap[(*iter)->nr] = Params.DistanceIterators[(*iter)->nr]->second;
             } else {
-              Params.DistanceIterators[Runner->nr] = Rider;  // if successful also move the pointer in the iterator list
+              Params.DistanceIterators[(*runner)->nr] = Rider;  // if successful also move the pointer in the iterator list
               DoLog(3) && (Log() << Verbose(3) << "Found a better permutation, new potential is " << Potential << " vs." << OldPotential << "." << endl);
               OldPotential = Potential;
@@ -428,13 +427,13 @@
             //Log() << Verbose(0) << endl;
           } else {
-            DoeLog(1) && (eLog()<< Verbose(1) << *Runner << " was not the owner of " << *Sprinter << "!" << endl);
+            DoeLog(1) && (eLog()<< Verbose(1) << **runner << " was not the owner of " << *Sprinter << "!" << endl);
             exit(255);
           }
         } else {
-          Params.PermutationMap[Walker->nr] = Params.DistanceIterators[Walker->nr]->second; // new target has no source!
+          Params.PermutationMap[(*iter)->nr] = Params.DistanceIterators[(*iter)->nr]->second; // new target has no source!
         }
-        Params.StepList[Walker->nr]++; // take next farther distance target
+        Params.StepList[(*iter)->nr]++; // take next farther distance target
       }
-    } while (Walker->next != end);
+    } while (++iter != end());
   } while ((OlderPotential - OldPotential) > 1e-3);
   DoLog(1) && (Log() << Verbose(1) << "done." << endl);
@@ -442,8 +441,8 @@
 
   /// free memory and return with evaluated potential
-  for (int i=AtomCount; i--;)
+  for (int i=getAtomCount(); i--;)
     Params.DistanceList[i]->clear();
-  Free(&Params.DistanceList);
-  Free(&Params.DistanceIterators);
+  delete[](Params.DistanceList);
+  delete[](Params.DistanceIterators);
   return ConstrainedPotential(Params);
 };
@@ -483,9 +482,9 @@
   // Get the Permutation Map by MinimiseConstrainedPotential
   atom **PermutationMap = NULL;
-  atom *Walker = NULL, *Sprinter = NULL;
+  atom *Sprinter = NULL;
   if (!MapByIdentity)
     MinimiseConstrainedPotential(PermutationMap, startstep, endstep, configuration.GetIsAngstroem());
   else {
-    PermutationMap = Malloc<atom *>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: **PermutationMap");
+    PermutationMap = new atom *[getAtomCount()];
     SetIndexedArrayForEachAtomTo( PermutationMap, &atom::nr );
   }
@@ -502,17 +501,15 @@
     mol = World::getInstance().createMolecule();
     MoleculePerStep->insert(mol);
-    Walker = start;
-    while (Walker->next != end) {
-      Walker = Walker->next;
+    for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
       // add to molecule list
-      Sprinter = mol->AddCopyAtom(Walker);
+      Sprinter = mol->AddCopyAtom((*iter));
       for (int n=NDIM;n--;) {
-        Sprinter->x[n] = Walker->Trajectory.R.at(startstep)[n] + (PermutationMap[Walker->nr]->Trajectory.R.at(endstep)[n] - Walker->Trajectory.R.at(startstep)[n])*((double)step/(double)MaxSteps);
+        Sprinter->x[n] = (*iter)->Trajectory.R.at(startstep)[n] + (PermutationMap[(*iter)->nr]->Trajectory.R.at(endstep)[n] - (*iter)->Trajectory.R.at(startstep)[n])*((double)step/(double)MaxSteps);
         // add to Trajectories
         //Log() << Verbose(3) << step << ">=" << MDSteps-1 << endl;
         if (step < MaxSteps) {
-          Walker->Trajectory.R.at(step)[n] = Walker->Trajectory.R.at(startstep)[n] + (PermutationMap[Walker->nr]->Trajectory.R.at(endstep)[n] - Walker->Trajectory.R.at(startstep)[n])*((double)step/(double)MaxSteps);
-          Walker->Trajectory.U.at(step)[n] = 0.;
-          Walker->Trajectory.F.at(step)[n] = 0.;
+          (*iter)->Trajectory.R.at(step)[n] = (*iter)->Trajectory.R.at(startstep)[n] + (PermutationMap[(*iter)->nr]->Trajectory.R.at(endstep)[n] - (*iter)->Trajectory.R.at(startstep)[n])*((double)step/(double)MaxSteps);
+          (*iter)->Trajectory.U.at(step)[n] = 0.;
+          (*iter)->Trajectory.F.at(step)[n] = 0.;
         }
       }
@@ -522,11 +519,12 @@
 
   // store the list to single step files
-  int *SortIndex = Malloc<int>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: *SortIndex");
-  for (int i=AtomCount; i--; )
+  int *SortIndex = new int[getAtomCount()];
+  for (int i=getAtomCount(); i--; )
     SortIndex[i] = i;
   status = MoleculePerStep->OutputConfigForListOfFragments(&configuration, SortIndex);
+  delete[](SortIndex);
 
   // free and return
-  Free(&PermutationMap);
+  delete[](PermutationMap);
   delete(MoleculePerStep);
   return status;
@@ -548,4 +546,5 @@
 bool molecule::VerletForceIntegration(char *file, config &configuration)
 {
+  Info FunctionInfo(__func__);
   ifstream input(file);
   string token;
@@ -567,6 +566,6 @@
       return false;
     }
-    if (Force.RowCounter[0] != AtomCount) {
-      DoeLog(0) && (eLog()<< Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl);
+    if (Force.RowCounter[0] != getAtomCount()) {
+      DoeLog(0) && (eLog()<< Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << getAtomCount() << "." << endl);
       performCriticalExit();
       return false;
@@ -574,11 +573,11 @@
     // correct Forces
     Velocity.Zero();
-    for(int i=0;i<AtomCount;i++)
+    for(int i=0;i<getAtomCount();i++)
       for(int d=0;d<NDIM;d++) {
         Velocity[d] += Force.Matrix[0][i][d+5];
       }
-    for(int i=0;i<AtomCount;i++)
+    for(int i=0;i<getAtomCount();i++)
       for(int d=0;d<NDIM;d++) {
-        Force.Matrix[0][i][d+5] -= Velocity[d]/(double)AtomCount;
+        Force.Matrix[0][i][d+5] -= Velocity[d]/static_cast<double>(getAtomCount());
       }
     // solve a constrained potential if we are meant to
@@ -588,22 +587,22 @@
       ConstrainedPotentialEnergy = MinimiseConstrainedPotential(PermutationMap,configuration.DoConstrainedMD, 0, configuration.GetIsAngstroem());
       EvaluateConstrainedForces(configuration.DoConstrainedMD, 0, PermutationMap, &Force);
-      Free(&PermutationMap);
+      delete[](PermutationMap);
     }
 
     // and perform Verlet integration for each atom with position, velocity and force vector
     // check size of vectors
-    ActOnAllAtoms( &atom::ResizeTrajectory, MDSteps+10 );
-
-    ActOnAllAtoms( &atom::VelocityVerletUpdate, MDSteps, &configuration, &Force);
+    //ActOnAllAtoms( &atom::ResizeTrajectory, MDSteps+10 );
+
+    ActOnAllAtoms( &atom::VelocityVerletUpdate, MDSteps+1, &configuration, &Force);
   }
   // correct velocities (rather momenta) so that center of mass remains motionless
   Velocity.Zero();
   IonMass = 0.;
-  ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps, &IonMass, &Velocity );
+  ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps+1, &IonMass, &Velocity );
 
   // correct velocities (rather momenta) so that center of mass remains motionless
   Velocity.Scale(1./IonMass);
   ActualTemp = 0.;
-  ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps, &Velocity );
+  ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps+1, &Velocity );
   Thermostats(configuration, ActualTemp, Berendsen);
   MDSteps++;
@@ -683,5 +682,5 @@
       delta_alpha = 0.;
       ActOnAllAtoms( &atom::Thermostat_NoseHoover_init, MDSteps, &delta_alpha );
-      delta_alpha = (delta_alpha - (3.*AtomCount+1.) * configuration.TargetTemp)/(configuration.HooverMass*Units2Electronmass);
+      delta_alpha = (delta_alpha - (3.*getAtomCount()+1.) * configuration.TargetTemp)/(configuration.HooverMass*Units2Electronmass);
       configuration.alpha += delta_alpha*configuration.Deltat;
       DoLog(3) && (Log() << Verbose(3) << "alpha = " << delta_alpha << " * " << configuration.Deltat << " = " << configuration.alpha << "." << endl);
Index: src/molecule_fragmentation.cpp
===================================================================
--- src/molecule_fragmentation.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule_fragmentation.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -39,8 +39,6 @@
   int FragmentCount;
   // get maximum bond degree
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    c = (Walker->ListOfBonds.size() > c) ? Walker->ListOfBonds.size() : c;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    c = ((*iter)->ListOfBonds.size() > c) ? (*iter)->ListOfBonds.size() : c;
   }
   FragmentCount = NoNonHydrogen*(1 << (c*order));
@@ -94,5 +92,5 @@
   GraphTestPair testGraphInsert;
   int NumberOfFragments = 0;
-  char *filename = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseKeySetFile - filename");
+  char filename[MAXSTRINGSIZE];
 
   if (FragmentList == NULL) { // check list pointer
@@ -106,5 +104,5 @@
   if (InputFile != NULL) {
     // each line represents a new fragment
-    char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseKeySetFile - *buffer");
+    char buffer[MAXSTRINGSIZE];
     // 1. parse keysets and insert into temp. graph
     while (!InputFile.eof()) {
@@ -122,12 +120,10 @@
     InputFile.close();
     InputFile.clear();
-    Free(&buffer);
-    DoLog(1) && (Log() << Verbose(1) << "done." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t ... done." << endl);
   } else {
-    DoLog(1) && (Log() << Verbose(1) << "File " << filename << " not found." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t ... File " << filename << " not found." << endl);
     status = false;
   }
 
-  Free(&filename);
   return status;
 };
@@ -148,5 +144,5 @@
   int NumberOfFragments = 0;
   double TEFactor;
-  char *filename = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseTEFactorsFile - filename");
+  char filename[MAXSTRINGSIZE];
 
   if (FragmentList == NULL) { // check list pointer
@@ -179,7 +175,4 @@
   }
 
-  // free memory
-  Free(&filename);
-
   return status;
 };
@@ -317,5 +310,5 @@
   int No = 0, FragOrder = 0;
   double Value = 0.;
-  char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::CheckOrderAtSite: *buffer");
+  char buffer[MAXSTRINGSIZE];
   sprintf(buffer, "%s/%s%s.dat", path, FRAGMENTPREFIX, ENERGYPERFRAGMENT);
   ifstream InputFile(buffer, ios::in);
@@ -345,5 +338,4 @@
     InputFile.clear();
   }
-  Free(&buffer);
 
   return AdaptiveCriteriaList;
@@ -359,5 +351,5 @@
 map<double, pair<int,int> >  * ReMapAdaptiveCriteriaListToValue(map<int, pair<double,int> > *AdaptiveCriteriaList, molecule *mol)
 {
-  atom *Walker = mol->start;
+  atom *Walker = NULL;
   map<double, pair<int,int> > *FinalRootCandidates = new map<double, pair<int,int> > ;
   DoLog(1) && (Log() << Verbose(1) << "Root candidate list is: " << endl);
@@ -391,5 +383,5 @@
 bool MarkUpdateCandidates(bool *AtomMask, map<double, pair<int,int> > &FinalRootCandidates, int Order, molecule *mol)
 {
-  atom *Walker = mol->start;
+  atom *Walker = NULL;
   int No = -1;
   bool status = false;
@@ -435,13 +427,12 @@
 bool molecule::CheckOrderAtSite(bool *AtomMask, Graph *GlobalKeySetList, int Order, int *MinimumRingSize, char *path)
 {
-  atom *Walker = start;
   bool status = false;
 
   // initialize mask list
-  for(int i=AtomCount;i--;)
+  for(int i=getAtomCount();i--;)
     AtomMask[i] = false;
 
   if (Order < 0) { // adaptive increase of BondOrder per site
-    if (AtomMask[AtomCount] == true)  // break after one step
+    if (AtomMask[getAtomCount()] == true)  // break after one step
       return false;
 
@@ -457,11 +448,10 @@
     if (AdaptiveCriteriaList->empty()) {
       DoeLog(2) && (eLog()<< Verbose(2) << "Unable to parse file, incrementing all." << endl);
-      while (Walker->next != end) {
-        Walker = Walker->next;
+      for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
     #ifdef ADDHYDROGEN
-        if (Walker->type->Z != 1) // skip hydrogen
+        if ((*iter)->type->Z != 1) // skip hydrogen
     #endif
         {
-          AtomMask[Walker->nr] = true;  // include all (non-hydrogen) atoms
+          AtomMask[(*iter)->nr] = true;  // include all (non-hydrogen) atoms
           status = true;
         }
@@ -474,20 +464,19 @@
     MarkUpdateCandidates(AtomMask, *FinalRootCandidates, Order, this);
 
-    Free(&IndexKeySetList);
-    Free(&AdaptiveCriteriaList);
-    Free(&FinalRootCandidates);
+    delete[](IndexKeySetList);
+    delete[](AdaptiveCriteriaList);
+    delete[](FinalRootCandidates);
   } else { // global increase of Bond Order
-    while (Walker->next != end) {
-      Walker = Walker->next;
+    for(molecule::const_iterator iter = begin(); iter != end(); ++iter) {
   #ifdef ADDHYDROGEN
-      if (Walker->type->Z != 1) // skip hydrogen
+      if ((*iter)->type->Z != 1) // skip hydrogen
   #endif
       {
-        AtomMask[Walker->nr] = true;  // include all (non-hydrogen) atoms
-        if ((Order != 0) && (Walker->AdaptiveOrder < Order)) // && (Walker->AdaptiveOrder < MinimumRingSize[Walker->nr]))
+        AtomMask[(*iter)->nr] = true;  // include all (non-hydrogen) atoms
+        if ((Order != 0) && ((*iter)->AdaptiveOrder < Order)) // && ((*iter)->AdaptiveOrder < MinimumRingSize[(*iter)->nr]))
           status = true;
       }
     }
-    if ((Order == 0) && (AtomMask[AtomCount] == false))  // single stepping, just check
+    if ((!Order) && (!AtomMask[getAtomCount()]))  // single stepping, just check
       status = true;
 
@@ -500,5 +489,5 @@
   }
 
-  PrintAtomMask(AtomMask, AtomCount); // for debugging
+  PrintAtomMask(AtomMask, getAtomCount()); // for debugging
 
   return status;
@@ -516,6 +505,6 @@
     return false;
   }
-  SortIndex = Malloc<int>(AtomCount, "molecule::CreateMappingLabelsToConfigSequence: *SortIndex");
-  for(int i=AtomCount;i--;)
+  SortIndex = new int[getAtomCount()];
+  for(int i=getAtomCount();i--;)
     SortIndex[i] = -1;
 
@@ -524,4 +513,59 @@
 
   return true;
+};
+
+
+
+/** Creates a lookup table for true father's Atom::Nr -> atom ptr.
+ * \param *start begin of list (STL iterator, i.e. first item)
+ * \paran *end end of list (STL iterator, i.e. one past last item)
+ * \param **Lookuptable pointer to return allocated lookup table (should be NULL on start)
+ * \param count optional predetermined size for table (otherwise we set the count to highest true father id)
+ * \return true - success, false - failure
+ */
+bool molecule::CreateFatherLookupTable(atom **&LookupTable, int count)
+{
+  bool status = true;
+  int AtomNo;
+
+  if (LookupTable != NULL) {
+    Log() << Verbose(0) << "Pointer for Lookup table is not NULL! Aborting ..." <<endl;
+    return false;
+  }
+
+  // count them
+  if (count == 0) {
+    for (molecule::iterator iter = begin(); iter != end(); ++iter) { // create a lookup table (Atom::nr -> atom) used as a marker table lateron
+      count = (count < (*iter)->GetTrueFather()->nr) ? (*iter)->GetTrueFather()->nr : count;
+    }
+  }
+  if (count <= 0) {
+    Log() << Verbose(0) << "Count of lookup list is 0 or less." << endl;
+    return false;
+  }
+
+  // allocate and fill
+  LookupTable = new atom *[count];
+  if (LookupTable == NULL) {
+    eLog() << Verbose(0) << "LookupTable memory allocation failed!" << endl;
+    performCriticalExit();
+    status = false;
+  } else {
+    for (int i=0;i<count;i++)
+      LookupTable[i] = NULL;
+    for (molecule::iterator iter = begin(); iter != end(); ++iter) {
+      AtomNo = (*iter)->GetTrueFather()->nr;
+      if ((AtomNo >= 0) && (AtomNo < count)) {
+        //*out << "Setting LookupTable[" << AtomNo << "] to " << *(*iter) << endl;
+        LookupTable[AtomNo] = (*iter);
+      } else {
+        Log() << Verbose(0) << "Walker " << *(*iter) << " exceeded range of nuclear ids [0, " << count << ")." << endl;
+        status = false;
+        break;
+      }
+    }
+  }
+
+  return status;
 };
 
@@ -547,6 +591,5 @@
 {
   MoleculeListClass *BondFragments = NULL;
-  int *SortIndex = NULL;
-  int *MinimumRingSize = new int[AtomCount];
+  int *MinimumRingSize = new int[getAtomCount()];
   int FragmentCounter;
   MoleculeLeafClass *MolecularWalker = NULL;
@@ -576,9 +619,9 @@
 
   // create lookup table for Atom::nr
-  FragmentationToDo = FragmentationToDo && CreateFatherLookupTable(start, end, ListOfAtoms, AtomCount);
+  FragmentationToDo = FragmentationToDo && CreateFatherLookupTable(ListOfAtoms, getAtomCount());
 
   // === compare it with adjacency file ===
   FragmentationToDo = FragmentationToDo && CheckAdjacencyFileAgainstMolecule(configuration->configpath, ListOfAtoms);
-  Free(&ListOfAtoms);
+  delete[](ListOfAtoms);
 
   // ===== 2. perform a DFS analysis to gather info on cyclic structure and a list of disconnected subgraphs =====
@@ -586,6 +629,6 @@
 
   // analysis of the cycles (print rings, get minimum cycle length) for each subgraph
-  for(int i=AtomCount;i--;)
-    MinimumRingSize[i] = AtomCount;
+  for(int i=getAtomCount();i--;)
+    MinimumRingSize[i] = getAtomCount();
   MolecularWalker = Subgraphs;
   FragmentCounter = 0;
@@ -593,10 +636,10 @@
     MolecularWalker = MolecularWalker->next;
     // fill the bond structure of the individually stored subgraphs
-  MolecularWalker->FillBondStructureFromReference(this, FragmentCounter, ListOfLocalAtoms, false);  // we want to keep the created ListOfLocalAtoms
+    MolecularWalker->FillBondStructureFromReference(this, FragmentCounter, ListOfLocalAtoms, false);  // we want to keep the created ListOfLocalAtoms
     DoLog(0) && (Log() << Verbose(0) << "Analysing the cycles of subgraph " << MolecularWalker->Leaf << " with nr. " << FragmentCounter << "." << endl);
     LocalBackEdgeStack = new StackClass<bond *> (MolecularWalker->Leaf->BondCount);
 //    // check the list of local atoms for debugging
 //    Log() << Verbose(0) << "ListOfLocalAtoms for this subgraph is:" << endl;
-//    for (int i=0;i<AtomCount;i++)
+//    for (int i=0;i<getAtomCount();i++)
 //      if (ListOfLocalAtoms[FragmentCounter][i] == NULL)
 //        Log() << Verbose(0) << "\tNULL";
@@ -624,10 +667,10 @@
   // ===== 6b. prepare and go into the adaptive (Order<0), single-step (Order==0) or incremental (Order>0) cycle
   KeyStack *RootStack = new KeyStack[Subgraphs->next->Count()];
-  AtomMask = new bool[AtomCount+1];
-  AtomMask[AtomCount] = false;
+  AtomMask = new bool[getAtomCount()+1];
+  AtomMask[getAtomCount()] = false;
   FragmentationToDo = false;  // if CheckOrderAtSite just ones recommends fragmentation, we will save fragments afterwards
   while ((CheckOrder = CheckOrderAtSite(AtomMask, ParsedFragmentList, Order, MinimumRingSize, configuration->configpath))) {
     FragmentationToDo = FragmentationToDo || CheckOrder;
-    AtomMask[AtomCount] = true;   // last plus one entry is used as marker that we have been through this loop once already in CheckOrderAtSite()
+    AtomMask[getAtomCount()] = true;   // last plus one entry is used as marker that we have been through this loop once already in CheckOrderAtSite()
     // ===== 6b. fill RootStack for each subgraph (second adaptivity check) =====
     Subgraphs->next->FillRootStackForSubgraphs(RootStack, AtomMask, (FragmentCounter = 0));
@@ -640,5 +683,5 @@
       DoLog(1) && (Log() << Verbose(1) << "Fragmenting subgraph " << MolecularWalker << "." << endl);
       //MolecularWalker->Leaf->OutputListOfBonds(out);  // output atom::ListOfBonds for debugging
-      if (MolecularWalker->Leaf->first->next != MolecularWalker->Leaf->last) {
+      if (MolecularWalker->Leaf->hasBondStructure()) {
         // call BOSSANOVA method
         DoLog(0) && (Log() << Verbose(0) << endl << " ========== BOND ENERGY of subgraph " << FragmentCounter << " ========================= " << endl);
@@ -672,5 +715,5 @@
     delete(Subgraphs);
   }
-  Free(&FragmentList);
+  delete[](FragmentList);
 
   // ===== 8b. gather keyset lists (graphs) from all subgraphs and transform into MoleculeListClass =====
@@ -690,4 +733,5 @@
   if (BondFragments->ListOfMolecules.size() != 0) {
     // create the SortIndex from BFS labels to order in the config file
+    int *SortIndex = NULL;
     CreateMappingLabelsToConfigSequence(SortIndex);
 
@@ -704,10 +748,11 @@
     StoreKeySetFile(TotalGraph, configuration->configpath);
 
-    // store Adjacency file
-    char *filename = Malloc<char> (MAXSTRINGSIZE, "molecule::FragmentMolecule - *filename");
-    strcpy(filename, FRAGMENTPREFIX);
-    strcat(filename, ADJACENCYFILE);
-    StoreAdjacencyToFile(configuration->configpath, filename);
-    Free(&filename);
+    {
+      // store Adjacency file
+      char filename[MAXSTRINGSIZE];
+      strcpy(filename, FRAGMENTPREFIX);
+      strcat(filename, ADJACENCYFILE);
+      StoreAdjacencyToFile(configuration->configpath, filename);
+    }
 
     // store Hydrogen saturation correction file
@@ -722,6 +767,5 @@
     // free memory for bond part
     DoLog(1) && (Log() << Verbose(1) << "Freeing bond memory" << endl);
-    delete(FragmentList); // remove bond molecule from memory
-    Free(&SortIndex);
+    delete[](SortIndex);
   } else {
     DoLog(1) && (Log() << Verbose(1) << "FragmentList is zero on return, splitting failed." << endl);
@@ -768,10 +812,15 @@
 bool molecule::ParseOrderAtSiteFromFile(char *path)
 {
-  unsigned char *OrderArray = Calloc<unsigned char>(AtomCount, "molecule::ParseOrderAtSiteFromFile - *OrderArray");
-  bool *MaxArray = Calloc<bool>(AtomCount, "molecule::ParseOrderAtSiteFromFile - *MaxArray");
+  unsigned char *OrderArray = new unsigned char[getAtomCount()];
+  bool *MaxArray = new bool[getAtomCount()];
   bool status;
   int AtomNr, value;
   stringstream line;
   ifstream file;
+
+  for(int i=0;i<getAtomCount();i++) {
+    OrderArray[i] = 0;
+    MaxArray[i] = false;
+  }
 
   DoLog(1) && (Log() << Verbose(1) << "Begin of ParseOrderAtSiteFromFile" << endl);
@@ -796,12 +845,12 @@
     SetAtomValueToIndexedArray( MaxArray, &atom::nr, &atom::MaxOrder );
 
-    DoLog(1) && (Log() << Verbose(1) << "done." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t ... done." << endl);
     status = true;
   } else {
-    DoLog(1) && (Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t ... failed to open file " << line.str() << "." << endl);
     status = false;
   }
-  Free(&OrderArray);
-  Free(&MaxArray);
+  delete[](OrderArray);
+  delete[](MaxArray);
 
   DoLog(1) && (Log() << Verbose(1) << "End of ParseOrderAtSiteFromFile" << endl);
@@ -872,11 +921,13 @@
   atom *OtherFather = NULL;
   atom *FatherOfRunner = NULL;
-  Leaf->CountAtoms();
-
-  atom *Runner = Leaf->start;
-  while (Runner->next != Leaf->end) {
-    Runner = Runner->next;
+
+#ifdef ADDHYDROGEN
+  molecule::const_iterator runner;
+#endif
+  // we increment the iter just before skipping the hydrogen
+  for (molecule::const_iterator iter = Leaf->begin(); iter != Leaf->end();) {
     LonelyFlag = true;
-    FatherOfRunner = Runner->father;
+    FatherOfRunner = (*iter)->father;
+    ASSERT(FatherOfRunner,"Atom without father found");
     if (SonList[FatherOfRunner->nr] != NULL)  {  // check if this, our father, is present in list
       // create all bonds
@@ -889,7 +940,7 @@
 //            Log() << Verbose(3) << "Adding Bond: ";
 //            Log() << Verbose(0) <<
-            Leaf->AddBond(Runner, SonList[OtherFather->nr], (*BondRunner)->BondDegree);
+            Leaf->AddBond((*iter), SonList[OtherFather->nr], (*BondRunner)->BondDegree);
 //            Log() << Verbose(0) << "." << endl;
-            //NumBonds[Runner->nr]++;
+            //NumBonds[(*iter)->nr]++;
           } else {
 //            Log() << Verbose(3) << "Not adding bond, labels in wrong order." << endl;
@@ -899,20 +950,22 @@
 //          Log() << Verbose(0) << ", who has no son in this fragment molecule." << endl;
 #ifdef ADDHYDROGEN
-          //Log() << Verbose(3) << "Adding Hydrogen to " << Runner->Name << " and a bond in between." << endl;
-          if(!Leaf->AddHydrogenReplacementAtom((*BondRunner), Runner, FatherOfRunner, OtherFather, IsAngstroem))
+          //Log() << Verbose(3) << "Adding Hydrogen to " << (*iter)->Name << " and a bond in between." << endl;
+          if(!Leaf->AddHydrogenReplacementAtom((*BondRunner), (*iter), FatherOfRunner, OtherFather, IsAngstroem))
             exit(1);
 #endif
-          //NumBonds[Runner->nr] += Binder->BondDegree;
+          //NumBonds[(*iter)->nr] += Binder->BondDegree;
         }
       }
     } else {
-      DoeLog(1) && (eLog()<< Verbose(1) << "Son " << Runner->Name << " has father " << FatherOfRunner->Name << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl);
-    }
-    if ((LonelyFlag) && (Leaf->AtomCount > 1)) {
-      DoLog(0) && (Log() << Verbose(0) << *Runner << "has got bonds only to hydrogens!" << endl);
-    }
+    DoeLog(1) && (eLog()<< Verbose(1) << "Son " << (*iter)->getName() << " has father " << FatherOfRunner->getName() << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl);
+    }
+    if ((LonelyFlag) && (Leaf->getAtomCount() > 1)) {
+      DoLog(0) && (Log() << Verbose(0) << **iter << "has got bonds only to hydrogens!" << endl);
+    }
+    ++iter;
 #ifdef ADDHYDROGEN
-    while ((Runner->next != Leaf->end) && (Runner->next->type->Z == 1)) // skip added hydrogen
-      Runner = Runner->next;
+    while ((iter != Leaf->end()) && ((*iter)->type->Z == 1)){ // skip added hydrogen
+      iter++;
+    }
 #endif
   }
@@ -929,6 +982,9 @@
 molecule * molecule::StoreFragmentFromKeySet(KeySet &Leaflet, bool IsAngstroem)
 {
-  atom **SonList = Calloc<atom*>(AtomCount, "molecule::StoreFragmentFromStack: **SonList");
+  atom **SonList = new atom*[getAtomCount()];
   molecule *Leaf = World::getInstance().createMolecule();
+
+  for(int i=0;i<getAtomCount();i++)
+    SonList[i] = NULL;
 
 //  Log() << Verbose(1) << "Begin of StoreFragmentFromKeyset." << endl;
@@ -939,5 +995,5 @@
 
   //Leaflet->Leaf->ScanForPeriodicCorrection(out);
-  Free(&SonList);
+  delete[](SonList);
 //  Log() << Verbose(1) << "End of StoreFragmentFromKeyset." << endl;
   return Leaf;
@@ -1084,6 +1140,5 @@
   int bits, TouchedIndex, SubSetDimension, SP, Added;
   int SpaceLeft;
-  int *TouchedList = Malloc<int>(SubOrder + 1, "molecule::SPFragmentGenerator: *TouchedList");
-  bond **BondsList = NULL;
+  int *TouchedList = new int[SubOrder + 1];
   KeySetTestPair TestKeySetInsert;
 
@@ -1124,5 +1179,5 @@
 
           // then allocate and fill the list
-          BondsList = Malloc<bond*>(SubSetDimension, "molecule::SPFragmentGenerator: **BondsList");
+          bond *BondsList[SubSetDimension];
           SubSetDimension = FillBondsList(BondsList, FragmentSearch->BondsPerSPList[2*SP], FragmentSearch->BondsPerSPList[2*SP+1], TouchedList, TouchedIndex);
 
@@ -1130,6 +1185,4 @@
           Log() << Verbose(2+verbosity) << "Calling subset generator " << SP << " away from root " << *FragmentSearch->Root << " with sub set dimension " << SubSetDimension << "." << endl;
           SPFragmentGenerator(FragmentSearch, SP, BondsList, SubSetDimension, SubOrder-bits);
-
-          Free(&BondsList);
         }
       } else {
@@ -1153,5 +1206,5 @@
     }
   }
-  Free(&TouchedList);
+  delete[](TouchedList);
   Log() << Verbose(1+verbosity) << "End of SPFragmentGenerator, " << RootDistance << " away from Root " << *FragmentSearch->Root << " and SubOrder is " << SubOrder << "." << endl;
 };
@@ -1165,6 +1218,6 @@
 void InitialiseSPList(int Order, struct UniqueFragments &FragmentSearch)
 {
-  FragmentSearch.BondsPerSPList = Malloc<bond*>(Order * 2, "molecule::PowerSetGenerator: ***BondsPerSPList");
-  FragmentSearch.BondsPerSPCount = Malloc<int>(Order, "molecule::PowerSetGenerator: *BondsPerSPCount");
+  FragmentSearch.BondsPerSPList = new bond* [Order * 2];
+  FragmentSearch.BondsPerSPCount = new int[Order];
   for (int i=Order;i--;) {
     FragmentSearch.BondsPerSPList[2*i] = new bond();    // start node
@@ -1184,10 +1237,10 @@
 void FreeSPList(int Order, struct UniqueFragments &FragmentSearch)
 {
-  Free(&FragmentSearch.BondsPerSPCount);
+  delete[](FragmentSearch.BondsPerSPCount);
   for (int i=Order;i--;) {
     delete(FragmentSearch.BondsPerSPList[2*i]);
     delete(FragmentSearch.BondsPerSPList[2*i+1]);
   }
-  Free(&FragmentSearch.BondsPerSPList);
+  delete[](FragmentSearch.BondsPerSPList);
 };
 
@@ -1370,5 +1423,4 @@
 int molecule::PowerSetGenerator(int Order, struct UniqueFragments &FragmentSearch, KeySet RestrictedKeySet)
 {
-  bond **BondsList = NULL;
   int Counter = FragmentSearch.FragmentCounter; // mark current value of counter
 
@@ -1394,10 +1446,10 @@
 
     // prepare the subset and call the generator
-    BondsList = Calloc<bond*>(FragmentSearch.BondsPerSPCount[0], "molecule::PowerSetGenerator: **BondsList");
+    bond* BondsList[FragmentSearch.BondsPerSPCount[0]];
+    for(int i=0;i<FragmentSearch.BondsPerSPCount[0];i++)
+      BondsList[i] = NULL;
     BondsList[0] = FragmentSearch.BondsPerSPList[0]->next;  // on SP level 0 there's only the root bond
 
     SPFragmentGenerator(&FragmentSearch, 0, BondsList, FragmentSearch.BondsPerSPCount[0], Order);
-
-    Free(&BondsList);
   } else {
     DoLog(0) && (Log() << Verbose(0) << "Not enough total number of edges to build " << Order << "-body fragments." << endl);
@@ -1507,8 +1559,8 @@
       }
     }
-    Free(&FragmentLowerOrdersList[RootNr]);
+    delete[](FragmentLowerOrdersList[RootNr]);
     RootNr++;
   }
-  Free(&FragmentLowerOrdersList);
+  delete[](FragmentLowerOrdersList);
 };
 
@@ -1549,6 +1601,11 @@
   // FragmentLowerOrdersList is a 2D-array of pointer to MoleculeListClass objects, one dimension represents the ANOVA expansion of a single order (i.e. 5)
   // with all needed lower orders that are subtracted, the other dimension is the BondOrder (i.e. from 1 to 5)
-  NumMoleculesOfOrder = Calloc<int>(UpgradeCount, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder");
-  FragmentLowerOrdersList = Calloc<Graph**>(UpgradeCount, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList");
+  NumMoleculesOfOrder = new int[UpgradeCount];
+  FragmentLowerOrdersList = new Graph**[UpgradeCount];
+
+  for(int i=0;i<UpgradeCount;i++) {
+    NumMoleculesOfOrder[i] = 0;
+    FragmentLowerOrdersList[i] = NULL;
+  }
 
   // initialise the fragments structure
@@ -1556,15 +1613,13 @@
   FragmentSearch.FragmentSet = new KeySet;
   FragmentSearch.Root = FindAtom(RootKeyNr);
-  FragmentSearch.ShortestPathList = Malloc<int>(AtomCount, "molecule::PowerSetGenerator: *ShortestPathList");
-  for (int i=AtomCount;i--;) {
+  FragmentSearch.ShortestPathList = new int[getAtomCount()];
+  for (int i=getAtomCount();i--;) {
     FragmentSearch.ShortestPathList[i] = -1;
   }
 
   // Construct the complete KeySet which we need for topmost level only (but for all Roots)
-  atom *Walker = start;
   KeySet CompleteMolecule;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    CompleteMolecule.insert(Walker->GetTrueFather()->nr);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    CompleteMolecule.insert((*iter)->GetTrueFather()->nr);
   }
 
@@ -1577,5 +1632,5 @@
     RootKeyNr = RootStack.front();
     RootStack.pop_front();
-    Walker = FindAtom(RootKeyNr);
+    atom *Walker = FindAtom(RootKeyNr);
     // check cyclic lengths
     //if ((MinimumRingSize[Walker->GetTrueFather()->nr] != -1) && (Walker->GetTrueFather()->AdaptiveOrder+1 > MinimumRingSize[Walker->GetTrueFather()->nr])) {
@@ -1592,5 +1647,7 @@
       // allocate memory for all lower level orders in this 1D-array of ptrs
       NumLevels = 1 << (Order-1); // (int)pow(2,Order);
-      FragmentLowerOrdersList[RootNr] = Calloc<Graph*>(NumLevels, "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]");
+      FragmentLowerOrdersList[RootNr] = new Graph*[NumLevels];
+      for (int i=0;i<NumLevels;i++)
+        FragmentLowerOrdersList[RootNr][i] = NULL;
 
       // create top order where nothing is reduced
@@ -1628,5 +1685,5 @@
 
   // cleanup FragmentSearch structure
-  Free(&FragmentSearch.ShortestPathList);
+  delete[](FragmentSearch.ShortestPathList);
   delete(FragmentSearch.FragmentSet);
 
@@ -1641,5 +1698,5 @@
   CombineAllOrderListIntoOne(FragmentList, FragmentLowerOrdersList, RootStack, this);
   FreeAllOrdersList(FragmentLowerOrdersList, RootStack, this);
-  Free(&NumMoleculesOfOrder);
+  delete[](NumMoleculesOfOrder);
 
   DoLog(0) && (Log() << Verbose(0) << "End of FragmentBOSSANOVA." << endl);
@@ -1664,31 +1721,32 @@
   Vector Translationvector;
   //class StackClass<atom *> *CompStack = NULL;
-  class StackClass<atom *> *AtomStack = new StackClass<atom *>(AtomCount);
+  class StackClass<atom *> *AtomStack = new StackClass<atom *>(getAtomCount());
   bool flag = true;
 
   DoLog(2) && (Log() << Verbose(2) << "Begin of ScanForPeriodicCorrection." << endl);
 
-  ColorList = Calloc<enum Shading>(AtomCount, "molecule::ScanForPeriodicCorrection: *ColorList");
+  ColorList = new enum Shading[getAtomCount()];
+  for (int i=0;i<getAtomCount();i++)
+    ColorList[i] = (enum Shading)0;
   while (flag) {
     // remove bonds that are beyond bonddistance
-    for(int i=NDIM;i--;)
-      Translationvector[i] = 0.;
+    Translationvector.Zero();
     // scan all bonds
-    Binder = first;
     flag = false;
-    while ((!flag) && (Binder->next != last)) {
-      Binder = Binder->next;
-      for (int i=NDIM;i--;) {
-        tmp = fabs(Binder->leftatom->x[i] - Binder->rightatom->x[i]);
-        //Log() << Verbose(3) << "Checking " << i << "th distance of " << *Binder->leftatom << " to " << *Binder->rightatom << ": " << tmp << "." << endl;
-        if (tmp > BondDistance) {
-          OtherBinder = Binder->next; // note down binding partner for later re-insertion
-          unlink(Binder);   // unlink bond
-          DoLog(2) && (Log() << Verbose(2) << "Correcting at bond " << *Binder << "." << endl);
-          flag = true;
-          break;
+    for(molecule::iterator AtomRunner = begin(); (!flag) && (AtomRunner != end()); ++AtomRunner)
+      for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); (!flag) && (BondRunner != (*AtomRunner)->ListOfBonds.end()); ++BondRunner) {
+        Binder = (*BondRunner);
+        for (int i=NDIM;i--;) {
+          tmp = fabs(Binder->leftatom->x[i] - Binder->rightatom->x[i]);
+          //Log() << Verbose(3) << "Checking " << i << "th distance of " << *Binder->leftatom << " to " << *Binder->rightatom << ": " << tmp << "." << endl;
+          if (tmp > BondDistance) {
+            OtherBinder = Binder->next; // note down binding partner for later re-insertion
+            unlink(Binder);   // unlink bond
+            DoLog(2) && (Log() << Verbose(2) << "Correcting at bond " << *Binder << "." << endl);
+            flag = true;
+            break;
+          }
         }
       }
-    }
     if (flag) {
       // create translation vector from their periodically modified distance
@@ -1702,5 +1760,5 @@
       Log() << Verbose(0) << Translationvector <<  endl;
       // apply to all atoms of first component via BFS
-      for (int i=AtomCount;i--;)
+      for (int i=getAtomCount();i--;)
         ColorList[i] = white;
       AtomStack->Push(Binder->leftatom);
@@ -1726,9 +1784,8 @@
     //delete(CompStack);
   }
-
   // free allocated space from ReturnFullMatrixforSymmetric()
   delete(AtomStack);
-  Free(&ColorList);
-  Free(&matrix);
+  delete[](ColorList);
+  delete[](matrix);
   DoLog(2) && (Log() << Verbose(2) << "End of ScanForPeriodicCorrection." << endl);
 };
Index: src/molecule_geometry.cpp
===================================================================
--- src/molecule_geometry.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule_geometry.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -27,4 +27,5 @@
   bool status = true;
   const Vector *Center = DetermineCenterOfAll();
+  const Vector *CenterBox = DetermineCenterOfBox();
   double * const cell_size = World::getInstance().getDomain();
   double *M = ReturnFullMatrixforSymmetric(cell_size);
@@ -33,8 +34,9 @@
   // go through all atoms
   ActOnAllVectors( &Vector::SubtractVector, *Center);
+  ActOnAllVectors( &Vector::SubtractVector, *CenterBox);
   ActOnAllVectors( &Vector::WrapPeriodically, (const double *)M, (const double *)Minv);
 
-  Free(&M);
-  Free(&Minv);
+  delete[](M);
+  delete[](Minv);
   delete(Center);
   return status;
@@ -55,6 +57,6 @@
   ActOnAllVectors( &Vector::WrapPeriodically, (const double *)M, (const double *)Minv);
 
-  Free(&M);
-  Free(&Minv);
+  delete[](M);
+  delete[](Minv);
   return status;
 };
@@ -69,16 +71,15 @@
 
 //  Log() << Verbose(3) << "Begin of CenterEdge." << endl;
-  atom *ptr = start->next;  // start at first in list
-  if (ptr != end) {   //list not empty?
+  molecule::const_iterator iter = begin();  // start at first in list
+  if (iter != end()) { //list not empty?
     for (int i=NDIM;i--;) {
-      max->at(i) = ptr->x[i];
-      min->at(i) = ptr->x[i];
-    }
-    while (ptr->next != end) {  // continue with second if present
-      ptr = ptr->next;
-      //ptr->Output(1,1,out);
+      max->at(i) = (*iter)->x[i];
+      min->at(i) = (*iter)->x[i];
+    }
+    for (; iter != end(); ++iter) {// continue with second if present
+      //(*iter)->Output(1,1,out);
       for (int i=NDIM;i--;) {
-        max->at(i) = (max->at(i) < ptr->x[i]) ? ptr->x[i] : max->at(i);
-        min->at(i) = (min->at(i) > ptr->x[i]) ? ptr->x[i] : min->at(i);
+        max->at(i) = (max->at(i) < (*iter)->x[i]) ? (*iter)->x[i] : max->at(i);
+        min->at(i) = (min->at(i) > (*iter)->x[i]) ? (*iter)->x[i] : min->at(i);
       }
     }
@@ -104,13 +105,12 @@
 {
   int Num = 0;
-  atom *ptr = start;  // start at first in list
+  molecule::const_iterator iter = begin();  // start at first in list
 
   Center.Zero();
 
-  if (ptr->next != end) {   //list not empty?
-    while (ptr->next != end) {  // continue with second if present
-      ptr = ptr->next;
+  if (iter != end()) {   //list not empty?
+    for (; iter != end(); ++iter) {  // continue with second if present
       Num++;
-      Center += ptr->x;
+      Center += (*iter)->x;
     }
     Center.Scale(-1./Num); // divide through total number (and sign for direction)
@@ -125,5 +125,42 @@
 Vector * molecule::DetermineCenterOfAll() const
 {
-  atom *ptr = start->next;  // start at first in list
+  molecule::const_iterator iter = begin();  // start at first in list
+  Vector *a = new Vector();
+  double Num = 0;
+
+  a->Zero();
+
+  if (iter != end()) {   //list not empty?
+    for (; iter != end(); ++iter) {  // continue with second if present
+      Num++;
+      (*a) += (*iter)->x;
+    }
+    a->Scale(1./Num); // divide through total mass (and sign for direction)
+  }
+  return a;
+};
+
+/** Returns vector pointing to center of the domain.
+ * \return pointer to center of the domain
+ */
+Vector * molecule::DetermineCenterOfBox() const
+{
+  Vector *a = new Vector(0.5,0.5,0.5);
+
+  const double *cell_size = World::getInstance().getDomain();
+  double *M = ReturnFullMatrixforSymmetric(cell_size);
+  a->MatrixMultiplication(M);
+  delete[](M);
+
+  return a;
+};
+
+/** Returns vector pointing to center of gravity.
+ * \param *out output stream for debugging
+ * \return pointer to center of gravity vector
+ */
+Vector * molecule::DetermineCenterOfGravity()
+{
+  molecule::const_iterator iter = begin();  // start at first in list
   Vector *a = new Vector();
   Vector tmp;
@@ -132,37 +169,11 @@
   a->Zero();
 
-  if (ptr != end) {   //list not empty?
-    while (ptr->next != end) {  // continue with second if present
-      ptr = ptr->next;
-      Num += 1.;
-      tmp = ptr->x;
+  if (iter != end()) {   //list not empty?
+    for (; iter != end(); ++iter) {  // continue with second if present
+      Num += (*iter)->type->mass;
+      tmp = (*iter)->type->mass * (*iter)->x;
       (*a) += tmp;
     }
     a->Scale(1./Num); // divide through total mass (and sign for direction)
-  }
-  return a;
-};
-
-/** Returns vector pointing to center of gravity.
- * \param *out output stream for debugging
- * \return pointer to center of gravity vector
- */
-Vector * molecule::DetermineCenterOfGravity()
-{
-  atom *ptr = start->next;  // start at first in list
-  Vector *a = new Vector();
-  Vector tmp;
-  double Num = 0;
-
-  a->Zero();
-
-  if (ptr != end) {   //list not empty?
-    while (ptr->next != end) {  // continue with second if present
-      ptr = ptr->next;
-      Num += ptr->type->mass;
-      tmp = ptr->type->mass * ptr->x;
-      (*a) += tmp;
-    }
-    a->Scale(-1./Num); // divide through total mass (and sign for direction)
   }
 //  Log() << Verbose(1) << "Resulting center of gravity: ";
@@ -202,11 +213,8 @@
 void molecule::Scale(const double ** const factor)
 {
-  atom *ptr = start;
-
-  while (ptr->next != end) {
-    ptr = ptr->next;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
     for (int j=0;j<MDSteps;j++)
-      ptr->Trajectory.R.at(j).ScaleAll(*factor);
-    ptr->x.ScaleAll(*factor);
+      (*iter)->Trajectory.R.at(j).ScaleAll(*factor);
+    (*iter)->x.ScaleAll(*factor);
   }
 };
@@ -217,11 +225,8 @@
 void molecule::Translate(const Vector *trans)
 {
-  atom *ptr = start;
-
-  while (ptr->next != end) {
-    ptr = ptr->next;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
     for (int j=0;j<MDSteps;j++)
-      ptr->Trajectory.R.at(j) += (*trans);
-    ptr->x += (*trans);
+      (*iter)->Trajectory.R.at(j) += (*trans);
+    (*iter)->x += (*trans);
   }
 };
@@ -238,9 +243,9 @@
 
   // go through all atoms
-  ActOnAllVectors( &Vector::SubtractVector, *trans);
+  ActOnAllVectors( &Vector::AddVector, *trans);
   ActOnAllVectors( &Vector::WrapPeriodically, (const double *)M, (const double *)Minv);
 
-  Free(&M);
-  Free(&Minv);
+  delete[](M);
+  delete[](Minv);
 };
 
@@ -259,8 +264,7 @@
 void molecule::DeterminePeriodicCenter(Vector &center)
 {
-  atom *Walker = start;
   double * const cell_size = World::getInstance().getDomain();
   double *matrix = ReturnFullMatrixforSymmetric(cell_size);
-  double *inversematrix = InverseMatrix(cell_size);
+  double *inversematrix = InverseMatrix(matrix);
   double tmp;
   bool flag;
@@ -270,19 +274,18 @@
     Center.Zero();
     flag = true;
-    while (Walker->next != end) {
-      Walker = Walker->next;
+    for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
 #ifdef ADDHYDROGEN
-      if (Walker->type->Z != 1) {
+      if ((*iter)->type->Z != 1) {
 #endif
-        Testvector = Walker->x;
+        Testvector = (*iter)->x;
         Testvector.MatrixMultiplication(inversematrix);
         Translationvector.Zero();
-        for (BondList::const_iterator Runner = Walker->ListOfBonds.begin(); Runner != Walker->ListOfBonds.end(); (++Runner)) {
-         if (Walker->nr < (*Runner)->GetOtherAtom(Walker)->nr) // otherwise we shift one to, the other fro and gain nothing
+        for (BondList::const_iterator Runner = (*iter)->ListOfBonds.begin(); Runner != (*iter)->ListOfBonds.end(); (++Runner)) {
+         if ((*iter)->nr < (*Runner)->GetOtherAtom((*iter))->nr) // otherwise we shift one to, the other fro and gain nothing
             for (int j=0;j<NDIM;j++) {
-              tmp = Walker->x[j] - (*Runner)->GetOtherAtom(Walker)->x[j];
+              tmp = (*iter)->x[j] - (*Runner)->GetOtherAtom(*iter)->x[j];
               if ((fabs(tmp)) > BondDistance) {
                 flag = false;
-                DoLog(0) && (Log() << Verbose(0) << "Hit: atom " << Walker->Name << " in bond " << *(*Runner) << " has to be shifted due to " << tmp << "." << endl);
+                DoLog(0) && (Log() << Verbose(0) << "Hit: atom " << (*iter)->getName() << " in bond " << *(*Runner) << " has to be shifted due to " << tmp << "." << endl);
                 if (tmp > 0)
                   Translationvector[j] -= 1.;
@@ -298,7 +301,7 @@
 #ifdef ADDHYDROGEN
         // now also change all hydrogens
-        for (BondList::const_iterator Runner = Walker->ListOfBonds.begin(); Runner != Walker->ListOfBonds.end(); (++Runner)) {
-          if ((*Runner)->GetOtherAtom(Walker)->type->Z == 1) {
-            Testvector = (*Runner)->GetOtherAtom(Walker)->x;
+        for (BondList::const_iterator Runner = (*iter)->ListOfBonds.begin(); Runner != (*iter)->ListOfBonds.end(); (++Runner)) {
+          if ((*Runner)->GetOtherAtom((*iter))->type->Z == 1) {
+            Testvector = (*Runner)->GetOtherAtom((*iter))->x;
             Testvector.MatrixMultiplication(inversematrix);
             Testvector += Translationvector;
@@ -312,8 +315,8 @@
     }
   } while (!flag);
-  Free(&matrix);
-  Free(&inversematrix);
-
-  Center.Scale(1./(double)AtomCount);
+  delete[](matrix);
+  delete[](inversematrix);
+
+  Center.Scale(1./static_cast<double>(getAtomCount()));
 };
 
@@ -325,5 +328,4 @@
 void molecule::PrincipalAxisSystem(bool DoRotate)
 {
-  atom *ptr = start;  // start at first in list
   double InertiaTensor[NDIM*NDIM];
   Vector *CenterOfGravity = DetermineCenterOfGravity();
@@ -336,17 +338,16 @@
 
   // sum up inertia tensor
-  while (ptr->next != end) {
-    ptr = ptr->next;
-    Vector x = ptr->x;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    Vector x = (*iter)->x;
     //x.SubtractVector(CenterOfGravity);
-    InertiaTensor[0] += ptr->type->mass*(x[1]*x[1] + x[2]*x[2]);
-    InertiaTensor[1] += ptr->type->mass*(-x[0]*x[1]);
-    InertiaTensor[2] += ptr->type->mass*(-x[0]*x[2]);
-    InertiaTensor[3] += ptr->type->mass*(-x[1]*x[0]);
-    InertiaTensor[4] += ptr->type->mass*(x[0]*x[0] + x[2]*x[2]);
-    InertiaTensor[5] += ptr->type->mass*(-x[1]*x[2]);
-    InertiaTensor[6] += ptr->type->mass*(-x[2]*x[0]);
-    InertiaTensor[7] += ptr->type->mass*(-x[2]*x[1]);
-    InertiaTensor[8] += ptr->type->mass*(x[0]*x[0] + x[1]*x[1]);
+    InertiaTensor[0] += (*iter)->type->mass*(x[1]*x[1] + x[2]*x[2]);
+    InertiaTensor[1] += (*iter)->type->mass*(-x[0]*x[1]);
+    InertiaTensor[2] += (*iter)->type->mass*(-x[0]*x[2]);
+    InertiaTensor[3] += (*iter)->type->mass*(-x[1]*x[0]);
+    InertiaTensor[4] += (*iter)->type->mass*(x[0]*x[0] + x[2]*x[2]);
+    InertiaTensor[5] += (*iter)->type->mass*(-x[1]*x[2]);
+    InertiaTensor[6] += (*iter)->type->mass*(-x[2]*x[0]);
+    InertiaTensor[7] += (*iter)->type->mass*(-x[2]*x[1]);
+    InertiaTensor[8] += (*iter)->type->mass*(x[0]*x[0] + x[1]*x[1]);
   }
   // print InertiaTensor for debugging
@@ -386,18 +387,15 @@
 
     // sum up inertia tensor
-    ptr = start;
-    while (ptr->next != end) {
-      ptr = ptr->next;
-      Vector x = ptr->x;
-      //x.SubtractVector(CenterOfGravity);
-      InertiaTensor[0] += ptr->type->mass*(x[1]*x[1] + x[2]*x[2]);
-      InertiaTensor[1] += ptr->type->mass*(-x[0]*x[1]);
-      InertiaTensor[2] += ptr->type->mass*(-x[0]*x[2]);
-      InertiaTensor[3] += ptr->type->mass*(-x[1]*x[0]);
-      InertiaTensor[4] += ptr->type->mass*(x[0]*x[0] + x[2]*x[2]);
-      InertiaTensor[5] += ptr->type->mass*(-x[1]*x[2]);
-      InertiaTensor[6] += ptr->type->mass*(-x[2]*x[0]);
-      InertiaTensor[7] += ptr->type->mass*(-x[2]*x[1]);
-      InertiaTensor[8] += ptr->type->mass*(x[0]*x[0] + x[1]*x[1]);
+    for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+      Vector x = (*iter)->x;
+      InertiaTensor[0] += (*iter)->type->mass*(x[1]*x[1] + x[2]*x[2]);
+      InertiaTensor[1] += (*iter)->type->mass*(-x[0]*x[1]);
+      InertiaTensor[2] += (*iter)->type->mass*(-x[0]*x[2]);
+      InertiaTensor[3] += (*iter)->type->mass*(-x[1]*x[0]);
+      InertiaTensor[4] += (*iter)->type->mass*(x[0]*x[0] + x[2]*x[2]);
+      InertiaTensor[5] += (*iter)->type->mass*(-x[1]*x[2]);
+      InertiaTensor[6] += (*iter)->type->mass*(-x[2]*x[0]);
+      InertiaTensor[7] += (*iter)->type->mass*(-x[2]*x[1]);
+      InertiaTensor[8] += (*iter)->type->mass*(x[0]*x[0] + x[1]*x[1]);
     }
     // print InertiaTensor for debugging
@@ -423,5 +421,4 @@
 void molecule::Align(Vector *n)
 {
-  atom *ptr = start;
   double alpha, tmp;
   Vector z_axis;
@@ -434,13 +431,12 @@
   alpha = atan(-n->at(0)/n->at(2));
   DoLog(1) && (Log() << Verbose(1) << "Z-X-angle: " << alpha << " ... ");
-  while (ptr->next != end) {
-    ptr = ptr->next;
-    tmp = ptr->x[0];
-    ptr->x[0] =  cos(alpha) * tmp + sin(alpha) * ptr->x[2];
-    ptr->x[2] = -sin(alpha) * tmp + cos(alpha) * ptr->x[2];
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    tmp = (*iter)->x[0];
+    (*iter)->x[0] =  cos(alpha) * tmp + sin(alpha) * (*iter)->x[2];
+    (*iter)->x[2] = -sin(alpha) * tmp + cos(alpha) * (*iter)->x[2];
     for (int j=0;j<MDSteps;j++) {
-      tmp = ptr->Trajectory.R.at(j)[0];
-      ptr->Trajectory.R.at(j)[0] =  cos(alpha) * tmp + sin(alpha) * ptr->Trajectory.R.at(j)[2];
-      ptr->Trajectory.R.at(j)[2] = -sin(alpha) * tmp + cos(alpha) * ptr->Trajectory.R.at(j)[2];
+      tmp = (*iter)->Trajectory.R.at(j)[0];
+      (*iter)->Trajectory.R.at(j)[0] =  cos(alpha) * tmp + sin(alpha) * (*iter)->Trajectory.R.at(j)[2];
+      (*iter)->Trajectory.R.at(j)[2] = -sin(alpha) * tmp + cos(alpha) * (*iter)->Trajectory.R.at(j)[2];
     }
   }
@@ -452,16 +448,14 @@
 
   // rotate on z-y plane
-  ptr = start;
   alpha = atan(-n->at(1)/n->at(2));
   DoLog(1) && (Log() << Verbose(1) << "Z-Y-angle: " << alpha << " ... ");
-  while (ptr->next != end) {
-    ptr = ptr->next;
-    tmp = ptr->x[1];
-    ptr->x[1] =  cos(alpha) * tmp + sin(alpha) * ptr->x[2];
-    ptr->x[2] = -sin(alpha) * tmp + cos(alpha) * ptr->x[2];
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    tmp = (*iter)->x[1];
+    (*iter)->x[1] =  cos(alpha) * tmp + sin(alpha) * (*iter)->x[2];
+    (*iter)->x[2] = -sin(alpha) * tmp + cos(alpha) * (*iter)->x[2];
     for (int j=0;j<MDSteps;j++) {
-      tmp = ptr->Trajectory.R.at(j)[1];
-      ptr->Trajectory.R.at(j)[1] =  cos(alpha) * tmp + sin(alpha) * ptr->Trajectory.R.at(j)[2];
-      ptr->Trajectory.R.at(j)[2] = -sin(alpha) * tmp + cos(alpha) * ptr->Trajectory.R.at(j)[2];
+      tmp = (*iter)->Trajectory.R.at(j)[1];
+      (*iter)->Trajectory.R.at(j)[1] =  cos(alpha) * tmp + sin(alpha) * (*iter)->Trajectory.R.at(j)[2];
+      (*iter)->Trajectory.R.at(j)[2] = -sin(alpha) * tmp + cos(alpha) * (*iter)->Trajectory.R.at(j)[2];
     }
   }
@@ -487,5 +481,4 @@
   Vector a,b,c,d;
   struct lsq_params *par = (struct lsq_params *)params;
-  atom *ptr = par->mol->start;
 
   // initialize vectors
@@ -497,8 +490,7 @@
   b[2] = gsl_vector_get(x,5);
   // go through all atoms
-  while (ptr != par->mol->end) {
-    ptr = ptr->next;
-    if (ptr->type == ((struct lsq_params *)params)->type) { // for specific type
-      c = ptr->x - a;
+  for (molecule::const_iterator iter = par->mol->begin(); iter != par->mol->end(); ++iter) {
+    if ((*iter)->type == ((struct lsq_params *)params)->type) { // for specific type
+      c = (*iter)->x - a;
       t = c.ScalarProduct(b);           // get direction parameter
       d = t*b;       // and create vector
Index: src/molecule_graph.cpp
===================================================================
--- src/molecule_graph.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule_graph.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -12,4 +12,5 @@
 #include "element.hpp"
 #include "helpers.hpp"
+#include "info.hpp"
 #include "linkedcell.hpp"
 #include "lists.hpp"
@@ -19,4 +20,6 @@
 #include "World.hpp"
 #include "Helpers/fast_functions.hpp"
+#include "Helpers/Assert.hpp"
+
 
 struct BFSAccounting
@@ -54,25 +57,33 @@
 void molecule::CreateAdjacencyListFromDbondFile(ifstream *input)
 {
-
+  Info FunctionInfo(__func__);
   // 1 We will parse bonds out of the dbond file created by tremolo.
   int atom1, atom2;
   atom *Walker, *OtherWalker;
-
-  if (!input) {
-    DoLog(1) && (Log() << Verbose(1) << "Opening silica failed \n");
+  char line[MAXSTRINGSIZE];
+
+  if (input->fail()) {
+    DoeLog(0) && (eLog() << Verbose(0) << "Opening of bond file failed \n");
+    performCriticalExit();
   };
-
-  *input >> ws >> atom1;
-  *input >> ws >> atom2;
-  DoLog(1) && (Log() << Verbose(1) << "Scanning file\n");
+  doCountAtoms();
+
+  // skip header
+  input->getline(line,MAXSTRINGSIZE);
+  DoLog(1) && (Log() << Verbose(1) << "Scanning file ... \n");
   while (!input->eof()) // Check whether we read everything already
   {
-    *input >> ws >> atom1;
-    *input >> ws >> atom2;
-
+    input->getline(line,MAXSTRINGSIZE);
+    stringstream zeile(line);
+    zeile >> atom1;
+    zeile >> atom2;
+
+    DoLog(2) && (Log() << Verbose(2) << "Looking for atoms " << atom1 << " and " << atom2 << "." << endl);
     if (atom2 < atom1) //Sort indices of atoms in order
       flip(atom1, atom2);
     Walker = FindAtom(atom1);
+    ASSERT(Walker,"Could not find an atom with the ID given in dbond file");
     OtherWalker = FindAtom(atom2);
+    ASSERT(OtherWalker,"Could not find an atom with the ID given in dbond file");
     AddBond(Walker, OtherWalker); //Add the bond between the two atoms with respective indices.
   }
@@ -103,5 +114,4 @@
   atom *Walker = NULL;
   atom *OtherWalker = NULL;
-  atom **AtomMap = NULL;
   int n[NDIM];
   double MinDistance, MaxDistance;
@@ -118,18 +128,14 @@
   DoLog(0) && (Log() << Verbose(0) << "Begin of CreateAdjacencyList." << endl);
   // remove every bond from the list
-  bond *Binder = NULL;
-  while (last->previous != first) {
-    Binder = last->previous;
-    Binder->leftatom->UnregisterBond(Binder);
-    Binder->rightatom->UnregisterBond(Binder);
-    removewithoutcheck(Binder);
-  }
+  for(molecule::iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); !(*AtomRunner)->ListOfBonds.empty(); BondRunner = (*AtomRunner)->ListOfBonds.begin())
+      if ((*BondRunner)->leftatom == *AtomRunner)
+        delete((*BondRunner));
   BondCount = 0;
 
   // count atoms in molecule = dimension of matrix (also give each unique name and continuous numbering)
-  CountAtoms();
-  DoLog(1) && (Log() << Verbose(1) << "AtomCount " << AtomCount << " and bonddistance is " << bonddistance << "." << endl);
-
-  if ((AtomCount > 1) && (bonddistance > 1.)) {
+  DoLog(1) && (Log() << Verbose(1) << "AtomCount " << getAtomCount() << " and bonddistance is " << bonddistance << "." << endl);
+
+  if ((getAtomCount() > 1) && (bonddistance > 1.)) {
     DoLog(2) && (Log() << Verbose(2) << "Creating Linked Cell structure ... " << endl);
     LC = new LinkedCell(this, bonddistance);
@@ -137,9 +143,9 @@
     // create a list to map Tesselpoint::nr to atom *
     DoLog(2) && (Log() << Verbose(2) << "Creating TesselPoint to atom map ... " << endl);
-    AtomMap = Calloc<atom *> (AtomCount, "molecule::CreateAdjacencyList - **AtomCount");
-    Walker = start;
-    while (Walker->next != end) {
-      Walker = Walker->next;
-      AtomMap[Walker->nr] = Walker;
+
+    // set numbers for atoms that can later be used
+    int i=0;
+    for(internal_iterator iter = atoms.begin();iter!= atoms.end(); ++iter){
+      (*iter)->nr = i++;
     }
 
@@ -153,6 +159,7 @@
           if (List != NULL) {
             for (LinkedCell::LinkedNodes::const_iterator Runner = List->begin(); Runner != List->end(); Runner++) {
-              Walker = AtomMap[(*Runner)->nr];
-//              Log() << Verbose(0) << "Current Atom is " << *Walker << "." << endl;
+              Walker = dynamic_cast<atom*>(*Runner);
+              ASSERT(Walker,"Tesselpoint that was not an atom retrieved from LinkedNode");
+              //Log() << Verbose(0) << "Current Atom is " << *Walker << "." << endl;
               // 3c. check for possible bond between each atom in this and every one in the 27 cells
               for (n[0] = -1; n[0] <= 1; n[0]++)
@@ -164,9 +171,9 @@
                       for (LinkedCell::LinkedNodes::const_iterator OtherRunner = OtherList->begin(); OtherRunner != OtherList->end(); OtherRunner++) {
                         if ((*OtherRunner)->nr > Walker->nr) {
-                          OtherWalker = AtomMap[(*OtherRunner)->nr];
-//                          Log() << Verbose(0) << "Current other Atom is " << *OtherWalker << "." << endl;
-                          const double distance = OtherWalker->x.PeriodicDistanceSquared(Walker->x, cell_size);
-//                          Log() << Verbose(1) << "Checking distance " << distance << " against typical bond length of " << bonddistance*bonddistance << "." << endl;
+                          OtherWalker = dynamic_cast<atom*>(*OtherRunner);
+                          ASSERT(OtherWalker,"TesselPoint that was not an atom retrieved from LinkedNode");
+                          //Log() << Verbose(1) << "Checking distance " << OtherWalker->x.PeriodicDistanceSquared(&(Walker->x), cell_size) << " against typical bond length of " << bonddistance*bonddistance << "." << endl;
                           (BG->*minmaxdistance)(Walker, OtherWalker, MinDistance, MaxDistance, IsAngstroem);
+                          const double distance = OtherWalker->x.PeriodicDistanceSquared(Walker->x,cell_size);
                           const bool status = (distance <= MaxDistance * MaxDistance) && (distance >= MinDistance * MinDistance);
 //                          Log() << Verbose(1) << "MinDistance is " << MinDistance << " and MaxDistance is " << MaxDistance << "." << endl;
@@ -188,5 +195,4 @@
           }
         }
-    Free(&AtomMap);
     delete (LC);
     DoLog(1) && (Log() << Verbose(1) << "I detected " << BondCount << " bonds in the molecule with distance " << BondDistance << "." << endl);
@@ -199,5 +205,5 @@
     ActOnAllAtoms( &atom::OutputBondOfAtom );
   } else
-    DoLog(1) && (Log() << Verbose(1) << "AtomCount is " << AtomCount << ", thus no bonds, no connections!." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "AtomCount is " << getAtomCount() << ", thus no bonds, no connections!." << endl);
   DoLog(0) && (Log() << Verbose(0) << "End of CreateAdjacencyList." << endl);
   if (free_BG)
@@ -206,4 +212,29 @@
 ;
 
+/** Checks for presence of bonds within atom list.
+ * TODO: more sophisticated check for bond structure (e.g. connected subgraph, ...)
+ * \return true - bonds present, false - no bonds
+ */
+bool molecule::hasBondStructure()
+{
+  for(molecule::iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    if (!(*AtomRunner)->ListOfBonds.empty())
+      return true;
+  return false;
+}
+
+/** Counts the number of present bonds.
+ * \return number of bonds
+ */
+unsigned int molecule::CountBonds() const
+{
+  unsigned int counter = 0;
+  for(molecule::const_iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::const_iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner)
+        counter++;
+  return counter;
+}
+
 /** Prints a list of all bonds to \a *out.
  * \param output stream
@@ -212,9 +243,9 @@
 {
   DoLog(1) && (Log() << Verbose(1) << endl << "From contents of bond chain list:");
-  bond *Binder = first;
-  while (Binder->next != last) {
-    Binder = Binder->next;
-    DoLog(0) && (Log() << Verbose(0) << *Binder << "\t" << endl);
-  }
+  for(molecule::const_iterator AtomRunner = molecule::begin(); AtomRunner != molecule::end(); ++AtomRunner)
+    for(BondList::const_iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner) {
+        DoLog(0) && (Log() << Verbose(0) << *(*BondRunner) << "\t" << endl);
+      }
   DoLog(0) && (Log() << Verbose(0) << endl);
 }
@@ -241,5 +272,5 @@
     DoLog(0) && (Log() << Verbose(0) << " done." << endl);
   } else {
-    DoLog(1) && (Log() << Verbose(1) << "BondCount is " << BondCount << ", no bonds between any of the " << AtomCount << " atoms." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "BondCount is " << BondCount << ", no bonds between any of the " << getAtomCount() << " atoms." << endl);
   }
   DoLog(0) && (Log() << Verbose(0) << No << " bonds could not be corrected." << endl);
@@ -260,20 +291,21 @@
   MoleculeLeafClass *Subgraphs = NULL;
   class StackClass<bond *> *BackEdgeStack = NULL;
-  bond *Binder = first;
-  if ((Binder->next != last) && (Binder->next->Type == Undetermined)) {
-    DoLog(0) && (Log() << Verbose(0) << "No Depth-First-Search analysis performed so far, calling ..." << endl);
-    Subgraphs = DepthFirstSearchAnalysis(BackEdgeStack);
-    while (Subgraphs->next != NULL) {
-      Subgraphs = Subgraphs->next;
-      delete (Subgraphs->previous);
-    }
-    delete (Subgraphs);
-    delete[] (MinimumRingSize);
-  }
-  while (Binder->next != last) {
-    Binder = Binder->next;
-    if (Binder->Cyclic)
-      NoCyclicBonds++;
-  }
+  for(molecule::iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    if ((!(*AtomRunner)->ListOfBonds.empty()) && ((*(*AtomRunner)->ListOfBonds.begin())->Type == Undetermined)) {
+      DoLog(0) && (Log() << Verbose(0) << "No Depth-First-Search analysis performed so far, calling ..." << endl);
+      Subgraphs = DepthFirstSearchAnalysis(BackEdgeStack);
+      while (Subgraphs->next != NULL) {
+        Subgraphs = Subgraphs->next;
+        delete (Subgraphs->previous);
+      }
+      delete (Subgraphs);
+      delete[] (MinimumRingSize);
+      break;
+    }
+  for(molecule::iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner)
+        if ((*BondRunner)->Cyclic)
+          NoCyclicBonds++;
   delete (BackEdgeStack);
   return NoCyclicBonds;
@@ -317,5 +349,5 @@
     Walker->GraphNr = DFS.CurrentGraphNr;
     Walker->LowpointNr = DFS.CurrentGraphNr;
-    DoLog(1) && (Log() << Verbose(1) << "Setting Walker[" << Walker->Name << "]'s number to " << Walker->GraphNr << " with Lowpoint " << Walker->LowpointNr << "." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "Setting Walker[" << Walker->getName() << "]'s number to " << Walker->GraphNr << " with Lowpoint " << Walker->LowpointNr << "." << endl);
     DFS.AtomStack->Push(Walker);
     DFS.CurrentGraphNr++;
@@ -348,5 +380,5 @@
     Binder->MarkUsed(black);
     OtherAtom = Binder->GetOtherAtom(Walker);
-    DoLog(2) && (Log() << Verbose(2) << "(4) OtherAtom is " << OtherAtom->Name << "." << endl);
+    DoLog(2) && (Log() << Verbose(2) << "(4) OtherAtom is " << OtherAtom->getName() << "." << endl);
     if (OtherAtom->GraphNr != -1) {
       // (4a) ... if "other" atom has been visited (GraphNr != 0), set lowpoint to minimum of both, go to (3)
@@ -354,5 +386,5 @@
       DFS.BackEdgeStack->Push(Binder);
       Walker->LowpointNr = (Walker->LowpointNr < OtherAtom->GraphNr) ? Walker->LowpointNr : OtherAtom->GraphNr;
-      DoLog(3) && (Log() << Verbose(3) << "(4a) Visited: Setting Lowpoint of Walker[" << Walker->Name << "] to " << Walker->LowpointNr << "." << endl);
+      DoLog(3) && (Log() << Verbose(3) << "(4a) Visited: Setting Lowpoint of Walker[" << Walker->getName() << "] to " << Walker->LowpointNr << "." << endl);
     } else {
       // (4b) ... otherwise set OtherAtom as Ancestor of Walker and Walker as OtherAtom, go to (2)
@@ -360,5 +392,5 @@
       OtherAtom->Ancestor = Walker;
       Walker = OtherAtom;
-      DoLog(3) && (Log() << Verbose(3) << "(4b) Not Visited: OtherAtom[" << OtherAtom->Name << "]'s Ancestor is now " << OtherAtom->Ancestor->Name << ", Walker is OtherAtom " << OtherAtom->Name << "." << endl);
+      DoLog(3) && (Log() << Verbose(3) << "(4b) Not Visited: OtherAtom[" << OtherAtom->getName() << "]'s Ancestor is now " << OtherAtom->Ancestor->getName() << ", Walker is OtherAtom " << OtherAtom->getName() << "." << endl);
       break;
     }
@@ -382,5 +414,5 @@
 
   // (5) if Ancestor of Walker is ...
-  DoLog(1) && (Log() << Verbose(1) << "(5) Number of Walker[" << Walker->Name << "]'s Ancestor[" << Walker->Ancestor->Name << "] is " << Walker->Ancestor->GraphNr << "." << endl);
+  DoLog(1) && (Log() << Verbose(1) << "(5) Number of Walker[" << Walker->getName() << "]'s Ancestor[" << Walker->Ancestor->getName() << "] is " << Walker->Ancestor->GraphNr << "." << endl);
 
   if (Walker->Ancestor->GraphNr != DFS.Root->GraphNr) {
@@ -389,23 +421,23 @@
       // (6a) set Ancestor's Lowpoint number to minimum of of its Ancestor and itself, go to Step(8)
       Walker->Ancestor->LowpointNr = (Walker->Ancestor->LowpointNr < Walker->LowpointNr) ? Walker->Ancestor->LowpointNr : Walker->LowpointNr;
-      DoLog(2) && (Log() << Verbose(2) << "(6) Setting Walker[" << Walker->Name << "]'s Ancestor[" << Walker->Ancestor->Name << "]'s Lowpoint to " << Walker->Ancestor->LowpointNr << "." << endl);
+      DoLog(2) && (Log() << Verbose(2) << "(6) Setting Walker[" << Walker->getName() << "]'s Ancestor[" << Walker->Ancestor->getName() << "]'s Lowpoint to " << Walker->Ancestor->LowpointNr << "." << endl);
     } else {
       // (7) (Ancestor of Walker is a separating vertex, remove all from stack till Walker (including), these and Ancestor form a component
       Walker->Ancestor->SeparationVertex = true;
-      DoLog(2) && (Log() << Verbose(2) << "(7) Walker[" << Walker->Name << "]'s Ancestor[" << Walker->Ancestor->Name << "]'s is a separating vertex, creating component." << endl);
+      DoLog(2) && (Log() << Verbose(2) << "(7) Walker[" << Walker->getName() << "]'s Ancestor[" << Walker->Ancestor->getName() << "]'s is a separating vertex, creating component." << endl);
       mol->SetNextComponentNumber(Walker->Ancestor, DFS.ComponentNumber);
-      DoLog(3) && (Log() << Verbose(3) << "(7) Walker[" << Walker->Name << "]'s Ancestor's Compont is " << DFS.ComponentNumber << "." << endl);
+      DoLog(3) && (Log() << Verbose(3) << "(7) Walker[" << Walker->getName() << "]'s Ancestor's Compont is " << DFS.ComponentNumber << "." << endl);
       mol->SetNextComponentNumber(Walker, DFS.ComponentNumber);
-      DoLog(3) && (Log() << Verbose(3) << "(7) Walker[" << Walker->Name << "]'s Compont is " << DFS.ComponentNumber << "." << endl);
+      DoLog(3) && (Log() << Verbose(3) << "(7) Walker[" << Walker->getName() << "]'s Compont is " << DFS.ComponentNumber << "." << endl);
       do {
         OtherAtom = DFS.AtomStack->PopLast();
         LeafWalker->Leaf->AddCopyAtom(OtherAtom);
         mol->SetNextComponentNumber(OtherAtom, DFS.ComponentNumber);
-        DoLog(3) && (Log() << Verbose(3) << "(7) Other[" << OtherAtom->Name << "]'s Compont is " << DFS.ComponentNumber << "." << endl);
+        DoLog(3) && (Log() << Verbose(3) << "(7) Other[" << OtherAtom->getName() << "]'s Compont is " << DFS.ComponentNumber << "." << endl);
       } while (OtherAtom != Walker);
       DFS.ComponentNumber++;
     }
     // (8) Walker becomes its Ancestor, go to (3)
-    DoLog(2) && (Log() << Verbose(2) << "(8) Walker[" << Walker->Name << "] is now its Ancestor " << Walker->Ancestor->Name << ", backstepping. " << endl);
+    DoLog(2) && (Log() << Verbose(2) << "(8) Walker[" << Walker->getName() << "] is now its Ancestor " << Walker->Ancestor->getName() << ", backstepping. " << endl);
     Walker = Walker->Ancestor;
     DFS.BackStepping = true;
@@ -431,12 +463,12 @@
     //DFS.AtomStack->Output(out);
     mol->SetNextComponentNumber(DFS.Root, DFS.ComponentNumber);
-    DoLog(3) && (Log() << Verbose(3) << "(9) Root[" << DFS.Root->Name << "]'s Component is " << DFS.ComponentNumber << "." << endl);
+    DoLog(3) && (Log() << Verbose(3) << "(9) Root[" << DFS.Root->getName() << "]'s Component is " << DFS.ComponentNumber << "." << endl);
     mol->SetNextComponentNumber(Walker, DFS.ComponentNumber);
-    DoLog(3) && (Log() << Verbose(3) << "(9) Walker[" << Walker->Name << "]'s Component is " << DFS.ComponentNumber << "." << endl);
+    DoLog(3) && (Log() << Verbose(3) << "(9) Walker[" << Walker->getName() << "]'s Component is " << DFS.ComponentNumber << "." << endl);
     do {
       OtherAtom = DFS.AtomStack->PopLast();
       LeafWalker->Leaf->AddCopyAtom(OtherAtom);
       mol->SetNextComponentNumber(OtherAtom, DFS.ComponentNumber);
-      DoLog(3) && (Log() << Verbose(3) << "(7) Other[" << OtherAtom->Name << "]'s Compont is " << DFS.ComponentNumber << "." << endl);
+      DoLog(3) && (Log() << Verbose(3) << "(7) Other[" << OtherAtom->getName() << "]'s Compont is " << DFS.ComponentNumber << "." << endl);
     } while (OtherAtom != Walker);
     DFS.ComponentNumber++;
@@ -445,5 +477,5 @@
     Walker = DFS.Root;
     Binder = mol->FindNextUnused(Walker);
-    DoLog(1) && (Log() << Verbose(1) << "(10) Walker is Root[" << DFS.Root->Name << "], next Unused Bond is " << Binder << "." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "(10) Walker is Root[" << DFS.Root->getName() << "], next Unused Bond is " << Binder << "." << endl);
     if (Binder != NULL) { // Root is separation vertex
       DoLog(1) && (Log() << Verbose(1) << "(11) Root is a separation vertex." << endl);
@@ -461,5 +493,5 @@
 void DepthFirstSearchAnalysis_Init(struct DFSAccounting &DFS, const molecule * const mol)
 {
-  DFS.AtomStack = new StackClass<atom *> (mol->AtomCount);
+  DFS.AtomStack = new StackClass<atom *> (mol->getAtomCount());
   DFS.CurrentGraphNr = 0;
   DFS.ComponentNumber = 0;
@@ -502,11 +534,11 @@
   bond *Binder = NULL;
 
-  if (AtomCount == 0)
+  if (getAtomCount() == 0)
     return SubGraphs;
   DoLog(0) && (Log() << Verbose(0) << "Begin of DepthFirstSearchAnalysis" << endl);
   DepthFirstSearchAnalysis_Init(DFS, this);
 
-  DFS.Root = start->next;
-  while (DFS.Root != end) { // if there any atoms at all
+  for (molecule::const_iterator iter = begin(); iter != end();) {
+    DFS.Root = *iter;
     // (1) mark all edges unused, empty stack, set atom->GraphNr = -1 for all
     DFS.AtomStack->ClearStack();
@@ -548,8 +580,8 @@
 
     // step on to next root
-    while ((DFS.Root != end) && (DFS.Root->GraphNr != -1)) {
-      //Log() << Verbose(1) << "Current next subgraph root candidate is " << Root->Name << "." << endl;
-      if (DFS.Root->GraphNr != -1) // if already discovered, step on
-        DFS.Root = DFS.Root->next;
+    while ((iter != end()) && ((*iter)->GraphNr != -1)) {
+      //Log() << Verbose(1) << "Current next subgraph root candidate is " << (*iter)->Name << "." << endl;
+      if ((*iter)->GraphNr != -1) // if already discovered, step on
+        iter++;
     }
   }
@@ -573,12 +605,11 @@
 {
   NoCyclicBonds = 0;
-  bond *Binder = first;
-  while (Binder->next != last) {
-    Binder = Binder->next;
-    if (Binder->rightatom->LowpointNr == Binder->leftatom->LowpointNr) { // cyclic ??
-      Binder->Cyclic = true;
-      NoCyclicBonds++;
-    }
-  }
+  for(molecule::const_iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::const_iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner)
+        if ((*BondRunner)->rightatom->LowpointNr == (*BondRunner)->leftatom->LowpointNr) { // cyclic ??
+          (*BondRunner)->Cyclic = true;
+          NoCyclicBonds++;
+        }
 }
 ;
@@ -599,18 +630,20 @@
 void molecule::OutputGraphInfoPerBond() const
 {
+  bond *Binder = NULL;
   DoLog(1) && (Log() << Verbose(1) << "Final graph info for each bond is:" << endl);
-  bond *Binder = first;
-  while (Binder->next != last) {
-    Binder = Binder->next;
-    DoLog(2) && (Log() << Verbose(2) << ((Binder->Type == TreeEdge) ? "TreeEdge " : "BackEdge ") << *Binder << ": <");
-    DoLog(0) && (Log() << Verbose(0) << ((Binder->leftatom->SeparationVertex) ? "SP," : "") << "L" << Binder->leftatom->LowpointNr << " G" << Binder->leftatom->GraphNr << " Comp.");
-    Binder->leftatom->OutputComponentNumber();
-    DoLog(0) && (Log() << Verbose(0) << " ===  ");
-    DoLog(0) && (Log() << Verbose(0) << ((Binder->rightatom->SeparationVertex) ? "SP," : "") << "L" << Binder->rightatom->LowpointNr << " G" << Binder->rightatom->GraphNr << " Comp.");
-    Binder->rightatom->OutputComponentNumber();
-    DoLog(0) && (Log() << Verbose(0) << ">." << endl);
-    if (Binder->Cyclic) // cyclic ??
-      DoLog(3) && (Log() << Verbose(3) << "Lowpoint at each side are equal: CYCLIC!" << endl);
-  }
+  for(molecule::const_iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::const_iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner) {
+        Binder = *BondRunner;
+        DoLog(2) && (Log() << Verbose(2) << ((Binder->Type == TreeEdge) ? "TreeEdge " : "BackEdge ") << *Binder << ": <");
+        DoLog(0) && (Log() << Verbose(0) << ((Binder->leftatom->SeparationVertex) ? "SP," : "") << "L" << Binder->leftatom->LowpointNr << " G" << Binder->leftatom->GraphNr << " Comp.");
+        Binder->leftatom->OutputComponentNumber();
+        DoLog(0) && (Log() << Verbose(0) << " ===  ");
+        DoLog(0) && (Log() << Verbose(0) << ((Binder->rightatom->SeparationVertex) ? "SP," : "") << "L" << Binder->rightatom->LowpointNr << " G" << Binder->rightatom->GraphNr << " Comp.");
+        Binder->rightatom->OutputComponentNumber();
+        DoLog(0) && (Log() << Verbose(0) << ">." << endl);
+        if (Binder->Cyclic) // cyclic ??
+          DoLog(3) && (Log() << Verbose(3) << "Lowpoint at each side are equal: CYCLIC!" << endl);
+      }
 }
 ;
@@ -624,11 +657,13 @@
 {
   BFS.AtomCount = AtomCount;
-  BFS.PredecessorList = Calloc<atom*> (AtomCount, "molecule::BreadthFirstSearchAdd_Init: **PredecessorList");
-  BFS.ShortestPathList = Malloc<int> (AtomCount, "molecule::BreadthFirstSearchAdd_Init: *ShortestPathList");
-  BFS.ColorList = Calloc<enum Shading> (AtomCount, "molecule::BreadthFirstSearchAdd_Init: *ColorList");
+  BFS.PredecessorList = new atom*[AtomCount];
+  BFS.ShortestPathList = new int[AtomCount];
+  BFS.ColorList = new enum Shading[AtomCount];
   BFS.BFSStack = new StackClass<atom *> (AtomCount);
 
-  for (int i = AtomCount; i--;)
+  for (int i = AtomCount; i--;) {
     BFS.ShortestPathList[i] = -1;
+    BFS.PredecessorList[i] = 0;
+  }
 };
 
@@ -639,7 +674,7 @@
 void FinalizeBFSAccounting(struct BFSAccounting &BFS)
 {
-  Free(&BFS.PredecessorList);
-  Free(&BFS.ShortestPathList);
-  Free(&BFS.ColorList);
+  delete[](BFS.PredecessorList);
+  delete[](BFS.ShortestPathList);
+  delete[](BFS.ColorList);
   delete (BFS.BFSStack);
   BFS.AtomCount = 0;
@@ -692,5 +727,5 @@
         if (OtherAtom->type->Z != 1) {
 #endif
-        DoLog(2) && (Log() << Verbose(2) << "Current OtherAtom is: " << OtherAtom->Name << " for bond " << *(*Runner) << "." << endl);
+        DoLog(2) && (Log() << Verbose(2) << "Current OtherAtom is: " << OtherAtom->getName() << " for bond " << *(*Runner) << "." << endl);
         if (BFS.ColorList[OtherAtom->nr] == white) {
           BFS.TouchedStack->Push(OtherAtom);
@@ -698,5 +733,5 @@
           BFS.PredecessorList[OtherAtom->nr] = Walker; // Walker is the predecessor
           BFS.ShortestPathList[OtherAtom->nr] = BFS.ShortestPathList[Walker->nr] + 1;
-          DoLog(2) && (Log() << Verbose(2) << "Coloring OtherAtom " << OtherAtom->Name << " lightgray, its predecessor is " << Walker->Name << " and its Shortest Path is " << BFS.ShortestPathList[OtherAtom->nr] << " egde(s) long." << endl);
+          DoLog(2) && (Log() << Verbose(2) << "Coloring OtherAtom " << OtherAtom->getName() << " lightgray, its predecessor is " << Walker->getName() << " and its Shortest Path is " << BFS.ShortestPathList[OtherAtom->nr] << " egde(s) long." << endl);
           //if (BFS.ShortestPathList[OtherAtom->nr] < MinimumRingSize[Walker->GetTrueFather()->nr]) { // Check for maximum distance
           DoLog(3) && (Log() << Verbose(3) << "Putting OtherAtom into queue." << endl);
@@ -719,5 +754,5 @@
     }
     BFS.ColorList[Walker->nr] = black;
-    DoLog(1) && (Log() << Verbose(1) << "Coloring Walker " << Walker->Name << " black." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "Coloring Walker " << Walker->getName() << " black." << endl);
     if (OtherAtom == BFS.Root) { // if we have found the root, check whether this cycle wasn't already found beforehand
       // step through predecessor list
@@ -770,10 +805,10 @@
     Walker = BFS.Root;
     while (Walker != BackEdge->rightatom) {
-      DoLog(0) && (Log() << Verbose(0) << Walker->Name << " <-> ");
+      DoLog(0) && (Log() << Verbose(0) << Walker->getName() << " <-> ");
       Walker = BFS.PredecessorList[Walker->nr];
       Walker->GetTrueFather()->IsCyclic = true;
       RingSize++;
     }
-    DoLog(0) && (Log() << Verbose(0) << Walker->Name << "  with a length of " << RingSize << "." << endl << endl);
+    DoLog(0) && (Log() << Verbose(0) << Walker->getName() << "  with a length of " << RingSize << "." << endl << endl);
     // walk through all and set MinimumRingSize
     Walker = BFS.Root;
@@ -854,13 +889,12 @@
   if (MinRingSize != -1) { // if rings are present
     // go over all atoms
-    Root = mol->start;
-    while (Root->next != mol->end) {
-      Root = Root->next;
-
-      if (MinimumRingSize[Root->GetTrueFather()->nr] == mol->AtomCount) { // check whether MinimumRingSize is set, if not BFS to next where it is
+    for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+      Root = *iter;
+
+      if (MinimumRingSize[Root->GetTrueFather()->nr] == mol->getAtomCount()) { // check whether MinimumRingSize is set, if not BFS to next where it is
         Walker = Root;
 
         //Log() << Verbose(1) << "---------------------------------------------------------------------------------------------------------" << endl;
-        CyclicStructureAnalysis_BFSToNextCycle(Root, Walker, MinimumRingSize, mol->AtomCount);
+        CyclicStructureAnalysis_BFSToNextCycle(Root, Walker, MinimumRingSize, mol->getAtomCount());
 
       }
@@ -892,5 +926,5 @@
   int MinRingSize = -1;
 
-  InitializeBFSAccounting(BFS, AtomCount);
+  InitializeBFSAccounting(BFS, getAtomCount());
 
   //Log() << Verbose(1) << "Back edge list - ";
@@ -966,9 +1000,8 @@
 void molecule::ResetAllBondsToUnused() const
 {
-  bond *Binder = first;
-  while (Binder->next != last) {
-    Binder = Binder->next;
-    Binder->ResetUsed();
-  }
+  for(molecule::const_iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner)
+    for(BondList::const_iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner)
+        (*BondRunner)->ResetUsed();
 }
 ;
@@ -1004,12 +1037,12 @@
     line << filename;
   AdjacencyFile.open(line.str().c_str(), ios::out);
-  DoLog(1) && (Log() << Verbose(1) << "Saving adjacency list ... ");
+  DoLog(1) && (Log() << Verbose(1) << "Saving adjacency list ... " << endl);
   if (AdjacencyFile != NULL) {
     AdjacencyFile << "m\tn" << endl;
     ActOnAllAtoms(&atom::OutputAdjacency, &AdjacencyFile);
     AdjacencyFile.close();
-    DoLog(1) && (Log() << Verbose(1) << "done." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t... done." << endl);
   } else {
-    DoLog(1) && (Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t... failed to open file " << line.str() << "." << endl);
     status = false;
   }
@@ -1036,12 +1069,12 @@
     line << filename;
   BondFile.open(line.str().c_str(), ios::out);
-  DoLog(1) && (Log() << Verbose(1) << "Saving adjacency list ... ");
+  DoLog(1) && (Log() << Verbose(1) << "Saving adjacency list ... " << endl);
   if (BondFile != NULL) {
     BondFile << "m\tn" << endl;
     ActOnAllAtoms(&atom::OutputBonds, &BondFile);
     BondFile.close();
-    DoLog(1) && (Log() << Verbose(1) << "done." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t... done." << endl);
   } else {
-    DoLog(1) && (Log() << Verbose(1) << "failed to open file " << line.str() << "." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "\t... failed to open file " << line.str() << "." << endl);
     status = false;
   }
@@ -1056,10 +1089,12 @@
   filename << path << "/" << FRAGMENTPREFIX << ADJACENCYFILE;
   File.open(filename.str().c_str(), ios::out);
-  DoLog(1) && (Log() << Verbose(1) << "Looking at bond structure stored in adjacency file and comparing to present one ... ");
+  DoLog(1) && (Log() << Verbose(1) << "Looking at bond structure stored in adjacency file and comparing to present one ... " << endl);
   if (File == NULL)
     return false;
 
   // allocate storage structure
-  CurrentBonds = Calloc<int> (8, "molecule::CheckAdjacencyFileAgainstMolecule - CurrentBonds"); // contains parsed bonds of current atom
+  CurrentBonds = new int[8]; // contains parsed bonds of current atom
+  for(int i=0;i<8;i++)
+    CurrentBonds[i] = 0;
   return true;
 }
@@ -1070,5 +1105,5 @@
   File.close();
   File.clear();
-  Free(&CurrentBonds);
+  delete[](CurrentBonds);
 }
 ;
@@ -1090,7 +1125,7 @@
         NonMatchNumber++;
         status = false;
+        DoeLog(2) && (eLog() << Verbose(2) << id << " can not be found in list." << endl);
+      } else {
         //Log() << Verbose(0) << "[" << id << "]\t";
-      } else {
-        //Log() << Verbose(0) << id << "\t";
       }
     }
@@ -1114,8 +1149,8 @@
   bool status = true;
   atom *Walker = NULL;
-  char *buffer = NULL;
   int *CurrentBonds = NULL;
   int NonMatchNumber = 0; // will number of atoms with differing bond structure
   size_t CurrentBondsOfAtom = -1;
+  const int AtomCount = getAtomCount();
 
   if (!CheckAdjacencyFileAgainstMolecule_Init(path, File, CurrentBonds)) {
@@ -1124,5 +1159,5 @@
   }
 
-  buffer = Malloc<char> (MAXSTRINGSIZE, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer");
+  char buffer[MAXSTRINGSIZE];
   // Parse the file line by line and count the bonds
   while (!File.eof()) {
@@ -1140,7 +1175,9 @@
       // compare against present bonds
       CheckAdjacencyFileAgainstMolecule_CompareBonds(status, NonMatchNumber, Walker, CurrentBondsOfAtom, AtomNr, CurrentBonds, ListOfAtoms);
-    }
-  }
-  Free(&buffer);
+    } else {
+      if (AtomNr != -1)
+        DoeLog(2) && (eLog() << Verbose(2) << AtomNr << " is not valid in the range of ids [" << 0 << "," << AtomCount << ")." << endl);
+    }
+  }
   CheckAdjacencyFileAgainstMolecule_Finalize(File, CurrentBonds);
 
@@ -1196,7 +1233,7 @@
   BFS.AtomCount = AtomCount;
   BFS.BondOrder = BondOrder;
-  BFS.PredecessorList = Calloc<atom*> (AtomCount, "molecule::BreadthFirstSearchAdd_Init: **PredecessorList");
-  BFS.ShortestPathList = Calloc<int> (AtomCount, "molecule::BreadthFirstSearchAdd_Init: *ShortestPathList");
-  BFS.ColorList = Malloc<enum Shading> (AtomCount, "molecule::BreadthFirstSearchAdd_Init: *ColorList");
+  BFS.PredecessorList = new atom*[AtomCount];
+  BFS.ShortestPathList = new int[AtomCount];
+  BFS.ColorList = new enum Shading[AtomCount];
   BFS.BFSStack = new StackClass<atom *> (AtomCount);
 
@@ -1207,4 +1244,5 @@
   // initialise each vertex as white with no predecessor, empty queue, color Root lightgray
   for (int i = AtomCount; i--;) {
+    BFS.PredecessorList[i] = NULL;
     BFS.ShortestPathList[i] = -1;
     if ((AddedAtomList != NULL) && (AddedAtomList[i] != NULL)) // mark already present atoms (i.e. Root and maybe others) as visited
@@ -1213,5 +1251,5 @@
       BFS.ColorList[i] = white;
   }
-  //BFS.ShortestPathList[Root->nr] = 0; //is set due to Calloc()
+  //BFS.ShortestPathList[Root->nr] = 0; // done by Calloc
 }
 ;
@@ -1219,7 +1257,7 @@
 void BreadthFirstSearchAdd_Free(struct BFSAccounting &BFS)
 {
-  Free(&BFS.PredecessorList);
-  Free(&BFS.ShortestPathList);
-  Free(&BFS.ColorList);
+  delete[](BFS.PredecessorList);
+  delete[](BFS.ShortestPathList);
+  delete[](BFS.ColorList);
   delete (BFS.BFSStack);
   BFS.AtomCount = 0;
@@ -1233,14 +1271,14 @@
   BFS.PredecessorList[OtherAtom->nr] = Walker; // Walker is the predecessor
   BFS.ShortestPathList[OtherAtom->nr] = BFS.ShortestPathList[Walker->nr] + 1;
-  DoLog(2) && (Log() << Verbose(2) << "Coloring OtherAtom " << OtherAtom->Name << " " << ((BFS.ColorList[OtherAtom->nr] == white) ? "white" : "lightgray") << ", its predecessor is " << Walker->Name << " and its Shortest Path is " << BFS.ShortestPathList[OtherAtom->nr] << " egde(s) long." << endl);
+  DoLog(2) && (Log() << Verbose(2) << "Coloring OtherAtom " << OtherAtom->getName() << " " << ((BFS.ColorList[OtherAtom->nr] == white) ? "white" : "lightgray") << ", its predecessor is " << Walker->getName() << " and its Shortest Path is " << BFS.ShortestPathList[OtherAtom->nr] << " egde(s) long." << endl);
   if ((((BFS.ShortestPathList[OtherAtom->nr] < BFS.BondOrder) && (Binder != Bond)))) { // Check for maximum distance
     DoLog(3) && (Log() << Verbose(3));
     if (AddedAtomList[OtherAtom->nr] == NULL) { // add if it's not been so far
       AddedAtomList[OtherAtom->nr] = Mol->AddCopyAtom(OtherAtom);
-      DoLog(0) && (Log() << Verbose(0) << "Added OtherAtom " << OtherAtom->Name);
+      DoLog(0) && (Log() << Verbose(0) << "Added OtherAtom " << OtherAtom->getName());
       AddedBondList[Binder->nr] = Mol->CopyBond(AddedAtomList[Walker->nr], AddedAtomList[OtherAtom->nr], Binder);
       DoLog(0) && (Log() << Verbose(0) << " and bond " << *(AddedBondList[Binder->nr]) << ", ");
     } else { // this code should actually never come into play (all white atoms are not yet present in BondMolecule, that's why they are white in the first place)
-      DoLog(0) && (Log() << Verbose(0) << "Not adding OtherAtom " << OtherAtom->Name);
+      DoLog(0) && (Log() << Verbose(0) << "Not adding OtherAtom " << OtherAtom->getName());
       if (AddedBondList[Binder->nr] == NULL) {
         AddedBondList[Binder->nr] = Mol->CopyBond(AddedAtomList[Walker->nr], AddedAtomList[OtherAtom->nr], Binder);
@@ -1313,5 +1351,5 @@
     AddedAtomList[Root->nr] = Mol->AddCopyAtom(Root);
 
-  BreadthFirstSearchAdd_Init(BFS, Root, BondOrder, AtomCount, AddedAtomList);
+  BreadthFirstSearchAdd_Init(BFS, Root, BondOrder, getAtomCount(), AddedAtomList);
 
   // and go on ... Queue always contains all lightgray vertices
@@ -1322,10 +1360,10 @@
     // followed by n+1 till top of stack.
     Walker = BFS.BFSStack->PopFirst(); // pop oldest added
-    DoLog(1) && (Log() << Verbose(1) << "Current Walker is: " << Walker->Name << ", and has " << Walker->ListOfBonds.size() << " bonds." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "Current Walker is: " << Walker->getName() << ", and has " << Walker->ListOfBonds.size() << " bonds." << endl);
     for (BondList::const_iterator Runner = Walker->ListOfBonds.begin(); Runner != Walker->ListOfBonds.end(); (++Runner)) {
       if ((*Runner) != NULL) { // don't look at bond equal NULL
         Binder = (*Runner);
         OtherAtom = (*Runner)->GetOtherAtom(Walker);
-        DoLog(2) && (Log() << Verbose(2) << "Current OtherAtom is: " << OtherAtom->Name << " for bond " << *(*Runner) << "." << endl);
+        DoLog(2) && (Log() << Verbose(2) << "Current OtherAtom is: " << OtherAtom->getName() << " for bond " << *(*Runner) << "." << endl);
         if (BFS.ColorList[OtherAtom->nr] == white) {
           BreadthFirstSearchAdd_UnvisitedNode(Mol, BFS, Walker, OtherAtom, Binder, Bond, AddedAtomList, AddedBondList, IsAngstroem);
@@ -1336,5 +1374,5 @@
     }
     BFS.ColorList[Walker->nr] = black;
-    DoLog(1) && (Log() << Verbose(1) << "Coloring Walker " << Walker->Name << " black." << endl);
+    DoLog(1) && (Log() << Verbose(1) << "Coloring Walker " << Walker->getName() << " black." << endl);
   }
   BreadthFirstSearchAdd_Free(BFS);
@@ -1360,5 +1398,7 @@
 {
   // reset parent list
-  ParentList = Calloc<atom*> (AtomCount, "molecule::BuildInducedSubgraph_Init: **ParentList");
+  ParentList = new atom*[AtomCount];
+  for (int i=0;i<AtomCount;i++)
+    ParentList[i] = NULL;
   DoLog(3) && (Log() << Verbose(3) << "Resetting ParentList." << endl);
 }
@@ -1369,18 +1409,14 @@
   // fill parent list with sons
   DoLog(3) && (Log() << Verbose(3) << "Filling Parent List." << endl);
-  atom *Walker = mol->start;
-  while (Walker->next != mol->end) {
-    Walker = Walker->next;
-    ParentList[Walker->father->nr] = Walker;
+  for (molecule::const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {
+    ParentList[(*iter)->father->nr] = (*iter);
     // Outputting List for debugging
-    DoLog(4) && (Log() << Verbose(4) << "Son[" << Walker->father->nr << "] of " << Walker->father << " is " << ParentList[Walker->father->nr] << "." << endl);
-  }
-
-}
-;
+    DoLog(4) && (Log() << Verbose(4) << "Son[" << (*iter)->father->nr << "] of " << (*iter)->father << " is " << ParentList[(*iter)->father->nr] << "." << endl);
+  }
+};
 
 void BuildInducedSubgraph_Finalize(atom **&ParentList)
 {
-  Free(&ParentList);
+  delete[](ParentList);
 }
 ;
@@ -1389,20 +1425,17 @@
 {
   bool status = true;
-  atom *Walker = NULL;
   atom *OtherAtom = NULL;
   // check each entry of parent list and if ok (one-to-and-onto matching) create bonds
   DoLog(3) && (Log() << Verbose(3) << "Creating bonds." << endl);
-  Walker = Father->start;
-  while (Walker->next != Father->end) {
-    Walker = Walker->next;
-    if (ParentList[Walker->nr] != NULL) {
-      if (ParentList[Walker->nr]->father != Walker) {
+  for (molecule::const_iterator iter = Father->begin(); iter != Father->end(); ++iter) {
+    if (ParentList[(*iter)->nr] != NULL) {
+      if (ParentList[(*iter)->nr]->father != (*iter)) {
         status = false;
       } else {
-        for (BondList::const_iterator Runner = Walker->ListOfBonds.begin(); Runner != Walker->ListOfBonds.end(); (++Runner)) {
-          OtherAtom = (*Runner)->GetOtherAtom(Walker);
+        for (BondList::const_iterator Runner = (*iter)->ListOfBonds.begin(); Runner != (*iter)->ListOfBonds.end(); (++Runner)) {
+          OtherAtom = (*Runner)->GetOtherAtom((*iter));
           if (ParentList[OtherAtom->nr] != NULL) { // if otheratom is also a father of an atom on this molecule, create the bond
-            DoLog(4) && (Log() << Verbose(4) << "Endpoints of Bond " << (*Runner) << " are both present: " << ParentList[Walker->nr]->Name << " and " << ParentList[OtherAtom->nr]->Name << "." << endl);
-            mol->AddBond(ParentList[Walker->nr], ParentList[OtherAtom->nr], (*Runner)->BondDegree);
+            DoLog(4) && (Log() << Verbose(4) << "Endpoints of Bond " << (*Runner) << " are both present: " << ParentList[(*iter)->nr]->getName() << " and " << ParentList[OtherAtom->nr]->getName() << "." << endl);
+            mol->AddBond(ParentList[(*iter)->nr], ParentList[OtherAtom->nr], (*Runner)->BondDegree);
           }
         }
@@ -1427,7 +1460,6 @@
   bool status = true;
   atom **ParentList = NULL;
-
   DoLog(2) && (Log() << Verbose(2) << "Begin of BuildInducedSubgraph." << endl);
-  BuildInducedSubgraph_Init(ParentList, Father->AtomCount);
+  BuildInducedSubgraph_Init(ParentList, Father->getAtomCount());
   BuildInducedSubgraph_FillParentList(this, Father, ParentList);
   status = BuildInducedSubgraph_CreateBondsFromParent(this, Father, ParentList);
Index: src/molecule_pointcloud.cpp
===================================================================
--- src/molecule_pointcloud.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule_pointcloud.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -8,4 +8,5 @@
 #include "atom.hpp"
 #include "config.hpp"
+#include "info.hpp"
 #include "memoryallocator.hpp"
 #include "molecule.hpp"
@@ -31,76 +32,47 @@
 };
 
-/** Return current atom in the list.
- * \return pointer to atom or NULL if none present
+
+/** PointCloud implementation of GoPoint
+ * Uses atoms and STL stuff.
  */
-TesselPoint *molecule::GetPoint() const
+TesselPoint* molecule::GetPoint() const
 {
-  if ((InternalPointer != start) && (InternalPointer != end))
-    return InternalPointer;
-  else
-    return NULL;
+  return (*InternalPointer);
 };
 
-/** Return pointer to one after last atom in the list.
- * \return pointer to end marker
- */
-TesselPoint *molecule::GetTerminalPoint() const
-{
-  return end;
-};
-
-/** Return the greatest index of all atoms in the list.
- * \return greatest index
- */
-int molecule::GetMaxId() const
-{
-  return last_atom;
-};
-
-/** Go to next atom.
- * Stops at last one.
+/** PointCloud implementation of GoToNext.
+ * Uses atoms and STL stuff.
  */
 void molecule::GoToNext() const
 {
-  if (InternalPointer != end)
-    InternalPointer = InternalPointer->next;
+  if (InternalPointer != atoms.end())
+    InternalPointer++;
 };
 
-/** Go to previous atom.
- * Stops at first one.
- */
-void molecule::GoToPrevious() const
-{
-  if (InternalPointer->previous != start)
-    InternalPointer = InternalPointer->previous;
-};
-
-/** Goes to first atom.
+/** PointCloud implementation of GoToFirst.
+ * Uses atoms and STL stuff.
  */
 void molecule::GoToFirst() const
 {
-  InternalPointer = start->next;
+  InternalPointer = atoms.begin();
 };
 
-/** Goes to last atom.
- */
-void molecule::GoToLast() const
-{
-  InternalPointer = end->previous;
-};
-
-/** Checks whether we have any atoms in molecule.
- * \return true - no atoms, false - not empty
+/** PointCloud implementation of IsEmpty.
+ * Uses atoms and STL stuff.
  */
 bool molecule::IsEmpty() const
 {
-  return (start->next == end);
+  return (empty());
 };
 
-/** Checks whether we are at the last atom
- * \return true - current atom is last one, false - is not last one
+/** PointCloud implementation of IsLast.
+ * Uses atoms and STL stuff.
  */
 bool molecule::IsEnd() const
 {
-  return (InternalPointer == end);
+  return (InternalPointer == atoms.end());
 };
+
+int molecule::GetMaxId() const {
+  return getAtomCount();
+}
Index: src/molecule_template.hpp
===================================================================
--- src/molecule_template.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/molecule_template.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -24,16 +24,12 @@
 template <typename res> void molecule::ActOnAllVectors( res (Vector::*f)() ) const
     {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)();
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)();
   }
 };
 template <typename res> void molecule::ActOnAllVectors( res (Vector::*f)() const ) const
     {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)();
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)();
   }
 };
@@ -41,32 +37,24 @@
 template <typename res, typename T> void molecule::ActOnAllVectors( res (Vector::*f)(T), T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t);
   }
 };
 template <typename res, typename T> void molecule::ActOnAllVectors( res (Vector::*f)(T) const, T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t);
   }
 };
 template <typename res, typename T> void molecule::ActOnAllVectors( res (Vector::*f)(T&), T &t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t);
   }
 };
 template <typename res, typename T> void molecule::ActOnAllVectors( res (Vector::*f)(T&) const, T &t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t);
   }
 };
@@ -74,16 +62,12 @@
 template <typename res, typename T, typename U> void molecule::ActOnAllVectors( res (Vector::*f)(T, U), T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t, u);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t, u);
   }
 };
 template <typename res, typename T, typename U> void molecule::ActOnAllVectors( res (Vector::*f)(T, U) const, T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t, u);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t, u);
   }
 };
@@ -91,16 +75,12 @@
 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllVectors( res (Vector::*f)(T, U, V), T t, U u, V v) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t, u, v);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t, u, v);
   }
 };
 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllVectors( res (Vector::*f)(T, U, V) const, T t, U u, V v) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    ((Walker->node)->*f)(t, u, v);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (((*iter)->node)->*f)(t, u, v);
   }
 };
@@ -112,8 +92,6 @@
 {
   res result = 0;
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    result += (Walker->*f)();
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    result += ((*iter)->*f)();
   }
   return result;
@@ -122,8 +100,6 @@
 {
   res result = 0;
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    result += (Walker->*f)();
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    result += ((*iter)->*f)();
   }
   return result;
@@ -133,8 +109,6 @@
 {
   res result = 0;
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    result += (Walker->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    result += ((*iter)->*f)(t);
   }
   return result;
@@ -143,8 +117,6 @@
 {
   res result = 0;
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    result += (Walker->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    result += ((*iter)->*f)(t);
   }
   return result;
@@ -157,16 +129,12 @@
 template <typename res> void molecule::ActWithEachAtom( res (molecule::*f)(atom *)) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*f)((*iter));
   }
 };
 template <typename res> void molecule::ActWithEachAtom( res (molecule::*f)(atom *) const) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*f)((*iter));
   }
 };
@@ -177,16 +145,12 @@
 template <typename res> void molecule::ActOnCopyWithEachAtom( res (molecule::*f)(atom *) , molecule *copy) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (copy->*f)((*iter));
   }
 };
 template <typename res> void molecule::ActOnCopyWithEachAtom( res (molecule::*f)(atom *) const, molecule *copy) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (copy->*f)((*iter));
   }
 };
@@ -197,36 +161,28 @@
 template <typename res> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) () ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)())
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)())
+      (copy->*f)((*iter));
   }
 };
 template <typename res> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) () const ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)())
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)())
+      (copy->*f)((*iter));
   }
 };
 template <typename res> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const , molecule *copy, bool (atom::*condition) () ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)())
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)())
+      (copy->*f)((*iter));
   }
 };
 template <typename res> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) () const ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)())
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)())
+      (copy->*f)((*iter));
   }
 };
@@ -234,36 +190,28 @@
 template <typename res, typename T> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) (T), T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) (T) const, T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) (T), T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) (T) const, T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t))
+      (copy->*f)((*iter));
   }
 };
@@ -271,36 +219,28 @@
 template <typename res, typename T, typename U> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) (T, U), T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T, typename U> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) (T, U) const, T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T, typename U> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) (T, U), T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T, typename U> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) (T, U) const, T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u))
+      (copy->*f)((*iter));
   }
 };
@@ -308,36 +248,28 @@
 template <typename res, typename T, typename U, typename V> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) (T, U, V), T t, U u, V v ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u,v))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u,v))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T, typename U, typename V> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) , molecule *copy, bool (atom::*condition) (T, U, V) const, T t, U u, V v ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u,v))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u,v))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T, typename U, typename V> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) (T, U, V), T t, U u, V v ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u,v))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u,v))
+      (copy->*f)((*iter));
   }
 };
 template <typename res, typename T, typename U, typename V> void molecule::ActOnCopyWithEachAtomIfTrue( res (molecule::*f)(atom *) const, molecule *copy, bool (atom::*condition) (T, U, V) const, T t, U u, V v ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    if ((Walker->*condition)(t,u,v))
-      (copy->*f)(Walker);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    if (((*iter)->*condition)(t,u,v))
+      (copy->*f)((*iter));
   }
 };
@@ -348,16 +280,12 @@
 template <typename res, typename typ> void molecule::ActOnAllAtoms( res (typ::*f)()) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)();
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)();
   }
 };
 template <typename res, typename typ> void molecule::ActOnAllAtoms( res (typ::*f)() const) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)();
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)();
   }
 };
@@ -365,16 +293,12 @@
 template <typename res, typename typ, typename T> void molecule::ActOnAllAtoms( res (typ::*f)(T), T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t);
   }
 };
 template <typename res, typename typ, typename T> void molecule::ActOnAllAtoms( res (typ::*f)(T) const, T t ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t);
   }
 };
@@ -382,16 +306,12 @@
 template <typename res, typename typ, typename T, typename U> void molecule::ActOnAllAtoms( res (typ::*f)(T, U), T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t, u);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t, u);
   }
 };
 template <typename res, typename typ, typename T, typename U> void molecule::ActOnAllAtoms( res (typ::*f)(T, U) const, T t, U u ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t, u);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t, u);
   }
 };
@@ -399,16 +319,12 @@
 template <typename res, typename typ, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V), T t, U u, V v) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t, u, v);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t, u, v);
   }
 };
 template <typename res, typename typ, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V) const, T t, U u, V v) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t, u, v);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t, u, v);
   }
 };
@@ -416,16 +332,12 @@
 template <typename res, typename typ, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V, W), T t, U u, V v, W w) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t, u, v, w);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t, u, v, w);
   }
 };
 template <typename res, typename typ, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V, W) const, T t, U u, V v, W w) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (Walker->*f)(t, u, v, w);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    ((*iter)->*f)(t, u, v, w);
   }
 };
@@ -436,25 +348,19 @@
 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, void (*Setor)(T *, T *) ) const
 {
-  atom *Walker = start;
   int inc = 1;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*Setor) (&array[(Walker->*index)], &inc);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*Setor) (&array[((*iter)->*index)], &inc);
   }
 };
 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, void (*Setor)(T *, T *), T value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*Setor) (&array[(Walker->*index)], &value);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*Setor) (&array[((*iter)->*index)], &value);
   }
 };
 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, void (*Setor)(T *, T *), T *value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*Setor) (&array[(Walker->*index)], value);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*Setor) (&array[((*iter)->*index)], value);
   }
 };
@@ -462,25 +368,19 @@
 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int element::*index, void (*Setor)(T *, T *) ) const
 {
-  atom *Walker = start;
   int inc = 1;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*Setor) (&array[(Walker->type->*index)], &inc);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*Setor) (&array[((*iter)->type->*index)], &inc);
   }
 };
 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int element::*index, void (*Setor)(T *, T *), T value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*Setor) (&array[(Walker->type->*index)], &value);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*Setor) (&array[((*iter)->type->*index)], &value);
   }
 };
 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int element::*index, void (*Setor)(T *, T *), T *value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    (*Setor) (&array[(Walker->type->*index)], value);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*Setor) (&array[((*iter)->type->*index)], value);
   }
 };
@@ -488,41 +388,31 @@
 template <typename T, typename typ> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, T (atom::*Setor)(typ &), typ atom::*value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    array[(Walker->*index)] = (Walker->*Setor) (Walker->*value);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    array[((*iter)->*index)] = ((*iter)->*Setor) ((*iter)->*value);
   }
 };
 template <typename T, typename typ> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, T (atom::*Setor)(typ &) const, typ atom::*value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    array[(Walker->*index)] = (Walker->*Setor) (Walker->*value);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    array[((*iter)->*index)] = ((*iter)->*Setor) ((*iter)->*value);
   }
 };
 template <typename T, typename typ> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, T (atom::*Setor)(typ &), typ &vect ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    array[(Walker->*index)] = (Walker->*Setor) (vect);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    array[((*iter)->*index)] = ((*iter)->*Setor) (vect);
   }
 };
 template <typename T, typename typ> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, T (atom::*Setor)(typ &) const, typ &vect ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    array[(Walker->*index)] = (Walker->*Setor) (vect);
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    array[((*iter)->*index)] = ((*iter)->*Setor) (vect);
   }
 };
 template <typename T, typename typ, typename typ2> void molecule::SetAtomValueToIndexedArray ( T *array, int typ::*index, T typ2::*value ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    Walker->*value = array[(Walker->*index)];
-    //Log() << Verbose(2) << *Walker << " gets " << (Walker->*value); << endl;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*iter)->*value = array[((*iter)->*index)];
+    //Log() << Verbose(2) << *(*iter) << " gets " << ((*iter)->*value); << endl;
   }
 };
@@ -530,9 +420,7 @@
 template <typename T, typename typ> void molecule::SetAtomValueToValue ( T value, T typ::*ptr ) const
 {
-  atom *Walker = start;
-  while (Walker->next != end) {
-    Walker = Walker->next;
-    Walker->*ptr = value;
-    //Log() << Verbose(2) << *Walker << " gets " << (Walker->*ptr) << endl;
+  for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
+    (*iter)->*ptr = value;
+    //Log() << Verbose(2) << *(*iter) << " gets " << ((*iter)->*ptr) << endl;
   }
 };
Index: src/moleculelist.cpp
===================================================================
--- src/moleculelist.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/moleculelist.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -20,5 +20,7 @@
 #include "memoryallocator.hpp"
 #include "periodentafel.hpp"
-#include "World.hpp"
+#include "Helpers/Assert.hpp"
+
+#include "Helpers/Assert.hpp"
 
 /*********************************** Functions for class MoleculeListClass *************************/
@@ -38,10 +40,7 @@
 MoleculeListClass::~MoleculeListClass()
 {
-  DoLog(3) && (Log() << Verbose(3) << this << ": Freeing ListOfMolcules." << endl);
-  for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) {
-    DoLog(4) && (Log() << Verbose(4) << "ListOfMolecules: Freeing " << *ListRunner << "." << endl);
-    world->destroyMolecule(*ListRunner);
-  }
-  DoLog(4) && (Log() << Verbose(4) << "Freeing ListOfMolecules." << endl);
+  DoLog(4) && (Log() << Verbose(4) << "Clearing ListOfMolecules." << endl);
+  for(MoleculeList::iterator MolRunner = ListOfMolecules.begin(); MolRunner != ListOfMolecules.end(); ++MolRunner)
+    (*MolRunner)->signOff(this);
   ListOfMolecules.clear(); // empty list
 };
@@ -49,5 +48,4 @@
 /** Insert a new molecule into the list and set its number.
  * \param *mol molecule to add to list.
- * \return true - add successful
  */
 void MoleculeListClass::insert(molecule *mol)
@@ -59,4 +57,14 @@
 };
 
+/** Erases a molecule from the list.
+ * \param *mol molecule to add to list.
+ */
+void MoleculeListClass::erase(molecule *mol)
+{
+  OBSERVE;
+  mol->signOff(this);
+  ListOfMolecules.remove(mol);
+};
+
 /** Compare whether two molecules are equal.
  * \param *a molecule one
@@ -69,44 +77,46 @@
   int Count, Counter, aCounter, bCounter;
   int flag;
-  atom *aWalker = NULL;
-  atom *bWalker = NULL;
 
   // sort each atom list and put the numbers into a list, then go through
   //Log() << Verbose(0) << "Comparing fragment no. " << *(molecule **)a << " to " << *(molecule **)b << "." << endl;
-  if ((**(molecule **) a).AtomCount < (**(molecule **) b).AtomCount) {
+  // Yes those types are awkward... but check it for yourself it checks out this way
+  molecule *const *mol1_ptr= static_cast<molecule *const *>(a);
+  molecule *mol1 = *mol1_ptr;
+  molecule *const *mol2_ptr= static_cast<molecule *const *>(b);
+  molecule *mol2 = *mol2_ptr;
+  if (mol1->getAtomCount() < mol2->getAtomCount()) {
     return -1;
   } else {
-    if ((**(molecule **) a).AtomCount > (**(molecule **) b).AtomCount)
+    if (mol1->getAtomCount() > mol2->getAtomCount())
       return +1;
     else {
-      Count = (**(molecule **) a).AtomCount;
+      Count = mol1->getAtomCount();
       aList = new int[Count];
       bList = new int[Count];
 
       // fill the lists
-      aWalker = (**(molecule **) a).start;
-      bWalker = (**(molecule **) b).start;
       Counter = 0;
       aCounter = 0;
       bCounter = 0;
-      while ((aWalker->next != (**(molecule **) a).end) && (bWalker->next != (**(molecule **) b).end)) {
-        aWalker = aWalker->next;
-        bWalker = bWalker->next;
-        if (aWalker->GetTrueFather() == NULL)
+      molecule::const_iterator aiter = mol1->begin();
+      molecule::const_iterator biter = mol2->begin();
+      for (;(aiter != mol1->end()) && (biter != mol2->end());
+          ++aiter, ++biter) {
+        if ((*aiter)->GetTrueFather() == NULL)
           aList[Counter] = Count + (aCounter++);
         else
-          aList[Counter] = aWalker->GetTrueFather()->nr;
-        if (bWalker->GetTrueFather() == NULL)
+          aList[Counter] = (*aiter)->GetTrueFather()->nr;
+        if ((*biter)->GetTrueFather() == NULL)
           bList[Counter] = Count + (bCounter++);
         else
-          bList[Counter] = bWalker->GetTrueFather()->nr;
+          bList[Counter] = (*biter)->GetTrueFather()->nr;
         Counter++;
       }
       // check if AtomCount was for real
       flag = 0;
-      if ((aWalker->next == (**(molecule **) a).end) && (bWalker->next != (**(molecule **) b).end)) {
+      if ((aiter == mol1->end()) && (biter != mol2->end())) {
         flag = -1;
       } else {
-        if ((aWalker->next != (**(molecule **) a).end) && (bWalker->next == (**(molecule **) b).end))
+        if ((aiter != mol1->end()) && (biter == mol2->end()))
           flag = 1;
       }
@@ -142,5 +152,4 @@
 void MoleculeListClass::Enumerate(ostream *out)
 {
-  atom *Walker = NULL;
   periodentafel *periode = World::getInstance().getPeriode();
   std::map<atomicNumber_t,unsigned int> counts;
@@ -158,13 +167,11 @@
       // count atoms per element and determine size of bounding sphere
       size=0.;
-      Walker = (*ListRunner)->start;
-      while (Walker->next != (*ListRunner)->end) {
-        Walker = Walker->next;
-        counts[Walker->type->getNumber()]++;
-        if (Walker->x.DistanceSquared(Origin) > size)
-          size = Walker->x.DistanceSquared(Origin);
+      for (molecule::const_iterator iter = (*ListRunner)->begin(); iter != (*ListRunner)->end(); ++iter) {
+        counts[(*iter)->type->getNumber()]++;
+        if ((*iter)->x.DistanceSquared(Origin) > size)
+          size = (*iter)->x.DistanceSquared(Origin);
       }
       // output Index, Name, number of atoms, chemical formula
-      (*out) << ((*ListRunner)->ActiveFlag ? "*" : " ") << (*ListRunner)->IndexNr << "\t" << (*ListRunner)->name << "\t\t" << (*ListRunner)->AtomCount << "\t";
+      (*out) << ((*ListRunner)->ActiveFlag ? "*" : " ") << (*ListRunner)->IndexNr << "\t" << (*ListRunner)->name << "\t\t" << (*ListRunner)->getAtomCount() << "\t";
 
       std::map<atomicNumber_t,unsigned int>::reverse_iterator iter;
@@ -202,11 +209,9 @@
 
   // put all molecules of src into mol
-  atom *Walker = srcmol->start;
-  atom *NextAtom = Walker->next;
-  while (NextAtom != srcmol->end) {
-    Walker = NextAtom;
-    NextAtom = Walker->next;
-    srcmol->UnlinkAtom(Walker);
-    mol->AddAtom(Walker);
+  molecule::iterator runner;
+  for (molecule::iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) {
+    runner = iter++;
+    srcmol->UnlinkAtom((*runner));
+    mol->AddAtom((*runner));
   }
 
@@ -228,10 +233,7 @@
 
   // put all molecules of src into mol
-  atom *Walker = srcmol->start;
-  atom *NextAtom = Walker->next;
-  while (NextAtom != srcmol->end) {
-    Walker = NextAtom;
-    NextAtom = Walker->next;
-    Walker = mol->AddCopyAtom(Walker);
+  atom *Walker = NULL;
+  for (molecule::iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) {
+    Walker = mol->AddCopyAtom((*iter));
     Walker->father = Walker;
   }
@@ -330,18 +332,15 @@
 
   // prepare index list for bonds
-  srcmol->CountAtoms();
-  atom ** CopyAtoms = new atom*[srcmol->AtomCount];
-  for(int i=0;i<srcmol->AtomCount;i++)
+  atom ** CopyAtoms = new atom*[srcmol->getAtomCount()];
+  for(int i=0;i<srcmol->getAtomCount();i++)
     CopyAtoms[i] = NULL;
 
   // for each of the source atoms check whether we are in- or outside and add copy atom
-  atom *Walker = srcmol->start;
   int nr=0;
-  while (Walker->next != srcmol->end) {
-    Walker = Walker->next;
-    DoLog(2) && (Log() << Verbose(2) << "INFO: Current Walker is " << *Walker << "." << endl);
-    if (!TesselStruct->IsInnerPoint(Walker->x, LCList)) {
-      CopyAtoms[Walker->nr] = Walker->clone();
-      mol->AddAtom(CopyAtoms[Walker->nr]);
+  for (molecule::const_iterator iter = srcmol->begin(); iter != srcmol->end(); ++iter) {
+    DoLog(2) && (Log() << Verbose(2) << "INFO: Current Walker is " << **iter << "." << endl);
+    if (!TesselStruct->IsInnerPoint((*iter)->x, LCList)) {
+      CopyAtoms[(*iter)->nr] = (*iter)->clone();
+      mol->AddAtom(CopyAtoms[(*iter)->nr]);
       nr++;
     } else {
@@ -349,13 +348,13 @@
     }
   }
-  DoLog(1) && (Log() << Verbose(1) << nr << " of " << srcmol->AtomCount << " atoms have been merged.");
+  DoLog(1) && (Log() << Verbose(1) << nr << " of " << srcmol->getAtomCount() << " atoms have been merged.");
 
   // go through all bonds and add as well
-  bond *Binder = srcmol->first;
-  while(Binder->next != srcmol->last) {
-    Binder = Binder->next;
-    DoLog(3) && (Log() << Verbose(3) << "Adding Bond between " << *CopyAtoms[Binder->leftatom->nr] << " and " << *CopyAtoms[Binder->rightatom->nr]<< "." << endl);
-    mol->AddBond(CopyAtoms[Binder->leftatom->nr], CopyAtoms[Binder->rightatom->nr], Binder->BondDegree);
-  }
+  for(molecule::iterator AtomRunner = srcmol->begin(); AtomRunner != srcmol->end(); ++AtomRunner)
+    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); BondRunner != (*AtomRunner)->ListOfBonds.end(); ++BondRunner)
+      if ((*BondRunner)->leftatom == *AtomRunner) {
+        DoLog(3) && (Log() << Verbose(3) << "Adding Bond between " << *CopyAtoms[(*BondRunner)->leftatom->nr] << " and " << *CopyAtoms[(*BondRunner)->rightatom->nr]<< "." << endl);
+        mol->AddBond(CopyAtoms[(*BondRunner)->leftatom->nr], CopyAtoms[(*BondRunner)->rightatom->nr], (*BondRunner)->BondDegree);
+      }
   delete(LCList);
   return true;
@@ -382,6 +381,4 @@
 bool MoleculeListClass::AddHydrogenCorrection(char *path)
 {
-  atom *Walker = NULL;
-  atom *Runner = NULL;
   bond *Binder = NULL;
   double ***FitConstant = NULL, **correction = NULL;
@@ -427,9 +424,12 @@
 
   // 0b. allocate memory for constants
-  FitConstant = Calloc<double**>(3, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant");
+  FitConstant = new double**[3];
   for (int k = 0; k < 3; k++) {
-    FitConstant[k] = Calloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]");
+    FitConstant[k] = new double*[a];
     for (int i = a; i--;) {
-      FitConstant[k][i] = Calloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]");
+      FitConstant[k][i] = new double[b];
+      for (int j = b; j--;) {
+        FitConstant[k][i][j] = 0.;
+      }
     }
   }
@@ -477,7 +477,7 @@
 
   // 0d. allocate final correction matrix
-  correction = Calloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **correction");
+  correction = new double*[a];
   for (int i = a; i--;)
-    correction[i] = Calloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *correction[]");
+    correction[i] = new double[b];
 
   // 1a. go through every molecule in the list
@@ -488,20 +488,16 @@
         correction[k][j] = 0.;
     // 2. take every hydrogen that is a saturated one
-    Walker = (*ListRunner)->start;
-    while (Walker->next != (*ListRunner)->end) {
-      Walker = Walker->next;
-      //Log() << Verbose(1) << "Walker: " << *Walker << " with first bond " << *(Walker->ListOfBonds.begin()) << "." << endl;
-      if ((Walker->type->Z == 1) && ((Walker->father == NULL)
-          || (Walker->father->type->Z != 1))) { // if it's a hydrogen
-        Runner = (*ListRunner)->start;
-        while (Runner->next != (*ListRunner)->end) {
-          Runner = Runner->next;
-          //Log() << Verbose(2) << "Runner: " << *Runner << " with first bond " << *(Walker->ListOfBonds.begin()) << "." << endl;
+    for (molecule::const_iterator iter = (*ListRunner)->begin(); iter != (*ListRunner)->end(); ++iter) {
+      //Log() << Verbose(1) << "(*iter): " << *(*iter) << " with first bond " << *((*iter)->ListOfBonds.begin()) << "." << endl;
+      if (((*iter)->type->Z == 1) && (((*iter)->father == NULL)
+          || ((*iter)->father->type->Z != 1))) { // if it's a hydrogen
+        for (molecule::const_iterator runner = (*ListRunner)->begin(); runner != (*ListRunner)->end(); ++runner) {
+          //Log() << Verbose(2) << "Runner: " << *(*runner) << " with first bond " << *((*iter)->ListOfBonds.begin()) << "." << endl;
           // 3. take every other hydrogen that is the not the first and not bound to same bonding partner
-          Binder = *(Runner->ListOfBonds.begin());
-          if ((Runner->type->Z == 1) && (Runner->nr > Walker->nr) && (Binder->GetOtherAtom(Runner) != Binder->GetOtherAtom(Walker))) { // (hydrogens have only one bonding partner!)
+          Binder = *((*runner)->ListOfBonds.begin());
+          if (((*runner)->type->Z == 1) && ((*runner)->nr > (*iter)->nr) && (Binder->GetOtherAtom((*runner)) != Binder->GetOtherAtom((*iter)))) { // (hydrogens have only one bonding partner!)
             // 4. evaluate the morse potential for each matrix component and add up
-            distance = Runner->x.distance(Walker->x);
-            //Log() << Verbose(0) << "Fragment " << (*ListRunner)->name << ": " << *Runner << "<= " << distance << "=>" << *Walker << ":" << endl;
+            distance = (*runner)->x.distance((*iter)->x);
+            //Log() << Verbose(0) << "Fragment " << (*ListRunner)->name << ": " << *(*runner) << "<= " << distance << "=>" << *(*iter) << ":" << endl;
             for (int k = 0; k < a; k++) {
               for (int j = 0; j < b; j++) {
@@ -531,5 +527,5 @@
     FragmentNumber = FixedDigitNumber(ListOfMolecules.size(), (*ListRunner)->IndexNr);
     line += FragmentNumber;
-    delete (FragmentNumber);
+    delete[] (FragmentNumber);
     line += HCORRECTIONSUFFIX;
     output.open(line.c_str());
@@ -542,4 +538,8 @@
     output.close();
   }
+  for (int i = a; i--;)
+    delete[](correction[i]);
+  delete[](correction);
+
   line = path;
   line.append("/");
@@ -556,9 +556,9 @@
   for (int k = 0; k < 3; k++) {
     for (int i = a; i--;) {
-      Free(&FitConstant[k][i]);
-    }
-    Free(&FitConstant[k]);
-  }
-  Free(&FitConstant);
+      delete[](FitConstant[k][i]);
+    }
+    delete[](FitConstant[k]);
+  }
+  delete[](FitConstant);
   DoLog(0) && (Log() << Verbose(0) << "done." << endl);
   return true;
@@ -577,5 +577,4 @@
   ofstream ForcesFile;
   stringstream line;
-  atom *Walker = NULL;
   periodentafel *periode=World::getInstance().getPeriode();
 
@@ -590,12 +589,10 @@
       periodentafel::const_iterator elemIter;
       for(elemIter=periode->begin();elemIter!=periode->end();++elemIter){
-          if ((*ListRunner)->ElementsInMolecule[(*elemIter).first]) { // if this element got atoms
-          Walker = (*ListRunner)->start;
-          while (Walker->next != (*ListRunner)->end) { // go through every atom of this element
-            Walker = Walker->next;
-            if (Walker->type->getNumber() == (*elemIter).first) {
-              if ((Walker->GetTrueFather() != NULL) && (Walker->GetTrueFather() != Walker)) {// if there is a rea
+        if ((*ListRunner)->ElementsInMolecule[(*elemIter).first]) { // if this element got atoms
+          for(molecule::iterator atomIter = (*ListRunner)->begin(); atomIter !=(*ListRunner)->end();++atomIter){
+            if ((*atomIter)->type->getNumber() == (*elemIter).first) {
+              if (((*atomIter)->GetTrueFather() != NULL) && ((*atomIter)->GetTrueFather() != (*atomIter))) {// if there is a rea
                 //Log() << Verbose(0) << "Walker is " << *Walker << " with true father " << *( Walker->GetTrueFather()) << ", it
-                ForcesFile << SortIndex[Walker->GetTrueFather()->nr] << "\t";
+                ForcesFile << SortIndex[(*atomIter)->GetTrueFather()->nr] << "\t";
               } else
                 // otherwise a -1 to indicate an added saturation hydrogen
@@ -622,6 +619,4 @@
  * \param *configuration standard configuration to attach atoms in fragment molecule to.
  * \param *SortIndex Index to map from the BFS labeling to the sequence how of Ion_Type in the config
- * \param DoPeriodic true - call ScanForPeriodicCorrection, false - don't
- * \param DoCentering true - call molecule::CenterEdge(), false - don't
  * \return true - success (each file was written), false - something went wrong.
  */
@@ -633,5 +628,4 @@
   bool result = true;
   bool intermediateResult = true;
-  atom *Walker = NULL;
   Vector BoxDimension;
   char *FragmentNumber = NULL;
@@ -674,8 +668,6 @@
     // list atoms in fragment for debugging
     DoLog(2) && (Log() << Verbose(2) << "Contained atoms: ");
-    Walker = (*ListRunner)->start;
-    while (Walker->next != (*ListRunner)->end) {
-      Walker = Walker->next;
-      DoLog(0) && (Log() << Verbose(0) << Walker->Name << " ");
+    for (molecule::const_iterator iter = (*ListRunner)->begin(); iter != (*ListRunner)->end(); ++iter) {
+      DoLog(0) && (Log() << Verbose(0) << (*iter)->getName() << " ");
     }
     DoLog(0) && (Log() << Verbose(0) << endl);
@@ -724,5 +716,5 @@
     //outputFragment.close();
     //outputFragment.clear();
-    Free(&FragmentNumber);
+    delete[](FragmentNumber);
   }
   DoLog(0) && (Log() << Verbose(0) << " done." << endl);
@@ -756,31 +748,17 @@
 void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration)
 {
+  // 0a. remove all present molecules
+  vector<molecule *> allmolecules = World::getInstance().getAllMolecules();
+  for (vector<molecule *>::iterator MolRunner = allmolecules.begin(); MolRunner != allmolecules.end(); ++MolRunner) {
+    erase(*MolRunner);
+    World::getInstance().destroyMolecule(*MolRunner);
+  }
+  // 0b. remove all bonds and construct a molecule with all atoms
   molecule *mol = World::getInstance().createMolecule();
-  atom *Walker = NULL;
-  atom *Advancer = NULL;
-  bond *Binder = NULL;
-  bond *Stepper = NULL;
-  // 0. gather all atoms into single molecule
-  for (MoleculeList::iterator MolRunner = ListOfMolecules.begin(); !ListOfMolecules.empty(); MolRunner = ListOfMolecules.begin()) {
-    // shift all atoms to new molecule
-    Advancer = (*MolRunner)->start->next;
-    while (Advancer != (*MolRunner)->end) {
-      Walker = Advancer;
-      Advancer = Advancer->next;
-      DoLog(3) && (Log() << Verbose(3) << "Re-linking " << *Walker << "..." << endl);
-      unlink(Walker);
-      Walker->father = Walker;
-      mol->AddAtom(Walker);    // counting starts at 1
-    }
-    // remove all bonds
-    Stepper = (*MolRunner)->first->next;
-    while (Stepper != (*MolRunner)->last) {
-      Binder = Stepper;
-      Stepper = Stepper->next;
-      delete(Binder);
-    }
-    // remove the molecule
-    World::getInstance().destroyMolecule(*MolRunner);
-    ListOfMolecules.erase(MolRunner);
+  vector <atom *> allatoms = World::getInstance().getAllAtoms();
+  for(vector<atom *>::iterator AtomRunner = allatoms.begin(); AtomRunner != allatoms.end(); ++AtomRunner) {
+    for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); !(*AtomRunner)->ListOfBonds.empty(); BondRunner = (*AtomRunner)->ListOfBonds.begin())
+      delete(*BondRunner);
+    mol->AddAtom(*AtomRunner);
   }
 
@@ -810,6 +788,8 @@
   const int MolCount = Subgraphs->next->Count();
   char number[MAXSTRINGSIZE];
-  molecule **molecules = Malloc<molecule *>(MolCount, "config::Load() - **molecules");
+  molecule **molecules = new molecule *[MolCount];
+  MoleculeLeafClass *MolecularWalker = Subgraphs;
   for (int i=0;i<MolCount;i++) {
+    MolecularWalker = MolecularWalker->next;
     molecules[i] = World::getInstance().createMolecule();
     molecules[i]->ActiveFlag = true;
@@ -820,4 +800,7 @@
     }
     DoLog(1) && (Log() << Verbose(1) << "MolName is " << molecules[i]->name << endl);
+    for (molecule::iterator iter = MolecularWalker->Leaf->begin(); iter != MolecularWalker->Leaf->end(); ++iter) {
+      DoLog(1) && (Log() << Verbose(1) << **iter << endl);
+    }
     insert(molecules[i]);
   }
@@ -825,43 +808,20 @@
   // 4b. create and fill map of which atom is associated to which connected molecule (note, counting starts at 1)
   int FragmentCounter = 0;
-  int *MolMap = Calloc<int>(mol->AtomCount, "config::Load() - *MolMap");
-  MoleculeLeafClass *MolecularWalker = Subgraphs;
-  Walker = NULL;
+  map<int, atom *> AtomToFragmentMap;
+  MolecularWalker = Subgraphs;
   while (MolecularWalker->next != NULL) {
     MolecularWalker = MolecularWalker->next;
-    Walker = MolecularWalker->Leaf->start;
-    while (Walker->next != MolecularWalker->Leaf->end) {
-      Walker = Walker->next;
-      MolMap[Walker->GetTrueFather()->nr] = FragmentCounter+1;
+    for (molecule::iterator iter = MolecularWalker->Leaf->begin(); !MolecularWalker->Leaf->empty(); iter = MolecularWalker->Leaf->begin()) {
+      atom * Walker = *iter;
+      DoLog(1) && (Log() << Verbose(1) << "Re-linking " << Walker << "..." << endl);
+      MolecularWalker->Leaf->erase(iter);
+      molecules[FragmentCounter]->AddAtom(Walker);    // counting starts at 1
     }
     FragmentCounter++;
   }
-
-  // 4c. relocate atoms to new molecules and remove from Leafs
-  Walker = NULL;
-  while (mol->start->next != mol->end) {
-    Walker = mol->start->next;
-    if ((Walker->nr <0) || (Walker->nr >= mol->AtomCount)) {
-      DoeLog(0) && (eLog()<< Verbose(0) << "Index of atom " << *Walker << " is invalid!" << endl);
-      performCriticalExit();
-    }
-    FragmentCounter = MolMap[Walker->nr];
-    if (FragmentCounter != 0) {
-      DoLog(3) && (Log() << Verbose(3) << "Re-linking " << *Walker << "..." << endl);
-      unlink(Walker);
-      molecules[FragmentCounter-1]->AddAtom(Walker);    // counting starts at 1
-    } else {
-      DoeLog(0) && (eLog()<< Verbose(0) << "Atom " << *Walker << " not associated to molecule!" << endl);
-      performCriticalExit();
-    }
-  }
+  World::getInstance().destroyMolecule(mol);
+
   // 4d. we don't need to redo bonds, as they are connected subgraphs and still maintain their ListOfBonds, but we have to remove them from first..last list
-  Binder = mol->first;
-  while (mol->first->next != mol->last) {
-    Binder = mol->first->next;
-    Walker = Binder->leftatom;
-    unlink(Binder);
-    link(Binder,molecules[MolMap[Walker->nr]-1]->last);   // counting starts at 1
-  }
+  // TODO: check whether this is really not needed anymore
   // 4e. free Leafs
   MolecularWalker = Subgraphs;
@@ -871,6 +831,5 @@
   }
   delete(MolecularWalker);
-  Free(&MolMap);
-  Free(&molecules);
+  delete[](molecules);
   DoLog(1) && (Log() << Verbose(1) << "I scanned " << FragmentCounter << " molecules." << endl);
 };
@@ -882,12 +841,7 @@
 int MoleculeListClass::CountAllAtoms() const
 {
-  atom *Walker = NULL;
   int AtomNo = 0;
   for (MoleculeList::const_iterator MolWalker = ListOfMolecules.begin(); MolWalker != ListOfMolecules.end(); MolWalker++) {
-    Walker = (*MolWalker)->start;
-    while (Walker->next != (*MolWalker)->end) {
-      Walker = Walker->next;
-      AtomNo++;
-    }
+    AtomNo += (*MolWalker)->size();
   }
   return AtomNo;
@@ -1064,5 +1018,4 @@
 bool MoleculeLeafClass::FillBondStructureFromReference(const molecule * const reference, int &FragmentCounter, atom ***&ListOfLocalAtoms, bool FreeList)
 {
-  atom *Walker = NULL;
   atom *OtherWalker = NULL;
   atom *Father = NULL;
@@ -1072,5 +1025,5 @@
   DoLog(1) && (Log() << Verbose(1) << "Begin of FillBondStructureFromReference." << endl);
   // fill ListOfLocalAtoms if NULL was given
-  if (!FillListOfLocalAtoms(ListOfLocalAtoms, FragmentCounter, reference->AtomCount, FreeList)) {
+  if (!FillListOfLocalAtoms(ListOfLocalAtoms, FragmentCounter, reference->getAtomCount(), FreeList)) {
     DoLog(1) && (Log() << Verbose(1) << "Filling of ListOfLocalAtoms failed." << endl);
     return false;
@@ -1080,24 +1033,19 @@
     DoLog(1) && (Log() << Verbose(1) << "Creating adjacency list for subgraph " << Leaf << "." << endl);
     // remove every bond from the list
-    bond *Binder = NULL;
-    while (Leaf->last->previous != Leaf->first) {
-      Binder = Leaf->last->previous;
-      Binder->leftatom->UnregisterBond(Binder);
-      Binder->rightatom->UnregisterBond(Binder);
-      removewithoutcheck(Binder);
-    }
-
-    Walker = Leaf->start;
-    while (Walker->next != Leaf->end) {
-      Walker = Walker->next;
-      Father = Walker->GetTrueFather();
+    for(molecule::iterator AtomRunner = Leaf->begin(); AtomRunner != Leaf->end(); ++AtomRunner)
+      for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); !(*AtomRunner)->ListOfBonds.empty(); BondRunner = (*AtomRunner)->ListOfBonds.begin())
+        if ((*BondRunner)->leftatom == *AtomRunner)
+          delete((*BondRunner));
+
+    for(molecule::const_iterator iter = Leaf->begin(); iter != Leaf->end(); ++iter) {
+      Father = (*iter)->GetTrueFather();
       AtomNo = Father->nr; // global id of the current walker
       for (BondList::const_iterator Runner = Father->ListOfBonds.begin(); Runner != Father->ListOfBonds.end(); (++Runner)) {
-        OtherWalker = ListOfLocalAtoms[FragmentCounter][(*Runner)->GetOtherAtom(Walker->GetTrueFather())->nr]; // local copy of current bond partner of walker
+        OtherWalker = ListOfLocalAtoms[FragmentCounter][(*Runner)->GetOtherAtom((*iter)->GetTrueFather())->nr]; // local copy of current bond partner of walker
         if (OtherWalker != NULL) {
-          if (OtherWalker->nr > Walker->nr)
-            Leaf->AddBond(Walker, OtherWalker, (*Runner)->BondDegree);
+          if (OtherWalker->nr > (*iter)->nr)
+            Leaf->AddBond((*iter), OtherWalker, (*Runner)->BondDegree);
         } else {
-          DoLog(1) && (Log() << Verbose(1) << "OtherWalker = ListOfLocalAtoms[" << FragmentCounter << "][" << (*Runner)->GetOtherAtom(Walker->GetTrueFather())->nr << "] is NULL!" << endl);
+          DoLog(1) && (Log() << Verbose(1) << "OtherWalker = ListOfLocalAtoms[" << FragmentCounter << "][" << (*Runner)->GetOtherAtom((*iter)->GetTrueFather())->nr << "] is NULL!" << endl);
           status = false;
         }
@@ -1108,7 +1056,7 @@
   if ((FreeList) && (ListOfLocalAtoms != NULL)) {
     // free the index lookup list
-    Free(&ListOfLocalAtoms[FragmentCounter]);
+    delete[](ListOfLocalAtoms[FragmentCounter]);
     if (FragmentCounter == 0) // first fragments frees the initial pointer to list
-      Free(&ListOfLocalAtoms);
+      delete[](ListOfLocalAtoms);
   }
   DoLog(1) && (Log() << Verbose(1) << "End of FillBondStructureFromReference." << endl);
@@ -1126,5 +1074,5 @@
 bool MoleculeLeafClass::FillRootStackForSubgraphs(KeyStack *&RootStack, bool *AtomMask, int &FragmentCounter)
 {
-  atom *Walker = NULL, *Father = NULL;
+  atom *Father = NULL;
 
   if (RootStack != NULL) {
@@ -1132,13 +1080,11 @@
     if (&(RootStack[FragmentCounter]) != NULL) {
       RootStack[FragmentCounter].clear();
-      Walker = Leaf->start;
-      while (Walker->next != Leaf->end) { // go through all (non-hydrogen) atoms
-        Walker = Walker->next;
-        Father = Walker->GetTrueFather();
+      for(molecule::const_iterator iter = Leaf->begin(); iter != Leaf->end(); ++iter) {
+        Father = (*iter)->GetTrueFather();
         if (AtomMask[Father->nr]) // apply mask
 #ifdef ADDHYDROGEN
-          if (Walker->type->Z != 1) // skip hydrogen
+          if ((*iter)->type->Z != 1) // skip hydrogen
 #endif
-          RootStack[FragmentCounter].push_front(Walker->nr);
+          RootStack[FragmentCounter].push_front((*iter)->nr);
       }
       if (next != NULL)
@@ -1171,13 +1117,16 @@
     // allocate and set each field to NULL
     const int Counter = Count();
-    ListOfLocalAtoms = Calloc<atom**>(Counter, "MoleculeLeafClass::FillListOfLocalAtoms - ***ListOfLocalAtoms");
+    ASSERT(FragmentCounter < Counter, "FillListOfLocalAtoms: FragmenCounter greater than present fragments.");
+    ListOfLocalAtoms = new atom**[Counter];
     if (ListOfLocalAtoms == NULL) {
       FreeList = FreeList && false;
       status = false;
     }
+    for (int i=0;i<Counter;i++)
+      ListOfLocalAtoms[i] = NULL;
   }
 
   if ((ListOfLocalAtoms != NULL) && (ListOfLocalAtoms[FragmentCounter] == NULL)) { // allocate and fill list of this fragment/subgraph
-    status = status && CreateFatherLookupTable(Leaf->start, Leaf->end, ListOfLocalAtoms[FragmentCounter], GlobalAtomCount);
+    status = status && Leaf->CreateFatherLookupTable(ListOfLocalAtoms[FragmentCounter], GlobalAtomCount);
     FreeList = FreeList && true;
   }
@@ -1203,5 +1152,5 @@
   DoLog(1) && (Log() << Verbose(1) << "Begin of AssignKeySetsToFragment." << endl);
   // fill ListOfLocalAtoms if NULL was given
-  if (!FillListOfLocalAtoms(ListOfLocalAtoms, FragmentCounter, reference->AtomCount, FreeList)) {
+  if (!FillListOfLocalAtoms(ListOfLocalAtoms, FragmentCounter, reference->getAtomCount(), FreeList)) {
     DoLog(1) && (Log() << Verbose(1) << "Filling of ListOfLocalAtoms failed." << endl);
     return false;
@@ -1211,5 +1160,7 @@
   if (FragmentList == NULL) {
     KeySetCounter = Count();
-    FragmentList = Calloc<Graph*>(KeySetCounter, "MoleculeLeafClass::AssignKeySetsToFragment - **FragmentList");
+    FragmentList = new Graph*[KeySetCounter];
+    for (int i=0;i<KeySetCounter;i++)
+      FragmentList[i] = NULL;
     KeySetCounter = 0;
   }
@@ -1245,7 +1196,7 @@
   if ((FreeList) && (ListOfLocalAtoms != NULL)) {
     // free the index lookup list
-    Free(&ListOfLocalAtoms[FragmentCounter]);
+    delete[](ListOfLocalAtoms[FragmentCounter]);
     if (FragmentCounter == 0) // first fragments frees the initial pointer to list
-      Free(&ListOfLocalAtoms);
+      delete[](ListOfLocalAtoms);
   }
   DoLog(1) && (Log() << Verbose(1) << "End of AssignKeySetsToFragment." << endl);
Index: src/parser.cpp
===================================================================
--- src/parser.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/parser.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -32,5 +32,5 @@
   if (input == NULL) {
     if (!test)
-      DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << filename << ", is the directory correct?" << endl);
+      DoLog(0) && (Log() << Verbose(0) << endl << "FilePresent: Unable to open " << filename << ", is the directory correct?" << endl);
     return false;
   }
@@ -59,8 +59,8 @@
 MatrixContainer::MatrixContainer() {
   Indices = NULL;
-  Header = Malloc<char*>(1, "MatrixContainer::MatrixContainer: **Header");
-  Matrix = Malloc<double**>(1, "MatrixContainer::MatrixContainer: ***Matrix"); // one more each for the total molecule
-  RowCounter = Malloc<int>(1, "MatrixContainer::MatrixContainer: *RowCounter");
-  ColumnCounter = Malloc<int>(1, "MatrixContainer::MatrixContainer: *ColumnCounter");
+  Header = new char*[1];
+  Matrix = new double**[1]; // one more each for the total molecule
+  RowCounter = new int[1];
+  ColumnCounter = new int[1];
   Header[0] = NULL;
   Matrix[0] = NULL;
@@ -77,27 +77,27 @@
       if ((ColumnCounter != NULL) && (RowCounter != NULL)) {
           for(int j=RowCounter[i]+1;j--;)
-            Free(&Matrix[i][j]);
-        Free(&Matrix[i]);
+            delete[](Matrix[i][j]);
+          delete[](Matrix[i]);
       }
     }
     if ((ColumnCounter != NULL) && (RowCounter != NULL) && (Matrix[MatrixCounter] != NULL))
       for(int j=RowCounter[MatrixCounter]+1;j--;)
-        Free(&Matrix[MatrixCounter][j]);
+        delete[](Matrix[MatrixCounter][j]);
     if (MatrixCounter != 0)
-      Free(&Matrix[MatrixCounter]);
-    Free(&Matrix);
+      delete[](Matrix[MatrixCounter]);
+    delete[](Matrix);
   }
   if (Indices != NULL)
     for(int i=MatrixCounter+1;i--;) {
-      Free(&Indices[i]);
-    }
-  Free(&Indices);
+      delete[](Indices[i]);
+    }
+  delete[](Indices);
   
   if (Header != NULL)
     for(int i=MatrixCounter+1;i--;)
-      Free(&Header[i]);
-  Free(&Header);
-  Free(&RowCounter);
-  Free(&ColumnCounter);
+      delete[](Header[i]);
+  delete[](Header);
+  delete[](RowCounter);
+  delete[](ColumnCounter);
 };
 
@@ -112,7 +112,7 @@
   if (Matrix == NULL) {
     DoLog(0) && (Log() << Verbose(0) << " with trivial mapping." << endl);
-    Indices = Malloc<int*>(MatrixCounter + 1, "MatrixContainer::InitialiseIndices: **Indices");
+    Indices = new int*[MatrixCounter + 1];
     for(int i=MatrixCounter+1;i--;) {
-      Indices[i] = Malloc<int>(RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]");
+      Indices[i] = new int[RowCounter[i]];
       for(int j=RowCounter[i];j--;)
         Indices[i][j] = j;
@@ -122,9 +122,9 @@
     if (MatrixCounter != Matrix->MatrixCounter)
       return false;
-    Indices = Malloc<int*>(MatrixCounter + 1, "MatrixContainer::InitialiseIndices: **Indices");
+    Indices = new int*[MatrixCounter + 1];
     for(int i=MatrixCounter+1;i--;) {
       if (RowCounter[i] != Matrix->RowCounter[i])
         return false;
-      Indices[i] = Malloc<int>(Matrix->RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]");
+      Indices[i] = new int[Matrix->RowCounter[i]];
       for(int j=Matrix->RowCounter[i];j--;) {
         Indices[i][j] = Matrix->Indices[i][j];
@@ -160,5 +160,5 @@
   //Log() << Verbose(1) << "Opening " << name << " ... "  << input << endl;
   if (input == NULL) {
-    DoeLog(1) && (eLog()<< Verbose(1) << endl << "Unable to open " << name << ", is the directory correct?" << endl);
+    DoeLog(1) && (eLog()<< Verbose(1) << endl << "MatrixContainer::ParseMatrix: Unable to open " << name << ", is the directory correct?" << endl);
     //performCriticalExit();
     return false;
@@ -166,5 +166,5 @@
 
   // parse header
-  Header[MatrixNr] = Malloc<char>(1024, "MatrixContainer::ParseMatrix: *Header[]");
+  Header[MatrixNr] = new char[1024];
   for (int m=skiplines+1;m--;)
     input.getline(Header[MatrixNr], 1023);
@@ -205,5 +205,5 @@
   // allocate matrix if it's not zero dimension in one direction
   if ((ColumnCounter[MatrixNr] > 0) && (RowCounter[MatrixNr] > -1)) {
-    Matrix[MatrixNr] = Malloc<double*>(RowCounter[MatrixNr] + 1, "MatrixContainer::ParseMatrix: **Matrix[]");
+    Matrix[MatrixNr] = new double*[RowCounter[MatrixNr] + 1];
   
     // parse in each entry for this matrix
@@ -217,5 +217,5 @@
     strncpy(Header[MatrixNr], line.str().c_str(), 1023);  
     for(int j=0;j<RowCounter[MatrixNr];j++) {
-      Matrix[MatrixNr][j] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[][]");
+      Matrix[MatrixNr][j] = new double[ColumnCounter[MatrixNr]];
       input.getline(filename, 1023);
       stringstream lines(filename);
@@ -227,5 +227,5 @@
         //Log() << Verbose(1) << " " << setprecision(2) << Matrix[MatrixNr][j][k] << endl;
       }
-      Matrix[MatrixNr][ RowCounter[MatrixNr] ] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[RowCounter[MatrixNr]][]");
+      Matrix[MatrixNr][ RowCounter[MatrixNr] ] = new double[ColumnCounter[MatrixNr]];
       for(int j=ColumnCounter[MatrixNr];j--;)
         Matrix[MatrixNr][ RowCounter[MatrixNr] ][j] = 0.;
@@ -269,5 +269,5 @@
   input.open(file.str().c_str(), ios::in);
   if (input == NULL) {
-    DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << file.str() << ", is the directory correct?" << endl);
+    DoLog(0) && (Log() << Verbose(0) << endl << "MatrixContainer::ParseFragmentMatrix: Unable to open " << file.str() << ", is the directory correct?" << endl);
     return false;
   }
@@ -281,8 +281,12 @@
 
   DoLog(0) && (Log() << Verbose(0) << "Parsing through each fragment and retrieving " << prefix << suffix << "." << endl);
-  Header = ReAlloc<char*>(Header, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: **Header"); // one more each for the total molecule
-  Matrix = ReAlloc<double**>(Matrix, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: ***Matrix"); // one more each for the total molecule
-  RowCounter = ReAlloc<int>(RowCounter, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: *RowCounter");
-  ColumnCounter = ReAlloc<int>(ColumnCounter, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: *ColumnCounter");
+  delete[](Header);
+  delete[](Matrix);
+  delete[](RowCounter);
+  delete[](ColumnCounter);
+  Header = new char*[MatrixCounter + 1]; // one more each for the total molecule
+  Matrix = new double**[MatrixCounter + 1]; // one more each for the total molecule
+  RowCounter = new int[MatrixCounter + 1];
+  ColumnCounter = new int[MatrixCounter + 1];
   for(int i=MatrixCounter+1;i--;) {
     Matrix[i] = NULL;
@@ -298,5 +302,5 @@
     if (!ParseMatrix(file.str().c_str(), skiplines, skipcolumns, i))
       return false;
-    Free(&FragmentNumber);
+    delete[](FragmentNumber);
   }
   return true;
@@ -313,16 +317,16 @@
 {
   MatrixCounter = MCounter;
-  Header = Malloc<char*>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *Header");
-  Matrix = Malloc<double**>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: ***Matrix"); // one more each for the total molecule
-  RowCounter = Malloc<int>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *RowCounter");
-  ColumnCounter = Malloc<int>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *ColumnCounter");
+  Header = new char*[MatrixCounter + 1];
+  Matrix = new double**[MatrixCounter + 1]; // one more each for the total molecule
+  RowCounter = new int[MatrixCounter + 1];
+  ColumnCounter = new int[MatrixCounter + 1];
   for(int i=MatrixCounter+1;i--;) {
-    Header[i] = Malloc<char>(1024, "MatrixContainer::AllocateMatrix: *Header[i]");
+    Header[i] = new char[1024];
     strncpy(Header[i], GivenHeader[i], 1023);
     RowCounter[i] = RCounter[i];
     ColumnCounter[i] = CCounter[i];
-    Matrix[i] = Malloc<double*>(RowCounter[i] + 1, "MatrixContainer::AllocateMatrix: **Matrix[]");
+    Matrix[i] = new double*[RowCounter[i] + 1];
     for(int j=RowCounter[i]+1;j--;) {
-      Matrix[i][j] = Malloc<double>(ColumnCounter[i], "MatrixContainer::AllocateMatrix: *Matrix[][]");
+      Matrix[i][j] = new double[ColumnCounter[i]];
       for(int k=ColumnCounter[i];k--;)
         Matrix[i][j][k] = 0.;
@@ -474,8 +478,8 @@
     FragmentNumber = FixedDigitNumber(MatrixCounter, i);
     line << name << FRAGMENTPREFIX << FragmentNumber << "/" << prefix;
-    Free(&FragmentNumber);
+    delete[](FragmentNumber);
     output.open(line.str().c_str(), ios::out);
     if (output == NULL) {
-      DoeLog(0) && (eLog()<< Verbose(0) << "Unable to open output energy file " << line.str() << "!" << endl);
+      DoeLog(0) && (eLog()<< Verbose(0) << "MatrixContainer::WriteTotalFragments: Unable to open output energy file " << line.str() << "!" << endl);
       performCriticalExit();
       return false;
@@ -507,5 +511,5 @@
   output.open(line.str().c_str(), ios::out);
   if (output == NULL) {
-    DoeLog(0) && (eLog()<< Verbose(0) << "Unable to open output matrix file " << line.str() << "!" << endl);
+    DoeLog(0) && (eLog()<< Verbose(0) << "MatrixContainer::WriteLastMatrix: Unable to open output matrix file " << line.str() << "!" << endl);
     performCriticalExit();
     return false;
@@ -530,7 +534,7 @@
 {
   DoLog(0) && (Log() << Verbose(0) << "Parsing energy indices." << endl);
-  Indices = Malloc<int*>(MatrixCounter + 1, "EnergyMatrix::ParseIndices: **Indices");
+  Indices = new int*[MatrixCounter + 1];
   for(int i=MatrixCounter+1;i--;) {
-    Indices[i] = Malloc<int>(RowCounter[i], "EnergyMatrix::ParseIndices: *Indices[]");
+    Indices[i] = new int[RowCounter[i]];
     for(int j=RowCounter[i];j--;)
       Indices[i][j] = j;
@@ -589,7 +593,7 @@
     // allocate last plus one matrix
     DoLog(0) && (Log() << Verbose(0) << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl);
-    Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]");
+    Matrix[MatrixCounter] = new double*[RowCounter[MatrixCounter] + 1];
     for(int j=0;j<=RowCounter[MatrixCounter];j++)
-      Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");
+      Matrix[MatrixCounter][j] = new double[ColumnCounter[MatrixCounter]];
     
     // try independently to parse global energysuffix file if present
@@ -616,10 +620,10 @@
 
   DoLog(0) && (Log() << Verbose(0) << "Parsing force indices for " << MatrixCounter << " matrices." << endl);
-  Indices = Malloc<int*>(MatrixCounter + 1, "ForceMatrix::ParseIndices: **Indices");
+  Indices = new int*[MatrixCounter + 1];
   line << name << FRAGMENTPREFIX << FORCESFILE;
   input.open(line.str().c_str(), ios::in);
   //Log() << Verbose(0) << "Opening " << line.str() << " ... "  << input << endl;
   if (input == NULL) {
-    DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << line.str() << ", is the directory correct?" << endl);
+    DoLog(0) && (Log() << Verbose(0) << endl << "ForceMatrix::ParseIndices: Unable to open " << line.str() << ", is the directory correct?" << endl);
     return false;
   }
@@ -629,8 +633,8 @@
     line.str(filename);
     // parse the values
-    Indices[i] = Malloc<int>(RowCounter[i], "ForceMatrix::ParseIndices: *Indices[]");
+    Indices[i] = new int[RowCounter[i]];
     FragmentNumber = FixedDigitNumber(MatrixCounter, i);
     //Log() << Verbose(0) << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:";
-    Free(&FragmentNumber);
+    delete[](FragmentNumber);
     for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) {
       line >> Indices[i][j];
@@ -639,5 +643,5 @@
     //Log() << Verbose(0) << endl;
   }
-  Indices[MatrixCounter] = Malloc<int>(RowCounter[MatrixCounter], "ForceMatrix::ParseIndices: *Indices[]");
+  Indices[MatrixCounter] = new int[RowCounter[MatrixCounter]];
   for(int j=RowCounter[MatrixCounter];j--;) {
     Indices[MatrixCounter][j] = j;
@@ -700,5 +704,5 @@
     input.open(file.str().c_str(), ios::in);
     if (input == NULL) {
-      DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << file.str() << ", is the directory correct?" << endl);
+      DoLog(0) && (Log() << Verbose(0) << endl << "ForceMatrix::ParseFragmentMatrix: Unable to open " << file.str() << ", is the directory correct?" << endl);
       return false;
     }
@@ -725,7 +729,7 @@
     // allocate last plus one matrix
     DoLog(0) && (Log() << Verbose(0) << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl);
-    Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]");
+    Matrix[MatrixCounter] = new double*[RowCounter[MatrixCounter] + 1];
     for(int j=0;j<=RowCounter[MatrixCounter];j++)
-      Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");
+      Matrix[MatrixCounter][j] = new double[ColumnCounter[MatrixCounter]];
 
     // try independently to parse global forcesuffix file if present
@@ -754,10 +758,10 @@
   
   DoLog(0) && (Log() << Verbose(0) << "Parsing hessian indices for " << MatrixCounter << " matrices." << endl);
-  Indices = Malloc<int*>(MatrixCounter + 1, "HessianMatrix::ParseIndices: **Indices");
+  Indices = new int*[MatrixCounter + 1];
   line << name << FRAGMENTPREFIX << FORCESFILE;
   input.open(line.str().c_str(), ios::in);
   //Log() << Verbose(0) << "Opening " << line.str() << " ... "  << input << endl;
   if (input == NULL) {
-    DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << line.str() << ", is the directory correct?" << endl);
+    DoLog(0) && (Log() << Verbose(0) << endl << "HessianMatrix::ParseIndices: Unable to open " << line.str() << ", is the directory correct?" << endl);
     return false;
   }
@@ -767,8 +771,8 @@
     line.str(filename);
     // parse the values
-    Indices[i] = Malloc<int>(RowCounter[i], "HessianMatrix::ParseIndices: *Indices[]");
+    Indices[i] = new int[RowCounter[i]];
     FragmentNumber = FixedDigitNumber(MatrixCounter, i);
     //Log() << Verbose(0) << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:";
-    Free(&FragmentNumber);
+    delete[](FragmentNumber);
     for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) {
       line >> Indices[i][j];
@@ -777,5 +781,5 @@
     //Log() << Verbose(0) << endl;
   }
-  Indices[MatrixCounter] = Malloc<int>(RowCounter[MatrixCounter], "HessianMatrix::ParseIndices: *Indices[]");
+  Indices[MatrixCounter] = new int[RowCounter[MatrixCounter]];
   for(int j=RowCounter[MatrixCounter];j--;) {
     Indices[MatrixCounter][j] = j;
@@ -930,5 +934,5 @@
     input.open(file.str().c_str(), ios::in);
     if (input == NULL) {
-      DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << file.str() << ", is the directory correct?" << endl);
+      DoLog(0) && (Log() << Verbose(0) << endl << "HessianMatrix::ParseFragmentMatrix: Unable to open " << file.str() << ", is the directory correct?" << endl);
       return false;
     }
@@ -953,7 +957,7 @@
     // allocate last plus one matrix
     DoLog(0) && (Log() << Verbose(0) << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl);
-    Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]");
+    Matrix[MatrixCounter] = new double*[RowCounter[MatrixCounter] + 1];
     for(int j=0;j<=RowCounter[MatrixCounter];j++)
-      Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");
+      Matrix[MatrixCounter][j] = new double[ColumnCounter[MatrixCounter]];
 
     // try independently to parse global forcesuffix file if present
@@ -985,11 +989,11 @@
 KeySetsContainer::~KeySetsContainer() {
   for(int i=FragmentCounter;i--;)
-    Free(&KeySets[i]);
+    delete[](KeySets[i]);
   for(int i=Order;i--;)
-    Free(&OrderSet[i]);
-  Free(&KeySets);
-  Free(&OrderSet);
-  Free(&AtomCounter);
-  Free(&FragmentsPerOrder);
+    delete[](OrderSet[i]);
+  delete[](KeySets);
+  delete[](OrderSet);
+  delete[](AtomCounter);
+  delete[](FragmentsPerOrder);
 };
 
@@ -1008,5 +1012,5 @@
   FragmentCounter = FCounter;
   DoLog(0) && (Log() << Verbose(0) << "Parsing key sets." << endl);
-  KeySets = Malloc<int*>(FragmentCounter, "KeySetsContainer::ParseKeySets: **KeySets");
+  KeySets = new int*[FragmentCounter];
   for(int i=FragmentCounter;i--;)
     KeySets[i] = NULL;
@@ -1014,19 +1018,19 @@
   input.open(file.str().c_str(), ios::in);
   if (input == NULL) {
-    DoLog(0) && (Log() << Verbose(0) << endl << "Unable to open " << file.str() << ", is the directory correct?" << endl);
+    DoLog(0) && (Log() << Verbose(0) << endl << "KeySetsContainer::ParseKeySets: Unable to open " << file.str() << ", is the directory correct?" << endl);
     return false;
   }
 
-  AtomCounter = Malloc<int>(FragmentCounter, "KeySetsContainer::ParseKeySets: *RowCounter");
+  AtomCounter = new int[FragmentCounter];
   for(int i=0;(i<FragmentCounter) && (!input.eof());i++) {
     stringstream line;
     AtomCounter[i] = ACounter[i];
     // parse the values
-    KeySets[i] = Malloc<int>(AtomCounter[i], "KeySetsContainer::ParseKeySets: *KeySets[]");
+    KeySets[i] = new int[AtomCounter[i]];
     for(int j=AtomCounter[i];j--;)
       KeySets[i][j] = -1;
     FragmentNumber = FixedDigitNumber(FragmentCounter, i);
     //Log() << Verbose(0) << FRAGMENTPREFIX << FragmentNumber << "[" << AtomCounter[i] << "]:";
-    Free(&FragmentNumber);
+    delete[](FragmentNumber);
     input.getline(filename, 1023);
     line.str(filename);
@@ -1062,5 +1066,5 @@
 
   // scan through all to determine fragments per order
-  FragmentsPerOrder = Malloc<int>(Order, "KeySetsContainer::ParseManyBodyTerms: *FragmentsPerOrder");
+  FragmentsPerOrder = new int[Order];
   for(int i=Order;i--;)
     FragmentsPerOrder[i] = 0;
@@ -1076,7 +1080,7 @@
 
   // scan through all to gather indices to each order set
-  OrderSet = Malloc<int*>(Order, "KeySetsContainer::ParseManyBodyTerms: **OrderSet");
+  OrderSet = new int*[Order];
   for(int i=Order;i--;)
-    OrderSet[i] = Malloc<int>(FragmentsPerOrder[i], "KeySetsContainer::ParseManyBodyTermsKeySetsContainer::ParseManyBodyTerms: *OrderSet[]");
+    OrderSet[i] = new int[FragmentsPerOrder[i]];
   for(int i=Order;i--;)
     FragmentsPerOrder[i] = 0;
Index: src/periodentafel.cpp
===================================================================
--- src/periodentafel.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/periodentafel.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -45,4 +45,5 @@
 /** destructor for class periodentafel
  * Removes every element and afterwards deletes start and end of list.
+ * TODO: Handle when elements have changed and store databases then
  */
 periodentafel::~periodentafel()
@@ -275,5 +276,7 @@
 bool periodentafel::LoadElementsDatabase(istream *input)
 {
-  if ((*input) != NULL) {
+  bool status = true;
+  int counter = 0;
+  if (!(*input).fail()) {
     (*input).getline(header1, MAXSTRINGSIZE);
     (*input).getline(header2, MAXSTRINGSIZE); // skip first two header lines
@@ -300,5 +303,4 @@
       //(*input) >> ws;
       (*input) >> ws;
-      DoLog(0) && (Log() << Verbose(0) << " " << neues->symbol);
       if (elements.count(neues->Z)) {// if element already present, remove and delete it
         element * const Elemental = FindElement(neues->Z);
@@ -308,16 +310,22 @@
       }
       //neues->Output((ofstream *)&cout);
-      if ((neues->Z > 0) && (neues->Z < MAX_ELEMENTS))
+      if ((neues->Z > 0) && (neues->Z < MAX_ELEMENTS)) {
+        DoLog(0) && (Log() << Verbose(0) << " " << neues->symbol);
         elements[neues->getNumber()] = neues;
-      else {
-        DoLog(0) && (Log() << Verbose(0) << "Could not parse element: ");
-        neues->Output((ofstream *)&cout);
+        counter++;
+      } else {
+        DoeLog(2) && (eLog() << Verbose(2) << "Detected empty line or invalid element in elements db, discarding." << endl);
+        DoLog(0) && (Log() << Verbose(0) << " <?>");
         delete(neues);
       }
     }
     DoLog(0) && (Log() << Verbose(0) << endl);
-    return true;
-  } else
-    return false;
+  } else
+    status = false;
+
+  if (counter == 0)
+    status = false;
+
+  return status;
 }
 
@@ -329,5 +337,5 @@
 {
   char dummy[MAXSTRINGSIZE];
-  if ((*input) != NULL) {
+  if (!(*input).fail()) {
     (*input).getline(dummy, MAXSTRINGSIZE);
     while (!(*input).eof()) {
@@ -352,5 +360,5 @@
 {
   char dummy[MAXSTRINGSIZE];
-  if ((*input) != NULL) {
+  if (!(*input).fail()) {
     (*input).getline(dummy, MAXSTRINGSIZE);
     while (!(*input).eof()) {
@@ -375,5 +383,5 @@
 {
   char dummy[MAXSTRINGSIZE];
-  if ((*input) != NULL) {
+  if (!(*input).fail()) {
     (*input).getline(dummy, MAXSTRINGSIZE);
     while (!(*input).eof()) {
@@ -400,5 +408,5 @@
 {
   char dummy[MAXSTRINGSIZE];
-  if ((*input) != NULL) {
+  if (!(*input).fail()) {
     (*input).getline(dummy, MAXSTRINGSIZE);
     while (!(*input).eof()) {
Index: src/stackclass.hpp
===================================================================
--- src/stackclass.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/stackclass.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -50,5 +50,7 @@
 template <typename T> StackClass<T>::StackClass(int dimension) : StackList(NULL), EntryCount(dimension), CurrentLastEntry(0), CurrentFirstEntry(0), NextFreeField(0)
 {
-  StackList = Calloc<T>(EntryCount, "StackClass::StackClass: **StackList");
+  StackList = new T[EntryCount];
+  for (int i=0;i<EntryCount;i++)
+    StackList[i] = NULL;
 };
 
@@ -57,5 +59,5 @@
 template <typename T> StackClass<T>::~StackClass()
 {
-  Free(&StackList);
+  delete[](StackList);
 };
 
Index: src/tesselation.cpp
===================================================================
--- src/tesselation.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/tesselation.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -21,4 +21,7 @@
 #include "Plane.hpp"
 #include "Exceptions/LinearDependenceException.hpp"
+#include "Helpers/Assert.hpp"
+
+#include "Helpers/Assert.hpp"
 
 class molecule;
@@ -83,5 +86,5 @@
 ostream & operator <<(ostream &ost, const BoundaryPointSet &a)
 {
-  ost << "[" << a.Nr << "|" << a.node->Name << " at " << *a.node->node << "]";
+  ost << "[" << a.Nr << "|" << a.node->getName() << " at " << *a.node->node << "]";
   return ost;
 }
@@ -321,5 +324,5 @@
 ostream & operator <<(ostream &ost, const BoundaryLineSet &a)
 {
-  ost << "[" << a.Nr << "|" << a.endpoints[0]->node->Name << " at " << *a.endpoints[0]->node->node << "," << a.endpoints[1]->node->Name << " at " << *a.endpoints[1]->node->node << "]";
+  ost << "[" << a.Nr << "|" << a.endpoints[0]->node->getName() << " at " << *a.endpoints[0]->node->node << "," << a.endpoints[1]->node->getName() << " at " << *a.endpoints[1]->node->node << "]";
   return ost;
 }
@@ -357,5 +360,5 @@
   // get ascending order of endpoints
   PointMap OrderMap;
-  for (int i = 0; i < 3; i++)
+  for (int i = 0; i < 3; i++) {
     // for all three lines
     for (int j = 0; j < 2; j++) { // for both endpoints
@@ -363,4 +366,5 @@
       // and we don't care whether insertion fails
     }
+  }
   // set endpoints
   int Counter = 0;
@@ -371,10 +375,7 @@
     Counter++;
   }
-  if (Counter < 3) {
-    DoeLog(0) && (eLog() << Verbose(0) << "We have a triangle with only two distinct endpoints!" << endl);
-    performCriticalExit();
-  }
-}
-;
+  ASSERT(Counter >= 3,"We have a triangle with only two distinct endpoints!");
+};
+
 
 /** Destructor of BoundaryTriangleSet.
@@ -682,4 +683,27 @@
 }
 
+/**
+ * gets the Plane defined by the three triangle Basepoints
+ */
+Plane BoundaryTriangleSet::getPlane() const{
+  ASSERT(endpoints[0] && endpoints[1] && endpoints[2], "Triangle not fully defined");
+
+  return Plane(*endpoints[0]->node->node,
+               *endpoints[1]->node->node,
+               *endpoints[2]->node->node);
+}
+
+Vector BoundaryTriangleSet::getEndpoint(int i) const{
+  ASSERT(i>=0 && i<3,"Index of Endpoint out of Range");
+
+  return *endpoints[i]->node->node;
+}
+
+string BoundaryTriangleSet::getEndpointName(int i) const{
+  ASSERT(i>=0 && i<3,"Index of Endpoint out of Range");
+
+  return endpoints[i]->node->getName();
+}
+
 /** output operator for BoundaryTriangleSet.
  * \param &ost output stream
@@ -688,5 +712,5 @@
 ostream &operator <<(ostream &ost, const BoundaryTriangleSet &a)
 {
-  ost << "[" << a.Nr << "|" << a.endpoints[0]->node->Name << "," << a.endpoints[1]->node->Name << "," << a.endpoints[2]->node->Name << "]";
+  ost << "[" << a.Nr << "|" << a.getEndpointName(0) << "," << a.getEndpointName(1) << "," << a.getEndpointName(2) << "]";
   //  ost << "[" << a.Nr << "|" << a.endpoints[0]->node->Name << " at " << *a.endpoints[0]->node->node << ","
   //      << a.endpoints[1]->node->Name << " at " << *a.endpoints[1]->node->node << "," << a.endpoints[2]->node->Name << " at " << *a.endpoints[2]->node->node << "]";
@@ -948,5 +972,5 @@
   ost << "[" << a.Nr << "|";
   for (PointSet::const_iterator Runner = a.endpoints.begin(); Runner != a.endpoints.end();) {
-    ost << (*Runner)->node->Name;
+    ost << (*Runner)->node->getName();
     Runner++;
     if (Runner != a.endpoints.end())
@@ -967,5 +991,4 @@
   node = NULL;
   nr = -1;
-  Name = NULL;
 }
 ;
@@ -983,5 +1006,5 @@
 ostream & operator <<(ostream &ost, const TesselPoint &a)
 {
-  ost << "[" << (a.Name) << "|" << a.Name << " at " << *a.node << "]";
+  ost << "[" << a.getName() << "|" << *a.node << "]";
   return ost;
 }
@@ -1135,5 +1158,5 @@
 ostream & operator <<(ostream &ost, const CandidateForTesselation &a)
 {
-  ost << "[" << a.BaseLine->Nr << "|" << a.BaseLine->endpoints[0]->node->Name << "," << a.BaseLine->endpoints[1]->node->Name << "] with ";
+  ost << "[" << a.BaseLine->Nr << "|" << a.BaseLine->endpoints[0]->node->getName() << "," << a.BaseLine->endpoints[1]->node->getName() << "] with ";
   if (a.pointlist.empty())
     ost << "no candidate.";
@@ -1209,16 +1232,4 @@
 ;
 
-/** PointCloud implementation of GetTerminalPoint.
- * Uses PointsOnBoundary and STL stuff.
- */
-TesselPoint * Tesselation::GetTerminalPoint() const
-{
-  Info FunctionInfo(__func__);
-  PointMap::const_iterator Runner = PointsOnBoundary.end();
-  Runner--;
-  return (Runner->second->node);
-}
-;
-
 /** PointCloud implementation of GoToNext.
  * Uses PointsOnBoundary and STL stuff.
@@ -1232,15 +1243,4 @@
 ;
 
-/** PointCloud implementation of GoToPrevious.
- * Uses PointsOnBoundary and STL stuff.
- */
-void Tesselation::GoToPrevious() const
-{
-  Info FunctionInfo(__func__);
-  if (InternalPointer != PointsOnBoundary.begin())
-    InternalPointer--;
-}
-;
-
 /** PointCloud implementation of GoToFirst.
  * Uses PointsOnBoundary and STL stuff.
@@ -1250,15 +1250,4 @@
   Info FunctionInfo(__func__);
   InternalPointer = PointsOnBoundary.begin();
-}
-;
-
-/** PointCloud implementation of GoToLast.
- * Uses PointsOnBoundary and STL stuff.
- */
-void Tesselation::GoToLast() const
-{
-  Info FunctionInfo(__func__);
-  InternalPointer = PointsOnBoundary.end();
-  InternalPointer--;
 }
 ;
@@ -1348,13 +1337,13 @@
       if (fabs(distance) < 1e-4) // we need to have a small epsilon around 0 which is still ok
         continue;
-      DoLog(2) && (Log() << Verbose(2) << "Projection of " << checker->second->node->Name << " yields distance of " << distance << "." << endl);
+      DoLog(2) && (Log() << Verbose(2) << "Projection of " << checker->second->node->getName() << " yields distance of " << distance << "." << endl);
       tmp = distance / fabs(distance);
       // 4b. Any have different sign to than before? (i.e. would lie outside convex hull with this starting triangle)
       if ((sign != 0) && (tmp != sign)) {
         // 4c. If so, break 4. loop and continue with next candidate in 1. loop
-        DoLog(2) && (Log() << Verbose(2) << "Current candidates: " << A->second->node->Name << "," << baseline->second.first->second->node->Name << "," << baseline->second.second->second->node->Name << " leaves " << checker->second->node->Name << " outside the convex hull." << endl);
+        DoLog(2) && (Log() << Verbose(2) << "Current candidates: " << A->second->node->getName() << "," << baseline->second.first->second->node->getName() << "," << baseline->second.second->second->node->getName() << " leaves " << checker->second->node->getName() << " outside the convex hull." << endl);
         break;
       } else { // note the sign for later
-        DoLog(2) && (Log() << Verbose(2) << "Current candidates: " << A->second->node->Name << "," << baseline->second.first->second->node->Name << "," << baseline->second.second->second->node->Name << " leave " << checker->second->node->Name << " inside the convex hull." << endl);
+        DoLog(2) && (Log() << Verbose(2) << "Current candidates: " << A->second->node->getName() << "," << baseline->second.first->second->node->getName() << "," << baseline->second.second->second->node->getName() << " leave " << checker->second->node->getName() << " inside the convex hull." << endl);
         sign = tmp;
       }
@@ -1456,5 +1445,5 @@
         CenterVector.Zero();
         for (int i = 0; i < 3; i++)
-          CenterVector += (*BTS->endpoints[i]->node->node);
+          CenterVector += BTS->getEndpoint(i);
         CenterVector.Scale(1. / 3.);
         DoLog(2) && (Log() << Verbose(2) << "CenterVector of base triangle is " << CenterVector << endl);
@@ -1933,8 +1922,8 @@
         RemoveTesselationLine(triangle->lines[i]);
       } else {
-        DoLog(0) && (Log() << Verbose(0) << *triangle->lines[i] << " is still attached to another triangle: ");
+        DoLog(0) && (Log() << Verbose(0) << *triangle->lines[i] << " is still attached to another triangle: " << endl);
         OpenLines.insert(pair<BoundaryLineSet *, CandidateForTesselation *> (triangle->lines[i], NULL));
         for (TriangleMap::iterator TriangleRunner = triangle->lines[i]->triangles.begin(); TriangleRunner != triangle->lines[i]->triangles.end(); TriangleRunner++)
-          DoLog(0) && (Log() << Verbose(0) << "[" << (TriangleRunner->second)->Nr << "|" << *((TriangleRunner->second)->endpoints[0]) << ", " << *((TriangleRunner->second)->endpoints[1]) << ", " << *((TriangleRunner->second)->endpoints[2]) << "] \t");
+          DoLog(0) && (Log() << Verbose(0) << "\t[" << (TriangleRunner->second)->Nr << "|" << *((TriangleRunner->second)->endpoints[0]) << ", " << *((TriangleRunner->second)->endpoints[1]) << ", " << *((TriangleRunner->second)->endpoints[2]) << "] \t");
         DoLog(0) && (Log() << Verbose(0) << endl);
         //        for (int j=0;j<2;j++) {
@@ -2570,4 +2559,5 @@
   // fill the set of neighbours
   TesselPointSet SetOfNeighbours;
+
   SetOfNeighbours.insert(CandidateLine.BaseLine->endpoints[1]->node);
   for (TesselPointList::iterator Runner = CandidateLine.pointlist.begin(); Runner != CandidateLine.pointlist.end(); Runner++)
@@ -2989,8 +2979,14 @@
   OldBaseLineNr = Base->Nr;
   m = 0;
-  for (TriangleMap::iterator runner = Base->triangles.begin(); runner != Base->triangles.end(); runner++) {
-    DoLog(0) && (Log() << Verbose(0) << "INFO: Deleting triangle " << *(runner->second) << "." << endl);
-    OldTriangleNrs[m++] = runner->second->Nr;
-    RemoveTesselationTriangle(runner->second);
+  // first obtain all triangle to delete ... (otherwise we pull the carpet (Base) from under the for-loop's feet)
+  list <BoundaryTriangleSet *> TrianglesOfBase;
+  for (TriangleMap::iterator runner = Base->triangles.begin(); runner != Base->triangles.end(); ++runner)
+    TrianglesOfBase.push_back(runner->second);
+  // .. then delete each triangle (which deletes the line as well)
+  for (list <BoundaryTriangleSet *>::iterator runner = TrianglesOfBase.begin(); !TrianglesOfBase.empty(); runner = TrianglesOfBase.begin()) {
+    DoLog(0) && (Log() << Verbose(0) << "INFO: Deleting triangle " << *(*runner) << "." << endl);
+    OldTriangleNrs[m++] = (*runner)->Nr;
+    RemoveTesselationTriangle((*runner));
+    TrianglesOfBase.erase(runner);
   }
 
@@ -4292,5 +4288,5 @@
         DoLog(2) && (Log() << Verbose(2) << "INFO: MiddleNode is " << **MiddleNode << "." << endl);
         DoLog(2) && (Log() << Verbose(2) << "INFO: EndNode is " << **EndNode << "." << endl);
-        DoLog(1) && (Log() << Verbose(1) << "INFO: Attempting to create triangle " << (*StartNode)->Name << ", " << (*MiddleNode)->Name << " and " << (*EndNode)->Name << "." << endl);
+        DoLog(1) && (Log() << Verbose(1) << "INFO: Attempting to create triangle " << (*StartNode)->getName() << ", " << (*MiddleNode)->getName() << " and " << (*EndNode)->getName() << "." << endl);
         TriangleCandidates[0] = *StartNode;
         TriangleCandidates[1] = *MiddleNode;
@@ -4714,5 +4710,5 @@
     return;
   }
-  DoLog(0) && (Log() << Verbose(0) << "Nearest point on boundary is " << NearestPoint->Name << "." << endl);
+  DoLog(0) && (Log() << Verbose(0) << "Nearest point on boundary is " << NearestPoint->getName() << "." << endl);
 
   // go through its lines and find the best one to split
@@ -4799,8 +4795,10 @@
   ofstream *tempstream = NULL;
   string NameofTempFile;
-  char NumberName[255];
+  string NumberName;
 
   if (LastTriangle != NULL) {
-    sprintf(NumberName, "-%04d-%s_%s_%s", (int) TrianglesOnBoundary.size(), LastTriangle->endpoints[0]->node->Name, LastTriangle->endpoints[1]->node->Name, LastTriangle->endpoints[2]->node->Name);
+    stringstream sstr;
+    sstr << "-"<< TrianglesOnBoundary.size() << "-" << LastTriangle->getEndpointName(0) << "_" << LastTriangle->getEndpointName(1) << "_" << LastTriangle->getEndpointName(2);
+    NumberName = sstr.str();
     if (DoTecplotOutput) {
       string NameofTempFile(filename);
Index: src/tesselation.hpp
===================================================================
--- src/tesselation.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/tesselation.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -38,4 +38,5 @@
 class PointCloud;
 class Tesselation;
+class Plane;
 
 /********************************************** definitions *********************************/
@@ -166,4 +167,8 @@
     bool IsPresentTupel(const BoundaryTriangleSet * const T) const;
 
+    Plane getPlane() const;
+    Vector getEndpoint(int) const;
+    std::string getEndpointName(int) const;
+
     class BoundaryPointSet *endpoints[3];
     class BoundaryLineSet *lines[3];
@@ -171,4 +176,7 @@
     Vector SphereCenter;
     int Nr;
+
+  private:
+
 };
 
@@ -236,10 +244,7 @@
   virtual Vector *GetCenter() const { return NULL; };
   virtual TesselPoint *GetPoint() const { return NULL; };
-  virtual TesselPoint *GetTerminalPoint() const { return NULL; };
   virtual int GetMaxId() const { return 0; };
   virtual void GoToNext() const {};
-  virtual void GoToPrevious() const {};
   virtual void GoToFirst() const {};
-  virtual void GoToLast() const {};
   virtual bool IsEmpty() const { return true; };
   virtual bool IsEnd() const { return true; };
@@ -355,9 +360,6 @@
     virtual Vector *GetCenter(ofstream *out) const;
     virtual TesselPoint *GetPoint() const;
-    virtual TesselPoint *GetTerminalPoint() const;
     virtual void GoToNext() const;
-    virtual void GoToPrevious() const;
     virtual void GoToFirst() const;
-    virtual void GoToLast() const;
     virtual bool IsEmpty() const;
     virtual bool IsEnd() const;
Index: src/tesselationhelpers.cpp
===================================================================
--- src/tesselationhelpers.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/tesselationhelpers.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -16,4 +16,5 @@
 #include "vector_ops.hpp"
 #include "verbose.hpp"
+#include "Plane.hpp"
 
 double DetGet(gsl_matrix * const A, const int inPlace)
@@ -687,5 +688,5 @@
     return -1;
   }
-  distance = x->DistanceToPlane(triangle->NormalVector, *triangle->endpoints[0]->node->node);
+  distance = x->DistanceToSpace(triangle->getPlane());
   return distance;
 };
@@ -784,6 +785,8 @@
       Walker = cloud->GetPoint();
       *rasterfile << "2" << endl << "  ";  // 2 is sphere type
-      for (i=0;i<NDIM;i++)
-        *rasterfile << Walker->node->at(i)-center->at(i) << " ";
+      for (int j=0;j<NDIM;j++) { // and for each node all NDIM coordinates
+        const double tmp = Walker->node->at(j)-center->at(j);
+        *rasterfile << ((fabs(tmp) < MYEPSILON) ? 0 : tmp) << " ";
+      }
       *rasterfile << "\t0.1\t1. 1. 1." << endl; // radius 0.05 and white as colour
       cloud->GoToNext();
@@ -795,6 +798,8 @@
       *rasterfile << "1" << endl << "  ";  // 1 is triangle type
       for (i=0;i<3;i++) {  // print each node
-        for (int j=0;j<NDIM;j++)  // and for each node all NDIM coordinates
-          *rasterfile << TriangleRunner->second->endpoints[i]->node->node->at(j)-center->at(j) << " ";
+        for (int j=0;j<NDIM;j++) { // and for each node all NDIM coordinates
+          const double tmp = TriangleRunner->second->endpoints[i]->node->node->at(j)-center->at(j);
+          *rasterfile << ((fabs(tmp) < MYEPSILON) ? 0 : tmp) << " ";
+        }
         *rasterfile << "\t";
       }
@@ -829,5 +834,5 @@
       if (TesselStruct->LastTriangle != NULL) {
         for (int i=0;i<3;i++)
-          *tecplot << (i==0 ? "" : "_") << TesselStruct->LastTriangle->endpoints[i]->node->Name;
+          *tecplot << (i==0 ? "" : "_") << TesselStruct->LastTriangle->endpoints[i]->node->getName();
       } else {
         *tecplot << "none";
@@ -835,16 +840,21 @@
     }
     *tecplot << "\", N=" << TesselStruct->PointsOnBoundary.size() << ", E=" << TesselStruct->TrianglesOnBoundary.size() << ", DATAPACKING=POINT, ZONETYPE=FETRIANGLE" << endl;
-    int i=cloud->GetMaxId();
-    int *LookupList = new int[i];
-    for (cloud->GoToFirst(), i=0; !cloud->IsEnd(); cloud->GoToNext(), i++)
+    const int MaxId=cloud->GetMaxId();
+    int *LookupList = new int[MaxId];
+    for (int i=0; i< MaxId ; i++){
       LookupList[i] = -1;
+    }
 
     // print atom coordinates
     int Counter = 1;
     TesselPoint *Walker = NULL;
-    for (PointMap::const_iterator target = TesselStruct->PointsOnBoundary.begin(); target != TesselStruct->PointsOnBoundary.end(); target++) {
+    for (PointMap::const_iterator target = TesselStruct->PointsOnBoundary.begin(); target != TesselStruct->PointsOnBoundary.end(); ++target) {
       Walker = target->second->node;
       LookupList[Walker->nr] = Counter++;
-      *tecplot << Walker->node->at(0) << " " << Walker->node->at(1) << " " << Walker->node->at(2) << " " << target->second->value << endl;
+      for (int i=0;i<NDIM;i++) {
+        const double tmp = Walker->node->at(i);
+        *tecplot << ((fabs(tmp) < MYEPSILON) ? 0 : tmp) << " ";
+      }
+      *tecplot << target->second->value << endl;
     }
     *tecplot << endl;
@@ -852,5 +862,5 @@
     DoLog(1) && (Log() << Verbose(1) << "The following triangles were created:" << endl);
     for (TriangleMap::const_iterator runner = TesselStruct->TrianglesOnBoundary.begin(); runner != TesselStruct->TrianglesOnBoundary.end(); runner++) {
-      DoLog(1) && (Log() << Verbose(1) << " " << runner->second->endpoints[0]->node->Name << "<->" << runner->second->endpoints[1]->node->Name << "<->" << runner->second->endpoints[2]->node->Name << endl);
+      DoLog(1) && (Log() << Verbose(1) << " " << runner->second->endpoints[0]->node->getName() << "<->" << runner->second->endpoints[1]->node->getName() << "<->" << runner->second->endpoints[2]->node->getName() << endl);
       *tecplot << LookupList[runner->second->endpoints[0]->node->nr] << " " << LookupList[runner->second->endpoints[1]->node->nr] << " " << LookupList[runner->second->endpoints[2]->node->nr] << endl;
     }
Index: src/unittests/ActOnAllUnitTest.cpp
===================================================================
--- src/unittests/ActOnAllUnitTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/ActOnAllUnitTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -46,5 +46,4 @@
   // Ref was copy constructed, hence has to be cleaned, too!
   Ref.EmptyList();
-  MemoryUsageObserver::purgeInstance();
 };
 
@@ -77,6 +76,6 @@
 
   // scaling by three values
-  double *factors = Malloc<double>(NDIM, "ActOnAllTest::ScaleTest - factors");
-  double *inverses = Malloc<double>(NDIM, "ActOnAllTest::ScaleTest - inverses");
+  double *factors = new double[NDIM];
+  double *inverses = new double[NDIM];
   for (int i=0;i<NDIM;++i) {
     factors[i] = 2.;
@@ -88,6 +87,6 @@
   VL.ActOnAll<Vector,void,const double*>(&Vector::ScaleAll, inverses );
   CPPUNIT_ASSERT_EQUAL( VL == Ref , true );
-  Free(factors);
-  Free(inverses);
+  delete[](factors);
+  delete[](inverses);
 };
 
Index: src/unittests/AnalysisCorrelationToPointUnitTest.cpp
===================================================================
--- src/unittests/AnalysisCorrelationToPointUnitTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/AnalysisCorrelationToPointUnitTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -66,5 +66,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule->getAtomCount(), 4 );
 
   TestList = World::getInstance().getMolecules();
@@ -91,5 +91,4 @@
   delete(point);
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
 };
Index: src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp
===================================================================
--- src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -25,4 +25,5 @@
 #include "tesselation.hpp"
 #include "World.hpp"
+#include "Helpers/Assert.hpp"
 
 #include "Helpers/Assert.hpp"
@@ -39,5 +40,5 @@
 void AnalysisCorrelationToSurfaceUnitTest::setUp()
 {
-  //ASSERT_DO(Assert::Throw);
+  ASSERT_DO(Assert::Throw);
 
   atom *Walker = NULL;
@@ -54,17 +55,20 @@
   hydrogen = World::getInstance().getPeriode()->FindElement(1);
   TestSurfaceMolecule = World::getInstance().createMolecule();
+
   Walker = World::getInstance().createAtom();
   Walker->type = hydrogen;
   *Walker->node = Vector(1., 0., 1. );
-
-  TestSurfaceMolecule->AddAtom(Walker);
+  TestSurfaceMolecule->AddAtom(Walker);
+
   Walker = World::getInstance().createAtom();
   Walker->type = hydrogen;
   *Walker->node = Vector(0., 1., 1. );
   TestSurfaceMolecule->AddAtom(Walker);
+
   Walker = World::getInstance().createAtom();
   Walker->type = hydrogen;
   *Walker->node = Vector(1., 1., 0. );
   TestSurfaceMolecule->AddAtom(Walker);
+
   Walker = World::getInstance().createAtom();
   Walker->type = hydrogen;
@@ -73,5 +77,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestSurfaceMolecule->AtomCount, 4 );
+  CPPUNIT_ASSERT_EQUAL( TestSurfaceMolecule->getAtomCount(), 4 );
 
   TestList = World::getInstance().getMolecules();
@@ -91,12 +95,15 @@
   *Walker->node = Vector(4., 0., 4. );
   TestSurfaceMolecule->AddAtom(Walker);
+
   Walker = World::getInstance().createAtom();
   Walker->type = carbon;
   *Walker->node = Vector(0., 4., 4. );
   TestSurfaceMolecule->AddAtom(Walker);
+
   Walker = World::getInstance().createAtom();
   Walker->type = carbon;
   *Walker->node = Vector(4., 4., 0. );
   TestSurfaceMolecule->AddAtom(Walker);
+
   // add inner atoms
   Walker = World::getInstance().createAtom();
@@ -104,4 +111,5 @@
   *Walker->node = Vector(0.5, 0.5, 0.5 );
   TestSurfaceMolecule->AddAtom(Walker);
+
   TestSurfaceMolecule->ActiveFlag = true;
   TestList->insert(TestSurfaceMolecule);
@@ -125,5 +133,4 @@
   delete(LC);
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
 };
@@ -134,5 +141,5 @@
 void AnalysisCorrelationToSurfaceUnitTest::SurfaceTest()
 {
-  CPPUNIT_ASSERT_EQUAL( 4, TestSurfaceMolecule->AtomCount );
+  CPPUNIT_ASSERT_EQUAL( 4, TestSurfaceMolecule->getAtomCount() );
   CPPUNIT_ASSERT_EQUAL( (size_t)2, TestList->ListOfMolecules.size() );
   CPPUNIT_ASSERT_EQUAL( (size_t)4, Surface->PointsOnBoundary.size() );
Index: src/unittests/AnalysisPairCorrelationUnitTest.cpp
===================================================================
--- src/unittests/AnalysisPairCorrelationUnitTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/AnalysisPairCorrelationUnitTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -68,5 +68,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule->getAtomCount(), 4 );
 
   TestList = World::getInstance().getMolecules();
@@ -90,5 +90,4 @@
   // note that all the atoms are cleaned by TestMolecule
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
   errorLogger::purgeInstance();
Index: src/unittests/CountBondsUnitTest.cpp
===================================================================
--- src/unittests/CountBondsUnitTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/CountBondsUnitTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -92,10 +92,6 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule1->AtomCount, 3 );
-  Walker = TestMolecule1->start->next;
-  CPPUNIT_ASSERT( TestMolecule1->end != Walker );
-  CPPUNIT_ASSERT_EQUAL( TestMolecule2->AtomCount, 3 );
-  Walker = TestMolecule2->start->next;
-  CPPUNIT_ASSERT( TestMolecule2->end != Walker );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule1->getAtomCount(), 3 );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule2->getAtomCount(), 3 );
 
   // create a small file with table
@@ -117,5 +113,4 @@
 
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
 };
 
Index: src/unittests/LinkedCellUnitTest.cpp
===================================================================
--- src/unittests/LinkedCellUnitTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/LinkedCellUnitTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -60,7 +60,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 3*3*3 );
-  Walker = TestMolecule->start->next;
-  CPPUNIT_ASSERT( TestMolecule->end != Walker );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule->getAtomCount(), 3*3*3 );
 };
 
@@ -70,5 +68,4 @@
   delete(LC);
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
 };
 
@@ -188,25 +185,21 @@
 {
   // check all atoms
-  atom *Walker = TestMolecule->start;
-  while (Walker->next != TestMolecule->end) {
-    Walker = Walker->next;
-    CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToNode(Walker) );
+  for(molecule::iterator iter = TestMolecule->begin(); iter != TestMolecule->end();++iter){
+    CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToNode(*iter) );
   }
 
   // check internal vectors, returns false, because this atom is not in LC-list!
-  Walker = World::getInstance().createAtom();
-  Walker->Name = Malloc<char>(6, "LinkedCellTest::SetIndexToNodeTest - Walker");
-  strcpy(Walker->Name, "test");
-  Walker->x= Vector(1,1,1);
-  CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(Walker) );
-  World::getInstance().destroyAtom(Walker);
+  atom *newAtom = World::getInstance().createAtom();
+  newAtom->setName("test");
+  newAtom->x= Vector(1,1,1);
+  CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(newAtom) );
+  World::getInstance().destroyAtom(newAtom);
 
   // check out of bounds vectors
-  Walker = World::getInstance().createAtom();
-  Walker->Name = Malloc<char>(6, "LinkedCellTest::SetIndexToNodeTest - Walker");
-  strcpy(Walker->Name, "test");
-  Walker->x = Vector(0,-1,0);
-  CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(Walker) );
-  World::getInstance().destroyAtom(Walker);
+  newAtom = World::getInstance().createAtom();
+  newAtom->setName("test");
+  newAtom->x = Vector(0,-1,0);
+  CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(newAtom) );
+  World::getInstance().destroyAtom(newAtom);
 };
 
@@ -280,9 +273,7 @@
   size = ListOfPoints->size();
   CPPUNIT_ASSERT_EQUAL( (size_t)27, size );
-  Walker = TestMolecule->start;
-  Walker = TestMolecule->start;
-  while (Walker->next != TestMolecule->end) {
-    Walker = Walker->next;
-    ListOfPoints->remove(Walker);
+
+  for(molecule::iterator iter = TestMolecule->begin(); iter != TestMolecule->end(); ++iter){
+    ListOfPoints->remove((*iter));
     size--;
     CPPUNIT_ASSERT_EQUAL( size, ListOfPoints->size() );
@@ -299,9 +290,7 @@
   size=ListOfPoints->size();
   CPPUNIT_ASSERT_EQUAL( (size_t)8, size );
-  Walker = TestMolecule->start;
-  while (Walker->next != TestMolecule->end) {
-    Walker = Walker->next;
-    if ((Walker->x[0] <2) && (Walker->x[1] <2) && (Walker->x[2] <2)) {
-      ListOfPoints->remove(Walker);
+  for(molecule::iterator iter = TestMolecule->begin(); iter != TestMolecule->end(); ++iter){
+    if (((*iter)->x[0] <2) && ((*iter)->x[1] <2) && ((*iter)->x[2] <2)) {
+      ListOfPoints->remove(*iter);
       size--;
       CPPUNIT_ASSERT_EQUAL( size, ListOfPoints->size() );
@@ -319,8 +308,6 @@
   size=ListOfPoints->size();
   CPPUNIT_ASSERT_EQUAL( (size_t)27, size );
-  Walker = TestMolecule->start;
-  while (Walker->next != TestMolecule->end) {
-    Walker = Walker->next;
-    ListOfPoints->remove(Walker);
+  for(molecule::iterator iter = TestMolecule->begin(); iter!=TestMolecule->end();++iter){
+    ListOfPoints->remove(*iter);
     size--;
     CPPUNIT_ASSERT_EQUAL( size, ListOfPoints->size() );
@@ -348,9 +335,7 @@
   size = ListOfPoints->size();
   CPPUNIT_ASSERT_EQUAL( (size_t)7, size );
-  Walker = TestMolecule->start;
-  while (Walker->next != TestMolecule->end) {
-    Walker = Walker->next;
-    if ((Walker->x.DistanceSquared(tester) - 1.) < MYEPSILON ) {
-      ListOfPoints->remove(Walker);
+  for(molecule::iterator iter = TestMolecule->begin(); iter!=TestMolecule->end();++iter){
+    if (((*iter)->x.DistanceSquared(tester) - 1.) < MYEPSILON ) {
+      ListOfPoints->remove(*iter);
       size--;
       CPPUNIT_ASSERT_EQUAL( size, ListOfPoints->size() );
Index: src/unittests/Makefile.am
===================================================================
--- src/unittests/Makefile.am	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -49,6 +49,6 @@
 noinst_PROGRAMS = $(TESTS) TestRunner
 
-GSLLIBS = ../libgslwrapper.a
-ALLLIBS = ../libmolecuilder.a ${GSLLIBS} $(BOOST_LIB) ${BOOST_THREAD_LIB}
+GSLLIBS = ../libgslwrapper.a $(BOOST_LIB) ${BOOST_THREAD_LIB}
+ALLLIBS = ../libmolecuilder.a ${GSLLIBS} 
 
 TESTSOURCES = \
@@ -182,8 +182,8 @@
 manipulateAtomsTest_LDADD = ${ALLLIBS}
 
-MemoryAllocatorUnitTest_SOURCES = UnitTestMain.cpp memoryallocatorunittest.cpp memoryallocatorunittest.hpp 
+MemoryAllocatorUnitTest_SOURCES = UnitTestMain.cpp ../memoryallocator.hpp ../memoryallocator.cpp ../memoryusageobserver.cpp ../memoryusageobserver.hpp memoryallocatorunittest.cpp memoryallocatorunittest.hpp 
 MemoryAllocatorUnitTest_LDADD = ${ALLLIBS}
 
-MemoryUsageObserverUnitTest_SOURCES = UnitTestMain.cpp memoryusageobserverunittest.cpp memoryusageobserverunittest.hpp 
+MemoryUsageObserverUnitTest_SOURCES = UnitTestMain.cpp ../memoryallocator.hpp ../memoryusageobserver.cpp ../memoryusageobserver.hpp memoryusageobserverunittest.cpp memoryusageobserverunittest.hpp 
 MemoryUsageObserverUnitTest_LDADD = ${ALLLIBS}
 
@@ -218,5 +218,5 @@
 Tesselation_InOutsideUnitTest_LDADD = ${ALLLIBS}
 
-TestRunner_SOURCES = TestRunnerMain.cpp $(TESTSOURCES) $(TESTHEADERS)
+TestRunner_SOURCES = TestRunnerMain.cpp ../memoryallocator.hpp ../memoryallocator.cpp ../memoryusageobserver.cpp ../memoryusageobserver.hpp $(TESTSOURCES) $(TESTHEADERS)
 TestRunner_LDADD = ${ALLLIBS}
 
Index: src/unittests/ObserverTest.cpp
===================================================================
--- src/unittests/ObserverTest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/ObserverTest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -11,6 +11,8 @@
 #include <cppunit/extensions/TestFactoryRegistry.h>
 #include <cppunit/ui/text/TestRunner.h>
+#include <set>
 
 #include "Patterns/Observer.hpp"
+#include "Patterns/ObservedIterator.hpp"
 #include "Helpers/Assert.hpp"
 
@@ -162,4 +164,42 @@
   bool wasNotified;
 };
+
+class ObservableCollection : public Observable {
+public:
+  typedef std::set<SimpleObservable*> set;
+  typedef ObservedIterator<set> iterator;
+  typedef set::const_iterator const_iterator;
+
+  ObservableCollection(int _num) :
+  num(_num)
+  {
+    for(int i=0; i<num; ++i){
+      SimpleObservable *content = new SimpleObservable();
+      content->signOn(this);
+      theSet.insert(content);
+    }
+  }
+
+  ~ObservableCollection(){
+    set::iterator iter;
+    for(iter=theSet.begin(); iter!=theSet.end(); ++iter ){
+      delete (*iter);
+    }
+  }
+
+  iterator begin(){
+    return iterator(theSet.begin(),this);
+  }
+
+  iterator end(){
+    return iterator(theSet.end(),this);
+  }
+
+  const int num;
+
+private:
+  set theSet;
+};
+
 
 /******************* actuall tests ***************/
@@ -173,4 +213,5 @@
   blockObservable = new BlockObservable();
   notificationObservable = new NotificationObservable();
+  collection = new ObservableCollection(5);
 
   observer1 = new UpdateCountObserver();
@@ -181,5 +222,4 @@
   notificationObserver1 = new NotificationObserver(notificationObservable->notification1);
   notificationObserver2 = new NotificationObserver(notificationObservable->notification2);
-
 }
 
@@ -191,4 +231,5 @@
   delete blockObservable;
   delete notificationObservable;
+  delete collection;
 
   delete observer1;
@@ -277,4 +318,38 @@
   blockObservable->changeMethod2();
   blockObservable->noChangeMethod();
+}
+
+void ObserverTest::iteratorTest(){
+  int i = 0;
+  // test the general iterator methods
+  for(ObservableCollection::iterator iter=collection->begin(); iter!=collection->end();++iter){
+    CPPUNIT_ASSERT(i< collection->num);
+    i++;
+  }
+
+  i=0;
+  for(ObservableCollection::const_iterator iter=collection->begin(); iter!=collection->end();++iter){
+    CPPUNIT_ASSERT(i<collection->num);
+    i++;
+  }
+
+  collection->signOn(observer1);
+  {
+    // we construct this out of the loop, so the iterator dies at the end of
+    // the scope and not the end of the loop (allows more testing)
+    ObservableCollection::iterator iter;
+    for(iter=collection->begin(); iter!=collection->end(); ++iter){
+      (*iter)->changeMethod();
+    }
+    // At this point no change should have been propagated
+    CPPUNIT_ASSERT_EQUAL( 0, observer1->updates);
+  }
+  // After the Iterator has died the propagation should take place
+  CPPUNIT_ASSERT_EQUAL( 1, observer1->updates);
+
+  // when using a const_iterator no changes should be propagated
+  for(ObservableCollection::const_iterator iter = collection->begin(); iter!=collection->end();++iter);
+  CPPUNIT_ASSERT_EQUAL( 1, observer1->updates);
+  collection->signOff(observer1);
 }
 
Index: src/unittests/ObserverTest.hpp
===================================================================
--- src/unittests/ObserverTest.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/ObserverTest.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -17,7 +17,7 @@
 class CallObservable;
 class SuperObservable;
+class ObservableCollection;
 class BlockObservable;
 class NotificationObservable;
-
 
 class ObserverTest :  public CppUnit::TestFixture
@@ -29,4 +29,5 @@
   CPPUNIT_TEST ( doesNotifyTest );
   CPPUNIT_TEST ( doesReportTest );
+  CPPUNIT_TEST ( iteratorTest );
   CPPUNIT_TEST ( CircleDetectionTest );
   CPPUNIT_TEST_SUITE_END();
@@ -41,4 +42,5 @@
   void doesNotifyTest();
   void doesReportTest();
+  void iteratorTest();
   void CircleDetectionTest();
 
@@ -58,4 +60,6 @@
   SuperObservable *superObservable;
   NotificationObservable *notificationObservable;
+  ObservableCollection *collection;
+
 };
 
Index: src/unittests/analysisbondsunittest.cpp
===================================================================
--- src/unittests/analysisbondsunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/analysisbondsunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -25,4 +25,5 @@
 #include "molecule.hpp"
 #include "periodentafel.hpp"
+#include "World.hpp"
 
 #ifdef HAVE_TESTRUNNER
@@ -76,5 +77,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 5 );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule->getAtomCount(), 5 );
 
   // create a small file with table
Index: src/unittests/bondgraphunittest.cpp
===================================================================
--- src/unittests/bondgraphunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/bondgraphunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -77,5 +77,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule->getAtomCount(), 4 );
 
   // create a small file with table
@@ -111,6 +111,13 @@
   // are all cleaned when the world is destroyed
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
+};
+
+/** Tests whether setup worked.
+ */
+void BondGraphTest::SetupTest()
+{
+  CPPUNIT_ASSERT_EQUAL (false, TestMolecule->empty());
+  CPPUNIT_ASSERT_EQUAL ((size_t)4, TestMolecule->size());
 };
 
@@ -129,10 +136,10 @@
 void BondGraphTest::ConstructGraphFromTableTest()
 {
-  atom *Walker = TestMolecule->start->next;
-  atom *Runner = TestMolecule->end->previous;
-  CPPUNIT_ASSERT( TestMolecule->end != Walker );
+  molecule::iterator Walker = TestMolecule->begin();
+  molecule::iterator Runner = TestMolecule->begin();
+  Runner++;
   CPPUNIT_ASSERT_EQUAL( true , BG->LoadBondLengthTable(*filename) );
   CPPUNIT_ASSERT_EQUAL( true , BG->ConstructBondGraph(TestMolecule) );
-  CPPUNIT_ASSERT_EQUAL( true , Walker->IsBondedTo(Runner) );
+  CPPUNIT_ASSERT_EQUAL( true , (*Walker)->IsBondedTo((*Runner)) );
 };
 
@@ -141,10 +148,13 @@
 void BondGraphTest::ConstructGraphFromCovalentRadiiTest()
 {
-  atom *Walker = TestMolecule->start->next;
-  atom *Runner = TestMolecule->end->previous;
-  CPPUNIT_ASSERT( TestMolecule->end != Walker );
+
+  //atom *Walker = TestMolecule->start->next;
+  //atom *Runner = TestMolecule->end->previous;
+  //CPPUNIT_ASSERT( TestMolecule->end != Walker );
   CPPUNIT_ASSERT_EQUAL( false , BG->LoadBondLengthTable(*dummyname) );
   CPPUNIT_ASSERT_EQUAL( true , BG->ConstructBondGraph(TestMolecule) );
-  CPPUNIT_ASSERT_EQUAL( true , Walker->IsBondedTo(Runner) );
+
+  // this cannot be assured using dynamic IDs
+  //CPPUNIT_ASSERT_EQUAL( true , Walker->IsBondedTo(Runner) );
 };
 
Index: src/unittests/bondgraphunittest.hpp
===================================================================
--- src/unittests/bondgraphunittest.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/bondgraphunittest.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -22,4 +22,5 @@
 {
     CPPUNIT_TEST_SUITE( BondGraphTest) ;
+    CPPUNIT_TEST ( SetupTest );
     CPPUNIT_TEST ( LoadTableTest );
     CPPUNIT_TEST ( ConstructGraphFromTableTest );
@@ -30,4 +31,5 @@
       void setUp();
       void tearDown();
+      void SetupTest();
       void LoadTableTest();
       void ConstructGraphFromTableTest();
Index: src/unittests/listofbondsunittest.cpp
===================================================================
--- src/unittests/listofbondsunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/listofbondsunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -67,5 +67,5 @@
 
   // check that TestMolecule was correctly constructed
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
+  CPPUNIT_ASSERT_EQUAL( TestMolecule->getAtomCount(), 4 );
 };
 
@@ -78,8 +78,16 @@
   // are all cleaned when the world is destroyed
   World::purgeInstance();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
 };
 
+/** Tests whether setup worked correctly.
+ *
+ */
+void ListOfBondsTest::SetupTest()
+{
+  CPPUNIT_ASSERT_EQUAL( false, TestMolecule->empty() );
+  CPPUNIT_ASSERT_EQUAL( (size_t)4, TestMolecule->size() );
+};
+
 /** Unit Test of molecule::AddBond()
  *
@@ -88,14 +96,15 @@
 {
   bond *Binder = NULL;
-  atom *atom1 = TestMolecule->start->next;
-  atom *atom2 = atom1->next;
-  CPPUNIT_ASSERT( atom1 != NULL );
-  CPPUNIT_ASSERT( atom2 != NULL );
-
-  // add bond
-  Binder = TestMolecule->AddBond(atom1, atom2, 1);
-  CPPUNIT_ASSERT( Binder != NULL );
-  bond *TestBond = TestMolecule->first->next;
-  CPPUNIT_ASSERT_EQUAL ( TestBond, Binder );
+  molecule::iterator iter = TestMolecule->begin();
+  atom *atom1 = *iter;
+  iter++;
+  atom *atom2 = *iter;
+  CPPUNIT_ASSERT( atom1 != NULL );
+  CPPUNIT_ASSERT( atom2 != NULL );
+
+  // add bond
+  Binder = TestMolecule->AddBond(atom1, atom2, 1);
+  CPPUNIT_ASSERT( Binder != NULL );
+  CPPUNIT_ASSERT_EQUAL ( true, TestMolecule->hasBondStructure() );
 
   // check that bond contains the two atoms
@@ -116,6 +125,8 @@
 {
   bond *Binder = NULL;
-  atom *atom1 = TestMolecule->start->next;
-  atom *atom2 = atom1->next;
+  molecule::iterator iter = TestMolecule->begin();
+  atom *atom1 = *iter;
+  iter++;
+  atom *atom2 = *iter;
   CPPUNIT_ASSERT( atom1 != NULL );
   CPPUNIT_ASSERT( atom2 != NULL );
@@ -133,5 +144,5 @@
 
   // check if removed from molecule
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->first->next, TestMolecule->last );
+  CPPUNIT_ASSERT_EQUAL( false, TestMolecule->hasBondStructure() );
 };
 
@@ -142,7 +153,10 @@
 {
   bond *Binder = NULL;
-  atom *atom1 = TestMolecule->start->next;
-  atom *atom2 = atom1->next;
-  atom *atom3 = atom2->next;
+  molecule::iterator iter = TestMolecule->begin();
+  atom *atom1 = *iter;
+  iter++;
+  atom *atom2 = *iter;
+  iter++;
+  atom *atom3 = *iter;
   CPPUNIT_ASSERT( atom1 != NULL );
   CPPUNIT_ASSERT( atom2 != NULL );
@@ -171,6 +185,6 @@
 
   // check if removed from molecule
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->first->next, Binder );
-  CPPUNIT_ASSERT_EQUAL( Binder->next, TestMolecule->last );
+  CPPUNIT_ASSERT_EQUAL( true, TestMolecule->hasBondStructure() );
+  CPPUNIT_ASSERT_EQUAL( (unsigned int)1, TestMolecule->CountBonds() );
 };
 
@@ -181,6 +195,8 @@
 {
   bond *Binder = NULL;
-  atom *atom1 = TestMolecule->start->next;
-  atom *atom2 = atom1->next;
+  molecule::iterator iter = TestMolecule->begin();
+  atom *atom1 = *iter;
+  iter++;
+  atom *atom2 = *iter;
   CPPUNIT_ASSERT( atom1 != NULL );
   CPPUNIT_ASSERT( atom2 != NULL );
@@ -198,5 +214,5 @@
 
   // check if removed from molecule
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->first->next, TestMolecule->last );
+  CPPUNIT_ASSERT_EQUAL( false, TestMolecule->hasBondStructure() );
 };
 
@@ -207,6 +223,8 @@
 {
   bond *Binder = NULL;
-  atom *atom1 = TestMolecule->start->next;
-  atom *atom2 = atom1->next;
+  molecule::iterator iter = TestMolecule->begin();
+  atom *atom1 = *iter;
+  iter++;
+  atom *atom2 = *iter;
   CPPUNIT_ASSERT( atom1 != NULL );
   CPPUNIT_ASSERT( atom2 != NULL );
@@ -223,5 +241,5 @@
 
   // check if removed from molecule
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->first->next, TestMolecule->last );
+  CPPUNIT_ASSERT_EQUAL( false, TestMolecule->hasBondStructure() );
 };
 
@@ -232,6 +250,8 @@
 {
   bond *Binder = NULL;
-  atom *atom1 = TestMolecule->start->next;
-  atom *atom2 = atom1->next;
+  molecule::iterator iter = TestMolecule->begin();
+  atom *atom1 = *iter;
+  iter++;
+  atom *atom2 = *iter;
   CPPUNIT_ASSERT( atom1 != NULL );
   CPPUNIT_ASSERT( atom2 != NULL );
@@ -248,4 +268,4 @@
 
   // check if removed from molecule
-  CPPUNIT_ASSERT_EQUAL( TestMolecule->first->next, TestMolecule->last );
-};
+  CPPUNIT_ASSERT_EQUAL( true, TestMolecule->hasBondStructure() );
+};
Index: src/unittests/listofbondsunittest.hpp
===================================================================
--- src/unittests/listofbondsunittest.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/listofbondsunittest.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -20,4 +20,5 @@
 {
     CPPUNIT_TEST_SUITE( ListOfBondsTest) ;
+    CPPUNIT_TEST ( SetupTest );
     CPPUNIT_TEST ( AddingBondTest );
     CPPUNIT_TEST ( RemovingBondTest );
@@ -31,4 +32,5 @@
       void setUp();
       void tearDown();
+      void SetupTest();
       void AddingBondTest();
       void RemovingBondTest();
Index: src/unittests/memoryallocatorunittest.cpp
===================================================================
--- src/unittests/memoryallocatorunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/memoryallocatorunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -12,4 +12,5 @@
 #include "memoryallocator.hpp"
 #include "memoryallocatorunittest.hpp"
+#include "memoryusageobserver.hpp"
 #include "helpers.hpp"
 #include "log.hpp"
Index: src/unittests/stackclassunittest.cpp
===================================================================
--- src/unittests/stackclassunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/stackclassunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -37,5 +37,4 @@
   Stack->ClearStack();
   delete(Stack);
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
 };
Index: src/unittests/tesselation_boundarytriangleunittest.cpp
===================================================================
--- src/unittests/tesselation_boundarytriangleunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/tesselation_boundarytriangleunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -37,19 +37,16 @@
   tesselpoints[0] = new TesselPoint;
   tesselpoints[0]->node = new Vector(0., 0., 0.);
-  tesselpoints[0]->Name = Malloc<char>(3, "TesselationBoundaryTriangleTest::setUp - *Name");
-  strcpy(tesselpoints[0]->Name, "1");
+  tesselpoints[0]->setName("1");
   tesselpoints[0]->nr = 1;
   points[0] = new BoundaryPointSet(tesselpoints[0]);
   tesselpoints[1] = new TesselPoint;
   tesselpoints[1]->node = new Vector(0., 1., 0.);
-  tesselpoints[1]->Name = Malloc<char>(3, "TesselationBoundaryTriangleTest::setUp - *Name");
-  strcpy(tesselpoints[1]->Name, "2");
+  tesselpoints[1]->setName("2");
   tesselpoints[1]->nr = 2;
   points[1] = new BoundaryPointSet(tesselpoints[1]);
   tesselpoints[2] = new TesselPoint;
-  tesselpoints[2] ->node = new Vector(1., 0., 0.);
-  tesselpoints[2] ->Name = Malloc<char>(3, "TesselationBoundaryTriangleTest::setUp - *Name");
-  strcpy(tesselpoints[2] ->Name, "3");
-  tesselpoints[2] ->nr = 3;
+  tesselpoints[2]->node = new Vector(1., 0., 0.);
+  tesselpoints[2]->setName("3");
+  tesselpoints[2]->nr = 3;
   points[2] = new BoundaryPointSet(tesselpoints[2] );
 
@@ -73,5 +70,4 @@
     delete tesselpoints[i];
   }
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
   errorLogger::purgeInstance();
Index: src/unittests/tesselation_insideoutsideunittest.cpp
===================================================================
--- src/unittests/tesselation_insideoutsideunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/tesselation_insideoutsideunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -38,48 +38,40 @@
   Walker = new TesselPoint;
   Walker->node = new Vector(0., 0., 0.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "1");
+  Walker->setName("1");
   Walker->nr = 1;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(0., 1., 0.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "2");
+  Walker->setName("2");
   Walker->nr = 2;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(1., 0., 0.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "3");
+  Walker->setName("3");
   Walker->nr = 3;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(1., 1., 0.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "4");
+  Walker->setName("4");
   Walker->nr = 4;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(0., 0., 1.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "5");
+  Walker->setName("5");
   Walker->nr = 5;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(0., 1., 1.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "6");
+  Walker->setName("6");
   Walker->nr = 6;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(1., 0., 1.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "7");
+  Walker->setName("7");
   Walker->nr = 7;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(1., 1., 1.);
-  Walker->Name = Malloc<char>(3, "TesselationInOutsideTest::setUp - *Name");
-  strcpy(Walker->Name, "8");
+  Walker->setName("8");
   Walker->nr = 8;
   Corners.push_back(Walker);
@@ -142,5 +134,4 @@
   }
   Corners.clear();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
   errorLogger::purgeInstance();
Index: src/unittests/tesselationunittest.cpp
===================================================================
--- src/unittests/tesselationunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/tesselationunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -37,24 +37,20 @@
   Walker = new TesselPoint;
   Walker->node = new Vector(1., 0., -1.);
-  Walker->Name = Malloc<char>(3, "TesselationTest::setUp");
-  strcpy(Walker->Name, "1");
+  Walker->setName("1");
   Walker->nr = 1;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(-1., 1., -1.);
-  Walker->Name = Malloc<char>(3, "TesselationTest::setUp");
-  strcpy(Walker->Name, "2");
+  Walker->setName("2");
   Walker->nr = 2;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(-1., -1., -1.);
-  Walker->Name = Malloc<char>(3, "TesselationTest::setUp");
-  strcpy(Walker->Name, "3");
+  Walker->setName("3");
   Walker->nr = 3;
   Corners.push_back(Walker);
   Walker = new TesselPoint;
   Walker->node = new Vector(-1., 0., 1.);
-  Walker->Name = Malloc<char>(3, "TesselationTest::setUp");
-  strcpy(Walker->Name, "4");
+  Walker->setName("4");
   Walker->nr = 4;
   Corners.push_back(Walker);
@@ -110,5 +106,4 @@
   }
   Corners.clear();
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
   errorLogger::purgeInstance();
Index: src/unittests/vectorunittest.cpp
===================================================================
--- src/unittests/vectorunittest.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/unittests/vectorunittest.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -49,5 +49,4 @@
 void VectorTest::tearDown()
 {
-  MemoryUsageObserver::purgeInstance();
   logger::purgeInstance();
   errorLogger::purgeInstance();
Index: src/vector.cpp
===================================================================
--- src/vector.cpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/vector.cpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -266,7 +266,7 @@
  * \return distance to plane
  */
-double Vector::DistanceToPlane(const Vector &PlaneNormal, const Vector &PlaneOffset) const
-{
-  return GetDistanceVectorToPlane(PlaneNormal,PlaneOffset).Norm();
+double Vector::DistanceToSpace(const Space &space) const
+{
+  return space.distance(*this);
 };
 
@@ -543,5 +543,5 @@
   // truncate to [0,1] for each axis
   for (int i=0;i<NDIM;i++) {
-    x[i] += 0.5;  // set to center of box
+    //x[i] += 0.5;  // set to center of box
     while (x[i] >= 1.)
       x[i] -= 1.;
Index: src/vector.hpp
===================================================================
--- src/vector.hpp	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ src/vector.hpp	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -40,5 +40,5 @@
   double DistanceSquared(const Vector &y) const;
   Vector GetDistanceVectorToPlane(const Vector &PlaneNormal, const Vector &PlaneOffset) const;
-  double DistanceToPlane(const Vector &PlaneNormal, const Vector &PlaneOffset) const;
+  double DistanceToSpace(const Space& space) const;
   double PeriodicDistance(const Vector &y, const double * const cell_size) const;
   double PeriodicDistanceSquared(const Vector &y, const double * const cell_size) const;
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -1,32 +1,2 @@
-AUTOM4TE = autom4te
-EXTRA_DIST = testsuite.at $(TESTSUITE) atlocal.in regression
-TESTSUITE = $(srcdir)/testsuite
+SUBDIRS = regression Tesselations
 
-SUBDIRS = Tesselations
-
-check-local: atconfig atlocal package.m4 $(TESTSUITE)
-		$(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
-
-installcheck-local: atconfig atlocal $(TESTSUITE)
-		$(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' \
-		$(TESTSUITEFLAGS)
-     
-clean-local:
-		test ! -f '$(TESTSUITE)' || \
-		$(SHELL) '$(TESTSUITE)' --clean
-
-AUTOTEST = $(AUTOM4TE) --language=autotest
-$(TESTSUITE): $(srcdir)/testsuite.at
-		$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at
-		mv $@.tmp $@
-
-# The `:;' works around a Bash 3.2 bug when the output is not writeable.
-$(srcdir)/package.m4: $(top_srcdir)/configure.ac
-			:;{ \
-					echo '# Signature of the current package.' && \
-					echo 'm4_define([AT_PACKAGE_NAME],      [@PACKAGE_NAME@])' && \
-					echo 'm4_define([AT_PACKAGE_TARNAME],   [@PACKAGE_TARNAME@])' && \
-					echo 'm4_define([AT_PACKAGE_VERSION],   [@PACKAGE_VERSION@])' && \
-					echo 'm4_define([AT_PACKAGE_STRING],    [@PACKAGE_STRING@])' && \
-					echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
-				} >'$(srcdir)/package.m4'
Index: tests/Tesselations/defs.in
===================================================================
--- tests/Tesselations/defs.in	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/Tesselations/defs.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -30,5 +30,4 @@
 	CLEANUP="$CLEANUP; rm -rf $testdir"
 	cp -r @srcdir@/$testdir/* $testdir/
-	cd $testdir
 	CLEANUP="rm -f stderr stdout diffstderr diffstdout; cd ..; $CLEANUP"
 	CLEANUP="rm -f *.conf*; rm -f NonConvexEnvelope*; rm -f ${testdir}.xyz; rm -f ${testdir}.dbond; $CLEANUP"
@@ -52,5 +51,5 @@
 	FILENAME="NonConvexEnvelope"
 	exitcode=0
-	cd $RADIUS
+	cd $testdir/$RADIUS
 	#echo "Current dir is `pwd`, calling $MOLECUILDER $mol.conf -e $exec_prefix -p ../$mol.xyz -N $RADIUS $FILENAME."
 	if [ -e $mol.dbond ]; then
@@ -68,5 +67,5 @@
 	#cat diffstderr
 	#cat diffstdout
-	cd ..
+	cd ../..
 	test $exitcode = $expected_exitcode || exit 1
 }
Index: sts/atlocal.in
===================================================================
--- tests/atlocal.in	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ 	(revision )
@@ -1,4 +1,0 @@
-prefix='@prefix@'
-exec_prefix='@prefix@'
-topdir='@topdir@'
-bindir='@bindir@'
Index: sts/molecuilder.in
===================================================================
--- tests/molecuilder.in	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#!/bin/sh
-#
-# wrapper for testing molecuilder
-
-. atconfig
-
-"${abs_top_builddir}/src/molecuilder" \
-	${1+"$@"}
-status=$?
-
-exit $status
Index: tests/regression/Analysis/1/post/bin_output.csv
===================================================================
--- tests/regression/Analysis/1/post/bin_output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/1/post/bin_output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,42 @@
+BinStart	Count
+0	0
+0.5	62
+1	0
+1.5	0
+2	24
+2.5	63
+3	57
+3.5	121
+4	77
+4.5	81
+5	82
+5.5	74
+6	127
+6.5	168
+7	154
+7.5	152
+8	94
+8.5	105
+9	97
+9.5	100
+10	98
+10.5	64
+11	40
+11.5	47
+12	24
+12.5	6
+13	2
+13.5	3
+14	0
+14.5	0
+15	0
+15.5	0
+16	0
+16.5	0
+17	0
+17.5	0
+18	0
+18.5	0
+19	0
+19.5	0
+20	0
Index: tests/regression/Analysis/1/pre/test.conf
===================================================================
--- tests/regression/Analysis/1/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/1/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,165 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	62	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	31	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	6.550000000	6.550000000	6.046000000	0 # molecule nr 0
+Ion_Type1_1	5.980000000	5.780000000	6.065000000	0 # molecule nr 1
+Ion_Type1_2	7.103000000	6.467000000	6.824000000	0 # molecule nr 2
+Ion_Type2_2	9.650000000	6.550000000	6.046000000	0 # molecule nr 3
+Ion_Type1_3	8.814000000	6.529000000	6.514000000	0 # molecule nr 4
+Ion_Type1_4	10.283000000	6.163000000	6.653000000	0 # molecule nr 5
+Ion_Type2_3	12.750000000	6.550000000	6.046000000	0 # molecule nr 6
+Ion_Type1_5	12.181000000	6.385000000	5.292000000	0 # molecule nr 7
+Ion_Type1_6	13.035000000	7.460000000	5.946000000	0 # molecule nr 8
+Ion_Type2_4	6.550000000	9.650000000	6.046000000	0 # molecule nr 9
+Ion_Type1_7	6.571000000	10.422000000	5.479000000	0 # molecule nr 10
+Ion_Type1_8	6.193000000	8.950000000	5.497000000	0 # molecule nr 11
+Ion_Type2_5	9.650000000	9.650000000	6.046000000	0 # molecule nr 12
+Ion_Type1_9	9.430000000	9.454000000	6.958000000	0 # molecule nr 13
+Ion_Type1_10	10.521000000	9.272000000	5.916000000	0 # molecule nr 14
+Ion_Type2_6	12.750000000	9.650000000	6.046000000	0 # molecule nr 15
+Ion_Type1_11	12.266000000	10.237000000	5.463000000	0 # molecule nr 16
+Ion_Type1_12	12.900000000	8.857000000	5.529000000	0 # molecule nr 17
+Ion_Type2_7	6.550000000	12.750000000	6.046000000	0 # molecule nr 18
+Ion_Type1_13	5.834000000	12.713000000	6.682000000	0 # molecule nr 19
+Ion_Type1_14	7.308000000	13.058000000	6.546000000	0 # molecule nr 20
+Ion_Type2_8	9.650000000	12.750000000	6.046000000	0 # molecule nr 21
+Ion_Type1_15	9.141000000	12.027000000	5.676000000	0 # molecule nr 22
+Ion_Type1_16	9.228000000	13.544000000	5.715000000	0 # molecule nr 23
+Ion_Type2_9	12.750000000	12.750000000	6.046000000	0 # molecule nr 24
+Ion_Type1_17	12.928000000	13.649000000	5.764000000	0 # molecule nr 25
+Ion_Type1_18	12.122000000	12.410000000	5.407000000	0 # molecule nr 26
+Ion_Type2_10	6.550000000	6.550000000	9.146000000	0 # molecule nr 27
+Ion_Type1_19	6.149000000	5.713000000	8.906000000	0 # molecule nr 28
+Ion_Type1_20	5.938000000	6.948000000	9.766000000	0 # molecule nr 29
+Ion_Type2_11	9.650000000	6.550000000	9.146000000	0 # molecule nr 30
+Ion_Type1_21	9.612000000	5.833000000	9.781000000	0 # molecule nr 31
+Ion_Type1_22	9.776000000	7.340000000	9.673000000	0 # molecule nr 32
+Ion_Type2_12	12.750000000	6.550000000	9.146000000	0 # molecule nr 33
+Ion_Type1_23	12.734000000	7.473000000	9.403000000	0 # molecule nr 34
+Ion_Type1_24	12.410000000	6.076000000	9.907000000	0 # molecule nr 35
+Ion_Type2_13	6.550000000	9.650000000	9.146000000	0 # molecule nr 36
+Ion_Type1_25	6.335000000	10.319000000	9.798000000	0 # molecule nr 37
+Ion_Type1_26	6.060000000	8.873000000	9.419000000	0 # molecule nr 38
+Ion_Type2_14	6.550000000	12.750000000	9.146000000	0 # molecule nr 39
+Ion_Type1_27	7.136000000	12.026000000	9.369000000	0 # molecule nr 40
+Ion_Type1_28	5.738000000	12.330000000	8.859000000	0 # molecule nr 41
+Ion_Type2_15	12.750000000	12.750000000	9.146000000	0 # molecule nr 42
+Ion_Type1_29	12.976000000	12.419000000	10.017000000	0 # molecule nr 43
+Ion_Type1_30	13.592000000	12.883000000	8.707000000	0 # molecule nr 44
+Ion_Type2_16	6.550000000	6.550000000	12.246000000	0 # molecule nr 45
+Ion_Type1_31	6.754000000	7.229000000	11.601000000	0 # molecule nr 46
+Ion_Type1_32	5.898000000	6.947000000	12.825000000	0 # molecule nr 47
+Ion_Type2_17	9.650000000	6.550000000	12.246000000	0 # molecule nr 48
+Ion_Type1_33	10.034000000	5.710000000	12.503000000	0 # molecule nr 49
+Ion_Type1_34	10.067000000	7.197000000	12.817000000	0 # molecule nr 50
+Ion_Type2_18	12.750000000	6.550000000	12.246000000	0 # molecule nr 51
+Ion_Type1_35	13.278000000	7.331000000	12.418000000	0 # molecule nr 52
+Ion_Type1_36	12.248000000	6.410000000	13.050000000	0 # molecule nr 53
+Ion_Type2_19	6.550000000	9.650000000	12.246000000	0 # molecule nr 54
+Ion_Type1_37	5.991000000	9.021000000	12.705000000	0 # molecule nr 55
+Ion_Type1_38	7.382000000	9.632000000	12.721000000	0 # molecule nr 56
+Ion_Type2_20	6.550000000	12.750000000	12.246000000	0 # molecule nr 57
+Ion_Type1_39	7.129000000	12.071000000	12.596000000	0 # molecule nr 58
+Ion_Type1_40	6.945000000	13.005000000	11.411000000	0 # molecule nr 59
+Ion_Type2_21	9.650000000	12.750000000	12.246000000	0 # molecule nr 60
+Ion_Type1_41	9.105000000	12.539000000	13.005000000	0 # molecule nr 61
+Ion_Type1_42	10.474000000	13.071000000	12.615000000	0 # molecule nr 62
+Ion_Type2_22	12.750000000	12.750000000	12.246000000	0 # molecule nr 63
+Ion_Type1_43	12.127000000	12.133000000	12.633000000	0 # molecule nr 64
+Ion_Type1_44	13.614000000	12.395000000	12.461000000	0 # molecule nr 65
+Ion_Type2_23	6.550000000	6.550000000	15.346000000	0 # molecule nr 66
+Ion_Type1_45	5.730000000	6.420000000	14.868000000	0 # molecule nr 67
+Ion_Type1_46	7.240000000	6.388000000	14.701000000	0 # molecule nr 68
+Ion_Type2_24	9.650000000	6.550000000	15.346000000	0 # molecule nr 69
+Ion_Type1_47	9.006000000	6.245000000	15.987000000	0 # molecule nr 70
+Ion_Type1_48	10.406000000	6.824000000	15.867000000	0 # molecule nr 71
+Ion_Type2_25	12.750000000	6.550000000	15.346000000	0 # molecule nr 72
+Ion_Type1_49	13.193000000	5.783000000	15.712000000	0 # molecule nr 73
+Ion_Type1_50	13.441000000	7.205000000	15.238000000	0 # molecule nr 74
+Ion_Type2_26	6.550000000	9.650000000	15.346000000	0 # molecule nr 75
+Ion_Type1_51	6.265000000	10.284000000	14.687000000	0 # molecule nr 76
+Ion_Type1_52	7.444000000	9.416000000	15.093000000	0 # molecule nr 77
+Ion_Type2_27	9.650000000	9.650000000	15.346000000	0 # molecule nr 78
+Ion_Type1_53	10.379000000	9.444000000	15.933000000	0 # molecule nr 79
+Ion_Type1_54	8.933000000	9.912000000	15.926000000	0 # molecule nr 80
+Ion_Type2_28	12.750000000	9.650000000	15.346000000	0 # molecule nr 81
+Ion_Type1_55	13.611000000	9.476000000	15.728000000	0 # molecule nr 82
+Ion_Type1_56	12.123000000	9.305000000	15.984000000	0 # molecule nr 83
+Ion_Type2_29	6.550000000	12.750000000	15.346000000	0 # molecule nr 84
+Ion_Type1_57	6.187000000	11.882000000	15.165000000	0 # molecule nr 85
+Ion_Type1_58	7.500000000	12.638000000	15.286000000	0 # molecule nr 86
+Ion_Type2_30	9.650000000	12.750000000	15.346000000	0 # molecule nr 87
+Ion_Type1_59	9.750000000	13.494000000	14.751000000	0 # molecule nr 88
+Ion_Type1_60	9.283000000	12.049000000	14.805000000	0 # molecule nr 89
+Ion_Type2_31	12.750000000	12.750000000	15.346000000	0 # molecule nr 90
+Ion_Type1_61	13.468000000	13.235000000	15.756000000	0 # molecule nr 91
+Ion_Type1_62	12.276000000	12.347000000	16.075000000	0 # molecule nr 92
Index: tests/regression/Analysis/2/post/bin_output-10.csv
===================================================================
--- tests/regression/Analysis/2/post/bin_output-10.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/2/post/bin_output-10.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,26 @@
+BinStart	Count
+0.5	62
+2	24
+2.5	63
+3	57
+3.5	121
+4	77
+4.5	81
+5	82
+5.5	74
+6	127
+6.5	168
+7	154
+7.5	152
+8	94
+8.5	105
+9	97
+9.5	100
+10	98
+10.5	64
+11	40
+11.5	47
+12	24
+12.5	6
+13	2
+13.5	3
Index: tests/regression/Analysis/2/post/bin_output-20.csv
===================================================================
--- tests/regression/Analysis/2/post/bin_output-20.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/2/post/bin_output-20.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,39 @@
+BinStart	Count
+0.5	62
+2	24
+2.5	63
+3	57
+3.5	121
+4	77
+4.5	81
+5	82
+5.5	74
+6	127
+6.5	168
+7	154
+7.5	152
+8	94
+8.5	105
+9	97
+9.5	100
+10	98
+10.5	64
+11	40
+11.5	47
+12	24
+12.5	6
+13	2
+13.5	3
+14	0
+14.5	0
+15	0
+15.5	0
+16	0
+16.5	0
+17	0
+17.5	0
+18	0
+18.5	0
+19	0
+19.5	0
+20	0
Index: tests/regression/Analysis/2/post/bin_output-5.csv
===================================================================
--- tests/regression/Analysis/2/post/bin_output-5.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/2/post/bin_output-5.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,29 @@
+BinStart	Count
+0	0
+0.5	62
+1	0
+1.5	0
+2	24
+2.5	63
+3	57
+3.5	121
+4	77
+4.5	81
+5	82
+5.5	74
+6	127
+6.5	168
+7	154
+7.5	152
+8	94
+8.5	105
+9	97
+9.5	100
+10	98
+10.5	64
+11	40
+11.5	47
+12	24
+12.5	6
+13	2
+13.5	3
Index: tests/regression/Analysis/2/pre/test.conf
===================================================================
--- tests/regression/Analysis/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,165 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	62	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	31	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	6.550000000	6.550000000	6.046000000	0 # molecule nr 0
+Ion_Type1_1	5.980000000	5.780000000	6.065000000	0 # molecule nr 1
+Ion_Type1_2	7.103000000	6.467000000	6.824000000	0 # molecule nr 2
+Ion_Type2_2	9.650000000	6.550000000	6.046000000	0 # molecule nr 3
+Ion_Type1_3	8.814000000	6.529000000	6.514000000	0 # molecule nr 4
+Ion_Type1_4	10.283000000	6.163000000	6.653000000	0 # molecule nr 5
+Ion_Type2_3	12.750000000	6.550000000	6.046000000	0 # molecule nr 6
+Ion_Type1_5	12.181000000	6.385000000	5.292000000	0 # molecule nr 7
+Ion_Type1_6	13.035000000	7.460000000	5.946000000	0 # molecule nr 8
+Ion_Type2_4	6.550000000	9.650000000	6.046000000	0 # molecule nr 9
+Ion_Type1_7	6.571000000	10.422000000	5.479000000	0 # molecule nr 10
+Ion_Type1_8	6.193000000	8.950000000	5.497000000	0 # molecule nr 11
+Ion_Type2_5	9.650000000	9.650000000	6.046000000	0 # molecule nr 12
+Ion_Type1_9	9.430000000	9.454000000	6.958000000	0 # molecule nr 13
+Ion_Type1_10	10.521000000	9.272000000	5.916000000	0 # molecule nr 14
+Ion_Type2_6	12.750000000	9.650000000	6.046000000	0 # molecule nr 15
+Ion_Type1_11	12.266000000	10.237000000	5.463000000	0 # molecule nr 16
+Ion_Type1_12	12.900000000	8.857000000	5.529000000	0 # molecule nr 17
+Ion_Type2_7	6.550000000	12.750000000	6.046000000	0 # molecule nr 18
+Ion_Type1_13	5.834000000	12.713000000	6.682000000	0 # molecule nr 19
+Ion_Type1_14	7.308000000	13.058000000	6.546000000	0 # molecule nr 20
+Ion_Type2_8	9.650000000	12.750000000	6.046000000	0 # molecule nr 21
+Ion_Type1_15	9.141000000	12.027000000	5.676000000	0 # molecule nr 22
+Ion_Type1_16	9.228000000	13.544000000	5.715000000	0 # molecule nr 23
+Ion_Type2_9	12.750000000	12.750000000	6.046000000	0 # molecule nr 24
+Ion_Type1_17	12.928000000	13.649000000	5.764000000	0 # molecule nr 25
+Ion_Type1_18	12.122000000	12.410000000	5.407000000	0 # molecule nr 26
+Ion_Type2_10	6.550000000	6.550000000	9.146000000	0 # molecule nr 27
+Ion_Type1_19	6.149000000	5.713000000	8.906000000	0 # molecule nr 28
+Ion_Type1_20	5.938000000	6.948000000	9.766000000	0 # molecule nr 29
+Ion_Type2_11	9.650000000	6.550000000	9.146000000	0 # molecule nr 30
+Ion_Type1_21	9.612000000	5.833000000	9.781000000	0 # molecule nr 31
+Ion_Type1_22	9.776000000	7.340000000	9.673000000	0 # molecule nr 32
+Ion_Type2_12	12.750000000	6.550000000	9.146000000	0 # molecule nr 33
+Ion_Type1_23	12.734000000	7.473000000	9.403000000	0 # molecule nr 34
+Ion_Type1_24	12.410000000	6.076000000	9.907000000	0 # molecule nr 35
+Ion_Type2_13	6.550000000	9.650000000	9.146000000	0 # molecule nr 36
+Ion_Type1_25	6.335000000	10.319000000	9.798000000	0 # molecule nr 37
+Ion_Type1_26	6.060000000	8.873000000	9.419000000	0 # molecule nr 38
+Ion_Type2_14	6.550000000	12.750000000	9.146000000	0 # molecule nr 39
+Ion_Type1_27	7.136000000	12.026000000	9.369000000	0 # molecule nr 40
+Ion_Type1_28	5.738000000	12.330000000	8.859000000	0 # molecule nr 41
+Ion_Type2_15	12.750000000	12.750000000	9.146000000	0 # molecule nr 42
+Ion_Type1_29	12.976000000	12.419000000	10.017000000	0 # molecule nr 43
+Ion_Type1_30	13.592000000	12.883000000	8.707000000	0 # molecule nr 44
+Ion_Type2_16	6.550000000	6.550000000	12.246000000	0 # molecule nr 45
+Ion_Type1_31	6.754000000	7.229000000	11.601000000	0 # molecule nr 46
+Ion_Type1_32	5.898000000	6.947000000	12.825000000	0 # molecule nr 47
+Ion_Type2_17	9.650000000	6.550000000	12.246000000	0 # molecule nr 48
+Ion_Type1_33	10.034000000	5.710000000	12.503000000	0 # molecule nr 49
+Ion_Type1_34	10.067000000	7.197000000	12.817000000	0 # molecule nr 50
+Ion_Type2_18	12.750000000	6.550000000	12.246000000	0 # molecule nr 51
+Ion_Type1_35	13.278000000	7.331000000	12.418000000	0 # molecule nr 52
+Ion_Type1_36	12.248000000	6.410000000	13.050000000	0 # molecule nr 53
+Ion_Type2_19	6.550000000	9.650000000	12.246000000	0 # molecule nr 54
+Ion_Type1_37	5.991000000	9.021000000	12.705000000	0 # molecule nr 55
+Ion_Type1_38	7.382000000	9.632000000	12.721000000	0 # molecule nr 56
+Ion_Type2_20	6.550000000	12.750000000	12.246000000	0 # molecule nr 57
+Ion_Type1_39	7.129000000	12.071000000	12.596000000	0 # molecule nr 58
+Ion_Type1_40	6.945000000	13.005000000	11.411000000	0 # molecule nr 59
+Ion_Type2_21	9.650000000	12.750000000	12.246000000	0 # molecule nr 60
+Ion_Type1_41	9.105000000	12.539000000	13.005000000	0 # molecule nr 61
+Ion_Type1_42	10.474000000	13.071000000	12.615000000	0 # molecule nr 62
+Ion_Type2_22	12.750000000	12.750000000	12.246000000	0 # molecule nr 63
+Ion_Type1_43	12.127000000	12.133000000	12.633000000	0 # molecule nr 64
+Ion_Type1_44	13.614000000	12.395000000	12.461000000	0 # molecule nr 65
+Ion_Type2_23	6.550000000	6.550000000	15.346000000	0 # molecule nr 66
+Ion_Type1_45	5.730000000	6.420000000	14.868000000	0 # molecule nr 67
+Ion_Type1_46	7.240000000	6.388000000	14.701000000	0 # molecule nr 68
+Ion_Type2_24	9.650000000	6.550000000	15.346000000	0 # molecule nr 69
+Ion_Type1_47	9.006000000	6.245000000	15.987000000	0 # molecule nr 70
+Ion_Type1_48	10.406000000	6.824000000	15.867000000	0 # molecule nr 71
+Ion_Type2_25	12.750000000	6.550000000	15.346000000	0 # molecule nr 72
+Ion_Type1_49	13.193000000	5.783000000	15.712000000	0 # molecule nr 73
+Ion_Type1_50	13.441000000	7.205000000	15.238000000	0 # molecule nr 74
+Ion_Type2_26	6.550000000	9.650000000	15.346000000	0 # molecule nr 75
+Ion_Type1_51	6.265000000	10.284000000	14.687000000	0 # molecule nr 76
+Ion_Type1_52	7.444000000	9.416000000	15.093000000	0 # molecule nr 77
+Ion_Type2_27	9.650000000	9.650000000	15.346000000	0 # molecule nr 78
+Ion_Type1_53	10.379000000	9.444000000	15.933000000	0 # molecule nr 79
+Ion_Type1_54	8.933000000	9.912000000	15.926000000	0 # molecule nr 80
+Ion_Type2_28	12.750000000	9.650000000	15.346000000	0 # molecule nr 81
+Ion_Type1_55	13.611000000	9.476000000	15.728000000	0 # molecule nr 82
+Ion_Type1_56	12.123000000	9.305000000	15.984000000	0 # molecule nr 83
+Ion_Type2_29	6.550000000	12.750000000	15.346000000	0 # molecule nr 84
+Ion_Type1_57	6.187000000	11.882000000	15.165000000	0 # molecule nr 85
+Ion_Type1_58	7.500000000	12.638000000	15.286000000	0 # molecule nr 86
+Ion_Type2_30	9.650000000	12.750000000	15.346000000	0 # molecule nr 87
+Ion_Type1_59	9.750000000	13.494000000	14.751000000	0 # molecule nr 88
+Ion_Type1_60	9.283000000	12.049000000	14.805000000	0 # molecule nr 89
+Ion_Type2_31	12.750000000	12.750000000	15.346000000	0 # molecule nr 90
+Ion_Type1_61	13.468000000	13.235000000	15.756000000	0 # molecule nr 91
+Ion_Type1_62	12.276000000	12.347000000	16.075000000	0 # molecule nr 92
Index: tests/regression/Analysis/3/post/bin_output.csv
===================================================================
--- tests/regression/Analysis/3/post/bin_output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/3/post/bin_output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,42 @@
+BinStart	Count
+0	0
+0.5	0
+1	0
+1.5	0
+2	0
+2.5	0
+3	0
+3.5	0
+4	0
+4.5	0
+5	3
+5.5	2
+6	3
+6.5	6
+7	2
+7.5	5
+8	4
+8.5	5
+9	9
+9.5	9
+10	5
+10.5	7
+11	1
+11.5	1
+12	0
+12.5	0
+13	0
+13.5	0
+14	0
+14.5	0
+15	0
+15.5	0
+16	0
+16.5	0
+17	0
+17.5	0
+18	0
+18.5	0
+19	0
+19.5	0
+20	0
Index: tests/regression/Analysis/3/pre/test.conf
===================================================================
--- tests/regression/Analysis/3/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/3/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,165 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	62	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	31	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	6.550000000	6.550000000	6.046000000	0 # molecule nr 0
+Ion_Type1_1	5.980000000	5.780000000	6.065000000	0 # molecule nr 1
+Ion_Type1_2	7.103000000	6.467000000	6.824000000	0 # molecule nr 2
+Ion_Type2_2	9.650000000	6.550000000	6.046000000	0 # molecule nr 3
+Ion_Type1_3	8.814000000	6.529000000	6.514000000	0 # molecule nr 4
+Ion_Type1_4	10.283000000	6.163000000	6.653000000	0 # molecule nr 5
+Ion_Type2_3	12.750000000	6.550000000	6.046000000	0 # molecule nr 6
+Ion_Type1_5	12.181000000	6.385000000	5.292000000	0 # molecule nr 7
+Ion_Type1_6	13.035000000	7.460000000	5.946000000	0 # molecule nr 8
+Ion_Type2_4	6.550000000	9.650000000	6.046000000	0 # molecule nr 9
+Ion_Type1_7	6.571000000	10.422000000	5.479000000	0 # molecule nr 10
+Ion_Type1_8	6.193000000	8.950000000	5.497000000	0 # molecule nr 11
+Ion_Type2_5	9.650000000	9.650000000	6.046000000	0 # molecule nr 12
+Ion_Type1_9	9.430000000	9.454000000	6.958000000	0 # molecule nr 13
+Ion_Type1_10	10.521000000	9.272000000	5.916000000	0 # molecule nr 14
+Ion_Type2_6	12.750000000	9.650000000	6.046000000	0 # molecule nr 15
+Ion_Type1_11	12.266000000	10.237000000	5.463000000	0 # molecule nr 16
+Ion_Type1_12	12.900000000	8.857000000	5.529000000	0 # molecule nr 17
+Ion_Type2_7	6.550000000	12.750000000	6.046000000	0 # molecule nr 18
+Ion_Type1_13	5.834000000	12.713000000	6.682000000	0 # molecule nr 19
+Ion_Type1_14	7.308000000	13.058000000	6.546000000	0 # molecule nr 20
+Ion_Type2_8	9.650000000	12.750000000	6.046000000	0 # molecule nr 21
+Ion_Type1_15	9.141000000	12.027000000	5.676000000	0 # molecule nr 22
+Ion_Type1_16	9.228000000	13.544000000	5.715000000	0 # molecule nr 23
+Ion_Type2_9	12.750000000	12.750000000	6.046000000	0 # molecule nr 24
+Ion_Type1_17	12.928000000	13.649000000	5.764000000	0 # molecule nr 25
+Ion_Type1_18	12.122000000	12.410000000	5.407000000	0 # molecule nr 26
+Ion_Type2_10	6.550000000	6.550000000	9.146000000	0 # molecule nr 27
+Ion_Type1_19	6.149000000	5.713000000	8.906000000	0 # molecule nr 28
+Ion_Type1_20	5.938000000	6.948000000	9.766000000	0 # molecule nr 29
+Ion_Type2_11	9.650000000	6.550000000	9.146000000	0 # molecule nr 30
+Ion_Type1_21	9.612000000	5.833000000	9.781000000	0 # molecule nr 31
+Ion_Type1_22	9.776000000	7.340000000	9.673000000	0 # molecule nr 32
+Ion_Type2_12	12.750000000	6.550000000	9.146000000	0 # molecule nr 33
+Ion_Type1_23	12.734000000	7.473000000	9.403000000	0 # molecule nr 34
+Ion_Type1_24	12.410000000	6.076000000	9.907000000	0 # molecule nr 35
+Ion_Type2_13	6.550000000	9.650000000	9.146000000	0 # molecule nr 36
+Ion_Type1_25	6.335000000	10.319000000	9.798000000	0 # molecule nr 37
+Ion_Type1_26	6.060000000	8.873000000	9.419000000	0 # molecule nr 38
+Ion_Type2_14	6.550000000	12.750000000	9.146000000	0 # molecule nr 39
+Ion_Type1_27	7.136000000	12.026000000	9.369000000	0 # molecule nr 40
+Ion_Type1_28	5.738000000	12.330000000	8.859000000	0 # molecule nr 41
+Ion_Type2_15	12.750000000	12.750000000	9.146000000	0 # molecule nr 42
+Ion_Type1_29	12.976000000	12.419000000	10.017000000	0 # molecule nr 43
+Ion_Type1_30	13.592000000	12.883000000	8.707000000	0 # molecule nr 44
+Ion_Type2_16	6.550000000	6.550000000	12.246000000	0 # molecule nr 45
+Ion_Type1_31	6.754000000	7.229000000	11.601000000	0 # molecule nr 46
+Ion_Type1_32	5.898000000	6.947000000	12.825000000	0 # molecule nr 47
+Ion_Type2_17	9.650000000	6.550000000	12.246000000	0 # molecule nr 48
+Ion_Type1_33	10.034000000	5.710000000	12.503000000	0 # molecule nr 49
+Ion_Type1_34	10.067000000	7.197000000	12.817000000	0 # molecule nr 50
+Ion_Type2_18	12.750000000	6.550000000	12.246000000	0 # molecule nr 51
+Ion_Type1_35	13.278000000	7.331000000	12.418000000	0 # molecule nr 52
+Ion_Type1_36	12.248000000	6.410000000	13.050000000	0 # molecule nr 53
+Ion_Type2_19	6.550000000	9.650000000	12.246000000	0 # molecule nr 54
+Ion_Type1_37	5.991000000	9.021000000	12.705000000	0 # molecule nr 55
+Ion_Type1_38	7.382000000	9.632000000	12.721000000	0 # molecule nr 56
+Ion_Type2_20	6.550000000	12.750000000	12.246000000	0 # molecule nr 57
+Ion_Type1_39	7.129000000	12.071000000	12.596000000	0 # molecule nr 58
+Ion_Type1_40	6.945000000	13.005000000	11.411000000	0 # molecule nr 59
+Ion_Type2_21	9.650000000	12.750000000	12.246000000	0 # molecule nr 60
+Ion_Type1_41	9.105000000	12.539000000	13.005000000	0 # molecule nr 61
+Ion_Type1_42	10.474000000	13.071000000	12.615000000	0 # molecule nr 62
+Ion_Type2_22	12.750000000	12.750000000	12.246000000	0 # molecule nr 63
+Ion_Type1_43	12.127000000	12.133000000	12.633000000	0 # molecule nr 64
+Ion_Type1_44	13.614000000	12.395000000	12.461000000	0 # molecule nr 65
+Ion_Type2_23	6.550000000	6.550000000	15.346000000	0 # molecule nr 66
+Ion_Type1_45	5.730000000	6.420000000	14.868000000	0 # molecule nr 67
+Ion_Type1_46	7.240000000	6.388000000	14.701000000	0 # molecule nr 68
+Ion_Type2_24	9.650000000	6.550000000	15.346000000	0 # molecule nr 69
+Ion_Type1_47	9.006000000	6.245000000	15.987000000	0 # molecule nr 70
+Ion_Type1_48	10.406000000	6.824000000	15.867000000	0 # molecule nr 71
+Ion_Type2_25	12.750000000	6.550000000	15.346000000	0 # molecule nr 72
+Ion_Type1_49	13.193000000	5.783000000	15.712000000	0 # molecule nr 73
+Ion_Type1_50	13.441000000	7.205000000	15.238000000	0 # molecule nr 74
+Ion_Type2_26	6.550000000	9.650000000	15.346000000	0 # molecule nr 75
+Ion_Type1_51	6.265000000	10.284000000	14.687000000	0 # molecule nr 76
+Ion_Type1_52	7.444000000	9.416000000	15.093000000	0 # molecule nr 77
+Ion_Type2_27	9.650000000	9.650000000	15.346000000	0 # molecule nr 78
+Ion_Type1_53	10.379000000	9.444000000	15.933000000	0 # molecule nr 79
+Ion_Type1_54	8.933000000	9.912000000	15.926000000	0 # molecule nr 80
+Ion_Type2_28	12.750000000	9.650000000	15.346000000	0 # molecule nr 81
+Ion_Type1_55	13.611000000	9.476000000	15.728000000	0 # molecule nr 82
+Ion_Type1_56	12.123000000	9.305000000	15.984000000	0 # molecule nr 83
+Ion_Type2_29	6.550000000	12.750000000	15.346000000	0 # molecule nr 84
+Ion_Type1_57	6.187000000	11.882000000	15.165000000	0 # molecule nr 85
+Ion_Type1_58	7.500000000	12.638000000	15.286000000	0 # molecule nr 86
+Ion_Type2_30	9.650000000	12.750000000	15.346000000	0 # molecule nr 87
+Ion_Type1_59	9.750000000	13.494000000	14.751000000	0 # molecule nr 88
+Ion_Type1_60	9.283000000	12.049000000	14.805000000	0 # molecule nr 89
+Ion_Type2_31	12.750000000	12.750000000	15.346000000	0 # molecule nr 90
+Ion_Type1_61	13.468000000	13.235000000	15.756000000	0 # molecule nr 91
+Ion_Type1_62	12.276000000	12.347000000	16.075000000	0 # molecule nr 92
Index: tests/regression/Analysis/4/post/bin_output.csv
===================================================================
--- tests/regression/Analysis/4/post/bin_output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/4/post/bin_output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,22 @@
+BinStart	Count
+0	0
+1	0
+2	5
+3	19
+4	29
+5	38
+6	59
+7	58
+8	43
+9	42
+10	48
+11	32
+12	18
+13	13
+14	4
+15	2
+16	0
+17	0
+18	0
+19	0
+20	0
Index: tests/regression/Analysis/4/post/output.csv
===================================================================
--- tests/regression/Analysis/4/post/output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/4/post/output.csv	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,411 @@
+BinStart	Triangle
+2.1615101	[H236|(8.6850559,8.1733259,10.850813)]	[11|H9,H10,H11]
+2.4065182	[H328|(11.038056,8.1673259,13.076813)]	[9|H4,H5,H11]
+2.4830003	[H347|(11.674056,10.949326,13.366813)]	[6|H5,H8,H11]
+2.5845795	[H332|(13.742056,8.4173259,13.282813)]	[5|H5,H6,H8]
+2.7660132	[H346|(10.159056,10.824326,13.352813)]	[6|H5,H8,H11]
+3.0544821	[H247|(16.783056,10.073326,11.247813)]	[0|H4,H6,H7]
+3.0766911	[H260|(13.453056,13.979326,10.064813)]	[3|H6,H7,H8]
+3.1563175	[H238|(16.418056,8.3763259,10.561813)]	[5|H5,H6,H8]
+3.2720788	[H365|(11.316056,13.560326,13.181813)]	[3|H6,H7,H8]
+3.5237829	[H235|(7.8440559,7.0973259,11.517813)]	[11|H9,H10,H11]
+3.5338413	[H142|(8.2870559,6.9513259,7.6468131)]	[1|H4,H7,H10]
+3.5499604	[H331|(14.408056,7.0613259,13.446813)]	[5|H5,H6,H8]
+3.6394421	[H248|(17.116056,11.525326,11.550813)]	[0|H4,H6,H7]
+3.6406699	[H257|(8.0500559,13.287326,11.463813)]	[4|H7,H8,H9]
+3.6877615	[H329|(10.670056,6.8663259,13.772813)]	[9|H4,H5,H11]
+3.7836271	[H170|(13.229056,14.523326,7.6518131)]	[0|H4,H6,H7]
+3.7944745	[H127|(10.577056,5.4943259,8.1188131)]	[1|H4,H7,H10]
+3.7970448	[H220|(10.694056,5.4013259,11.433813)]	[9|H4,H5,H11]
+3.8058945	[H167|(10.662056,14.095326,6.8258131)]	[0|H4,H6,H7]
+3.80928	[H166|(11.010056,14.867326,8.0888131)]	[0|H4,H6,H7]
+3.8924476	[H344|(8.6960559,11.208326,13.777813)]	[7|H8,H9,H11]
+3.9221077	[H350|(14.091056,10.158326,14.571813)]	[5|H5,H6,H8]
+3.9833108	[H154|(17.481056,10.051326,8.0578131)]	[0|H4,H6,H7]
+3.9938709	[H55|(11.090056,11.636326,5.2018131)]	[1|H4,H7,H10]
+4.0103298	[H259|(14.819056,14.416326,10.568813)]	[5|H5,H6,H8]
+4.0588232	[H223|(13.430056,5.1493259,11.441813)]	[5|H5,H6,H8]
+4.0967455	[H164|(8.6790559,13.674326,7.4708131)]	[2|H7,H9,H10]
+4.1548902	[H146|(16.710056,8.3903259,7.1248131)]	[8|H4,H5,H6]
+4.164366	[H59|(14.204056,11.334326,5.4648131)]	[0|H4,H6,H7]
+4.1737233	[H143|(6.9360559,7.5263259,8.0408131)]	[11|H9,H10,H11]
+4.18155	[H349|(14.631056,11.542326,14.250813)]	[5|H5,H6,H8]
+4.2066788	[H352|(16.365056,11.149326,13.407813)]	[5|H5,H6,H8]
+4.387257	[H325|(7.2130559,8.4003259,13.527813)]	[11|H9,H10,H11]
+4.4568153	[H58|(13.086056,10.640326,4.7038131)]	[0|H4,H6,H7]
+4.4885393	[H155|(17.812056,11.522326,7.8638131)]	[0|H4,H6,H7]
+4.5084456	[H239|(17.915056,8.3013259,10.814813)]	[0|H4,H6,H7]
+4.5545202	[H244|(5.2080559,10.202326,10.380813)]	[11|H9,H10,H11]
+4.5621787	[H169|(14.699056,14.453326,7.2738131)]	[0|H4,H6,H7]
+4.575169	[H35|(8.4080559,8.2793259,5.2028131)]	[1|H4,H7,H10]
+4.5981642	[H313|(13.570056,5.4103259,13.510813)]	[5|H5,H6,H8]
+4.6681477	[H130|(14.510056,5.1773259,7.0948131)]	[0|H4,H6,H7]
+4.6686424	[H310|(10.397056,5.1733259,13.304813)]	[11|H9,H10,H11]
+4.7252218	[H217|(8.3460559,5.0223259,10.125813)]	[11|H9,H10,H11]
+4.7348892	[H263|(17.243056,13.466326,11.643813)]	[0|H4,H6,H7]
+4.7495429	[H364|(11.399056,14.794326,14.064813)]	[3|H6,H7,H8]
+4.7752158	[H77|(13.811056,13.205326,5.1738131)]	[0|H4,H6,H7]
+4.7998026	[H37|(11.766056,7.3423259,4.6608131)]	[1|H4,H7,H10]
+4.8639461	[H172|(17.451056,13.084326,7.8118131)]	[0|H4,H6,H7]
+4.8817614	[H218|(7.4780559,5.4543259,11.296813)]	[11|H9,H10,H11]
+4.9159097	[H343|(7.8780559,10.404326,14.773813)]	[11|H9,H10,H11]
+4.96521	[H256|(7.7780559,14.779326,11.368813)]	[4|H7,H8,H9]
+4.9773397	[H163|(7.2040559,13.586326,7.1148131)]	[11|H9,H10,H11]
+4.9846394	[H173|(16.301056,13.897326,7.2388131)]	[3|H6,H7,H8]
+5.0365163	[H353|(17.799056,10.652326,13.313813)]	[0|H4,H6,H7]
+5.0741964	[H128|(11.103056,4.1203259,8.4988131)]	[1|H4,H7,H10]
+5.1049636	[H368|(14.540056,13.549326,14.618813)]	[3|H6,H7,H8]
+5.1440173	[H40|(13.569056,8.3753259,4.0388131)]	[0|H4,H6,H7]
+5.1751338	[H145|(17.466056,7.0733259,7.1998131)]	[0|H4,H6,H7]
+5.1827993	[H326|(7.6090559,7.8283259,14.878813)]	[11|H9,H10,H11]
+5.1981922	[H221|(11.251056,3.9873259,11.414813)]	[9|H4,H5,H11]
+5.2485612	[H224|(14.564056,4.1373259,11.410813)]	[5|H5,H6,H8]
+5.2569938	[H38|(10.960056,8.3863259,3.9038131)]	[1|H4,H7,H10]
+5.2690702	[H454|(10.867056,10.602326,16.126813)]	[6|H5,H8,H11]
+5.3178359	[H367|(14.261056,14.903326,13.986813)]	[3|H6,H7,H8]
+5.350325	[H73|(10.056056,13.549326,4.6048131)]	[0|H4,H6,H7]
+5.4055287	[H275|(10.874056,16.556326,11.646813)]	[3|H6,H7,H8]
+5.4096876	[H151|(5.0530559,10.092326,7.3138131)]	[11|H9,H10,H11]
+5.4119894	[H56|(10.724056,11.247326,3.7798131)]	[1|H4,H7,H10]
+5.4537056	[H226|(16.343056,4.7833259,11.405813)]	[5|H5,H6,H8]
+5.4554775	[H34|(7.7960559,6.8993259,5.0268131)]	[1|H4,H7,H10]
+5.4606061	[H335|(17.442056,7.0193259,13.460813)]	[5|H5,H6,H8]
+5.4931777	[H232|(5.4030559,7.1253259,10.961813)]	[11|H9,H10,H11]
+5.4998783	[H245|(4.5130559,10.495326,11.699813)]	[11|H9,H10,H11]
+5.5249458	[H314|(14.888056,4.6543259,13.556813)]	[5|H5,H6,H8]
+5.5722366	[H41|(14.453056,7.1393259,4.0818131)]	[0|H4,H6,H7]
+5.6013874	[H277|(13.690056,16.555326,11.579813)]	[3|H6,H7,H8]
+5.619249	[H62|(17.269056,10.237326,5.3388131)]	[0|H4,H6,H7]
+5.6285089	[H131|(13.769056,3.8663259,7.2968131)]	[0|H4,H6,H7]
+5.6446916	[H52|(8.4810559,10.513326,4.0628131)]	[1|H4,H7,H10]
+5.6930833	[H278|(13.539056,16.746326,10.078813)]	[3|H6,H7,H8]
+5.7247711	[H262|(17.521056,14.826326,11.023813)]	[0|H4,H6,H7]
+5.8193625	[H361|(7.4570559,13.320326,14.543813)]	[4|H7,H8,H9]
+5.8623193	[H251|(19.698056,11.677326,10.718813)]	[0|H4,H6,H7]
+5.8690545	[H317|(16.300056,5.0023259,13.551813)]	[5|H5,H6,H8]
+5.9057268	[H437|(11.693056,7.5133259,16.555813)]	[9|H4,H5,H11]
+5.9073214	[H233|(4.5670559,8.1453259,11.716813)]	[11|H9,H10,H11]
+5.9326057	[H152|(4.7100559,11.551326,7.0618131)]	[11|H9,H10,H11]
+5.932697	[H61|(16.256056,10.644326,4.2818131)]	[0|H4,H6,H7]
+5.9531265	[H472|(10.623056,13.765326,16.154813)]	[3|H6,H7,H8]
+5.9706316	[H44|(17.658056,8.1183259,5.3548131)]	[0|H4,H6,H7]
+5.9952609	[H125|(8.1370559,3.8173259,8.0098131)]	[1|H4,H7,H10]
+6.0111481	[H434|(8.4070559,8.1083259,16.368813)]	[11|H9,H10,H11]
+6.0484954	[H439|(14.510056,8.5383259,16.739813)]	[5|H5,H6,H8]
+6.0534324	[H362|(8.2720559,14.602326,14.506813)]	[7|H8,H9,H11]
+6.0538257	[H124|(7.4120559,4.5363259,6.8848131)]	[1|H4,H7,H10]
+6.0597889	[H334|(17.509056,7.7093259,14.812813)]	[5|H5,H6,H8]
+6.0646101	[H139|(4.3870559,7.9123259,8.6358131)]	[11|H9,H10,H11]
+6.1033383	[H386|(14.003056,16.560326,13.136813)]	[3|H6,H7,H8]
+6.10959	[H311|(10.264056,4.2533259,14.507813)]	[11|H9,H10,H11]
+6.1110642	[H250|(20.130056,10.400326,10.016813)]	[0|H4,H6,H7]
+6.1313507	[H133|(17.448056,5.2983259,7.0938131)]	[0|H4,H6,H7]
+6.1432983	[H341|(5.0380559,9.9773259,13.921813)]	[11|H9,H10,H11]
+6.1783979	[H74|(11.080056,14.276326,3.7488131)]	[0|H4,H6,H7]
+6.2286613	[H383|(11.010056,16.300326,14.494813)]	[3|H6,H7,H8]
+6.2288607	[H188|(14.737056,16.780326,8.2948131)]	[0|H4,H6,H7]
+6.2379594	[H158|(20.016056,10.124326,8.3018131)]	[0|H4,H6,H7]
+6.2858123	[H76|(14.438056,13.634326,3.8578131)]	[0|H4,H6,H7]
+6.2869523	[H22|(13.191056,5.0633259,4.3338131)]	[0|H4,H6,H7]
+6.346306	[H272|(8.1570559,16.518326,11.540813)]	[4|H7,H8,H9]
+6.3470367	[H53|(7.3940559,11.572326,4.1328131)]	[2|H7,H9,H10]
+6.3702419	[H308|(8.3440559,3.9203259,13.696813)]	[11|H9,H10,H11]
+6.3932854	[H271|(7.7260559,16.501326,10.083813)]	[4|H7,H8,H9]
+6.4256324	[H455|(10.263056,11.579326,17.122813)]	[6|H5,H8,H11]
+6.438195	[H187|(13.405056,17.509326,8.3468131)]	[0|H4,H6,H7]
+6.4500502	[H382|(11.763056,17.187326,13.516813)]	[3|H6,H7,H8]
+6.4890697	[H340|(4.1200559,10.944326,13.192813)]	[11|H9,H10,H11]
+6.5109579	[H358|(4.9380559,13.274326,13.333813)]	[11|H9,H10,H11]
+6.5176804	[H43|(17.271056,6.8333259,4.6408131)]	[0|H4,H6,H7]
+6.52596	[H184|(10.007056,17.384326,7.6668131)]	[0|H4,H6,H7]
+6.5329131	[H254|(4.9600559,14.839326,10.501813)]	[11|H9,H10,H11]
+6.5644769	[H281|(16.629056,16.430326,10.328813)]	[3|H6,H7,H8]
+6.5912434	[H476|(14.443056,13.220326,16.644813)]	[3|H6,H7,H8]
+6.6296428	[H91|(11.093056,16.137326,4.6388131)]	[0|H4,H6,H7]
+6.6323982	[H185|(11.407056,17.611326,7.1198131)]	[0|H4,H6,H7]
+6.6420678	[H475|(13.846056,14.578326,16.315813)]	[3|H6,H7,H8]
+6.6467837	[H370|(17.205056,14.906326,13.722813)]	[3|H6,H7,H8]
+6.6817938	[H20|(10.147056,4.1113259,4.7518131)]	[1|H4,H7,H10]
+6.6952898	[H227|(17.815056,4.4083259,11.436813)]	[5|H5,H6,H8]
+6.7055675	[H140|(4.4900559,6.8703259,7.5338131)]	[2|H7,H9,H10]
+6.7148143	[H176|(19.810056,13.427326,8.4168131)]	[0|H4,H6,H7]
+6.715563	[H19|(11.666056,4.0893259,4.6988131)]	[1|H4,H7,H10]
+6.7294886	[H70|(8.0470559,13.382326,3.9308131)]	[2|H7,H9,H10]
+6.7312743	[H241|(19.737056,6.9493259,10.764813)]	[0|H4,H6,H7]
+6.7387932	[H190|(16.589056,16.402326,8.1778131)]	[0|H4,H6,H7]
+6.7731586	[H182|(7.2410559,16.498326,8.2498131)]	[2|H7,H9,H10]
+6.7769935	[H274|(10.789056,17.984326,11.131813)]	[3|H6,H7,H8]
+6.7891944	[H307|(6.9070559,4.3623259,13.920813)]	[11|H9,H10,H11]
+6.7940626	[H355|(20.100056,10.855326,12.991813)]	[0|H4,H6,H7]
+6.8205907	[H452|(7.1530559,11.166326,16.410813)]	[7|H8,H9,H11]
+6.8374602	[H134|(17.028056,3.8483259,7.2728131)]	[0|H4,H6,H7]
+6.8539306	[H265|(19.464056,14.532326,10.615813)]	[0|H4,H6,H7]
+6.8576714	[H457|(14.937056,10.906326,17.291813)]	[5|H5,H6,H8]
+6.8863007	[H421|(14.323056,5.4433259,16.557813)]	[5|H5,H6,H8]
+6.8891963	[H371|(17.515056,13.888326,14.808813)]	[0|H4,H6,H7]
+6.9018976	[H95|(13.659056,16.925326,5.5218131)]	[0|H4,H6,H7]
+6.9305971	[H215|(5.5370559,4.4763259,11.287813)]	[11|H9,H10,H11]
+6.9620094	[H149|(19.794056,8.0163259,6.9148131)]	[0|H4,H6,H7]
+6.9644318	[H469|(8.3410559,13.376326,16.518813)]	[4|H7,H8,H9]
+6.9759993	[H473|(10.845056,13.154326,17.528813)]	[3|H6,H7,H8]
+6.978677	[H23|(13.821056,3.7453259,4.7538131)]	[0|H4,H6,H7]
+7.0087284	[H436|(11.247056,8.2153259,17.828813)]	[9|H4,H5,H11]
+7.0139314	[H157|(20.293056,10.517326,6.8598131)]	[0|H4,H6,H7]
+7.0145429	[H458|(13.560056,10.536326,17.816813)]	[5|H5,H6,H8]
+7.0425357	[H253|(3.9190559,14.136326,11.358813)]	[11|H9,H10,H11]
+7.0431978	[H49|(5.1580559,11.711326,4.8048131)]	[11|H9,H10,H11]
+7.0490957	[H160|(4.1950559,14.461326,8.3908131)]	[11|H9,H10,H11]
+7.0638945	[H181|(8.4240559,17.442326,8.3858131)]	[2|H7,H9,H10]
+7.0919587	[H92|(10.501056,17.246326,5.4928131)]	[0|H4,H6,H7]
+7.1257915	[H433|(7.0330559,8.3323259,16.978813)]	[11|H9,H10,H11]
+7.1258241	[H356|(19.712056,10.128326,14.269813)]	[0|H4,H6,H7]
+7.1306704	[H316|(17.446056,4.0323259,13.319813)]	[5|H5,H6,H8]
+7.1474287	[H16|(8.1750559,3.8593259,4.9838131)]	[1|H4,H7,H10]
+7.2069634	[H17|(6.8880559,4.6613259,4.8958131)]	[1|H4,H7,H10]
+7.2070855	[H122|(4.4790559,5.5483259,8.0728131)]	[11|H9,H10,H11]
+7.2221795	[H31|(4.8480559,8.7173259,4.7798131)]	[11|H9,H10,H11]
+7.2222028	[H379|(8.4880559,17.210326,13.276813)]	[3|H6,H7,H8]
+7.238952	[H323|(4.7670559,7.7873259,14.900813)]	[11|H9,H10,H11]
+7.2620249	[H161|(4.5110559,14.397326,6.9058131)]	[11|H9,H10,H11]
+7.273479	[H440|(13.961056,7.8813259,17.995813)]	[5|H5,H6,H8]
+7.3809232	[H451|(7.4290559,10.108326,17.465813)]	[11|H9,H10,H11]
+7.3840521	[H461|(17.250056,11.690326,16.554813)]	[5|H5,H6,H8]
+7.3889559	[H71|(7.5010559,14.773326,4.2078131)]	[2|H7,H9,H10]
+7.4064727	[H460|(17.687056,10.236326,16.623813)]	[5|H5,H6,H8]
+7.4332614	[H88|(8.0470559,16.344326,5.2138131)]	[2|H7,H9,H10]
+7.4336727	[H25|(16.356056,4.7533259,4.0598131)]	[0|H4,H6,H7]
+7.4435549	[H337|(19.646056,7.0203259,13.790813)]	[5|H5,H6,H8]
+7.4681352	[H385|(13.773056,17.965326,13.670813)]	[3|H6,H7,H8]
+7.501124	[H322|(3.7740559,7.7393259,13.750813)]	[11|H9,H10,H11]
+7.5153999	[H65|(19.288056,10.623326,4.6388131)]	[0|H4,H6,H7]
+7.5422046	[H68|(4.5640559,13.380326,5.3788131)]	[11|H9,H10,H11]
+7.5794973	[H389|(16.818056,16.829326,13.065813)]	[5|H5,H6,H8]
+7.5901759	[H80|(17.999056,14.293326,4.8228131)]	[0|H4,H6,H7]
+7.595448	[H94|(13.325056,16.779326,4.0458131)]	[0|H4,H6,H7]
+7.6173579	[H416|(7.5770559,5.5933259,16.882813)]	[11|H9,H10,H11]
+7.6455543	[H359|(4.3880559,14.690326,13.389813)]	[11|H9,H10,H11]
+7.6908225	[H373|(20.242056,13.786326,13.004813)]	[0|H4,H6,H7]
+7.7021985	[H280|(18.028056,16.966326,10.584813)]	[0|H4,H6,H7]
+7.7120414	[H242|(21.073056,7.5373259,11.188813)]	[0|H4,H6,H7]
+7.7145738	[H136|(19.303056,4.6553259,8.0458131)]	[0|H4,H6,H7]
+7.7235718	[H305|(4.3830559,5.4953259,13.566813)]	[11|H9,H10,H11]
+7.7335503	[H191|(17.545056,16.627326,7.0178131)]	[0|H4,H6,H7]
+7.7386598	[H229|(19.473056,4.7263259,10.235813)]	[8|H4,H5,H6]
+7.7471166	[H338|(19.841056,8.2123259,14.713813)]	[5|H5,H6,H8]
+7.7748411	[H415|(7.7540559,4.2543259,16.186813)]	[11|H9,H10,H11]
+7.796633	[H493|(13.645056,16.325326,16.577813)]	[3|H6,H7,H8]
+7.8001317	[H490|(11.610056,16.695326,16.510813)]	[3|H6,H7,H8]
+7.8052824	[H478|(16.806056,14.389326,16.233813)]	[3|H6,H7,H8]
+7.8071737	[H419|(10.511056,5.2893259,17.663813)]	[11|H9,H10,H11]
+7.8099596	[H470|(7.2450559,14.423326,16.412813)]	[4|H7,H8,H9]
+7.8114061	[H64|(20.355056,11.271326,5.5058131)]	[0|H4,H6,H7]
+7.8147489	[H79|(16.943056,14.221326,3.7318131)]	[0|H4,H6,H7]
+7.927931	[H46|(20.207056,8.0933259,5.5488131)]	[8|H4,H5,H6]
+7.9396615	[H304|(4.9350559,4.1303259,13.188813)]	[11|H9,H10,H11]
+7.94345	[H47|(19.348056,8.0073259,4.2978131)]	[0|H4,H6,H7]
+7.9464529	[H431|(4.9130559,8.4083259,16.350813)]	[11|H9,H10,H11]
+7.9529266	[H266|(20.940056,14.320326,10.321813)]	[0|H4,H6,H7]
+7.9564822	[H442|(18.008056,8.1163259,17.081813)]	[5|H5,H6,H8]
+7.9937411	[H148|(21.150056,7.7563259,7.5498131)]	[0|H4,H6,H7]
+8.0004701	[H50|(3.7780559,11.083326,4.7018131)]	[11|H9,H10,H11]
+8.0266289	[H388|(16.358056,16.914326,14.512813)]	[3|H6,H7,H8]
+8.0345157	[H443|(16.769056,7.8873259,17.932813)]	[5|H5,H6,H8]
+8.0992649	[H67|(5.0470559,14.782326,5.0438131)]	[11|H9,H10,H11]
+8.1002245	[H175|(20.698056,14.646326,8.2298131)]	[0|H4,H6,H7]
+8.1430909	[H83|(19.991056,13.269326,5.2498131)]	[0|H4,H6,H7]
+8.1703622	[H293|(10.443056,19.343326,10.883813)]	[3|H6,H7,H8]
+8.2168185	[H214|(4.0320559,4.2893259,11.395813)]	[11|H9,H10,H11]
+8.2364685	[H491|(10.146056,17.101326,16.467813)]	[3|H6,H7,H8]
+8.2859858	[H26|(17.869056,4.6033259,4.0598131)]	[0|H4,H6,H7]
+8.3469013	[H202|(11.157056,19.403326,7.2358131)]	[0|H4,H6,H7]
+8.4053237	[H422|(14.550056,4.6543259,17.836813)]	[5|H5,H6,H8]
+8.4238069	[H320|(19.306056,4.3833259,14.046813)]	[5|H5,H6,H8]
+8.4284697	[H32|(4.2240559,7.7163259,3.8208131)]	[1|H4,H7,H10]
+8.4575926	[H565|(13.728056,10.738326,19.238813)]	[5|H5,H6,H8]
+8.4582689	[H121|(3.9300559,4.1423259,7.8878131)]	[1|H4,H7,H10]
+8.4685863	[H418|(11.288056,3.9853259,17.588813)]	[9|H4,H5,H11]
+8.5010813	[H479|(17.963056,13.598326,16.821813)]	[3|H6,H7,H8]
+8.5163214	[H268|(5.4100559,17.656326,11.156813)]	[11|H9,H10,H11]
+8.5276443	[H206|(14.363056,19.308326,7.5458131)]	[0|H4,H6,H7]
+8.5439891	[H14|(5.3420559,4.8663259,3.9458131)]	[1|H4,H7,H10]
+8.5742403	[H380|(7.7090559,17.934326,14.363813)]	[3|H6,H7,H8]
+8.5850826	[H548|(13.950056,7.4293259,19.252813)]	[5|H5,H6,H8]
+8.5935829	[H448|(4.0150559,10.812326,16.389813)]	[11|H9,H10,H11]
+8.6105026	[H179|(4.3700559,16.481326,7.0768131)]	[11|H9,H10,H11]
+8.6245531	[H374|(20.853056,13.384326,14.337813)]	[0|H4,H6,H7]
+8.6534475	[H292|(11.792056,19.953326,10.537813)]	[3|H6,H7,H8]
+8.6908677	[H464|(19.569056,10.247326,16.716813)]	[5|H5,H6,H8]
+8.7145672	[H319|(20.244056,5.5343259,14.374813)]	[5|H5,H6,H8]
+8.7181588	[H89|(7.4700559,17.750326,5.2348131)]	[2|H7,H9,H10]
+8.7254515	[H377|(4.8690559,17.000326,13.001813)]	[11|H9,H10,H11]
+8.7261079	[H137|(20.727056,4.8783259,8.5268131)]	[0|H4,H6,H7]
+8.7416578	[H283|(19.295056,17.314326,10.992813)]	[0|H4,H6,H7]
+8.7530818	[H430|(4.3460559,7.0183259,16.587813)]	[11|H9,H10,H11]
+8.7574532	[H494|(14.164056,17.737326,16.364813)]	[3|H6,H7,H8]
+8.7678582	[H203|(10.224056,19.876326,8.3388131)]	[0|H4,H6,H7]
+8.8844107	[H541|(8.3110559,8.1113259,19.395813)]	[11|H9,H10,H11]
+8.8882972	[H545|(11.155056,8.6203259,19.755813)]	[9|H4,H5,H11]
+8.9033862	[H544|(10.178056,7.4643259,19.612813)]	[11|H9,H10,H11]
+8.9152373	[H559|(7.8230559,10.655326,19.211813)]	[11|H9,H10,H11]
+8.933593	[H193|(20.164056,16.759326,8.6468131)]	[0|H4,H6,H7]
+8.991589	[H400|(10.153056,19.688326,13.623813)]	[3|H6,H7,H8]
+8.996518	[H445|(20.173056,7.3583259,16.182813)]	[5|H5,H6,H8]
+9.006188	[H230|(20.991056,4.6773259,10.285813)]	[8|H4,H5,H6]
+9.0505714	[H401|(11.599056,20.019326,13.294813)]	[3|H6,H7,H8]
+9.057867	[H269|(3.9700559,17.249326,11.425813)]	[11|H9,H10,H11]
+9.0862307	[H403|(14.304056,19.764326,13.129813)]	[3|H6,H7,H8]
+9.0932195	[H97|(16.446056,17.266326,3.9808131)]	[0|H4,H6,H7]
+9.0947678	[H424|(16.669056,4.5573259,17.884813)]	[5|H5,H6,H8]
+9.1642312	[H580|(11.220056,13.122326,19.840813)]	[3|H6,H7,H8]
+9.1660603	[H178|(5.0770559,17.815326,7.2518131)]	[11|H9,H10,H11]
+9.1893012	[H295|(14.579056,20.084326,10.076813)]	[3|H6,H7,H8]
+9.2298712	[H488|(7.3920559,16.243326,17.256813)]	[3|H6,H7,H8]
+9.2519534	[H425|(18.044056,4.5683259,17.237813)]	[5|H5,H6,H8]
+9.2902049	[H98|(17.825056,16.653326,4.1638131)]	[3|H6,H7,H8]
+9.3207727	[H449|(4.4680559,11.627326,17.589813)]	[11|H9,H10,H11]
+9.3746957	[H563|(10.340056,10.114326,20.229813)]	[6|H5,H8,H11]
+9.4222045	[H391|(19.322056,16.928326,14.265813)]	[0|H4,H6,H7]
+9.4409102	[H446|(20.429056,8.6943259,16.861813)]	[5|H5,H6,H8]
+9.4653941	[H205|(14.394056,20.411326,8.5908131)]	[0|H4,H6,H7]
+9.4658719	[H299|(16.336056,19.684326,11.112813)]	[3|H6,H7,H8]
+9.4880124	[H82|(20.552056,13.539326,3.8628131)]	[0|H4,H6,H7]
+9.5129615	[H28|(19.767056,3.8503259,4.8308131)]	[0|H4,H6,H7]
+9.5642945	[H529|(14.486056,4.9043259,19.341813)]	[5|H5,H6,H8]
+9.5871452	[H578|(8.2200559,14.112326,19.286813)]	[3|H6,H7,H8]
+9.5883291	[H13|(3.9180559,4.3913259,4.1898131)]	[1|H4,H7,H10]
+9.6155495	[H397|(8.0730559,19.390326,14.421813)]	[3|H6,H7,H8]
+9.6498006	[H208|(17.165056,19.460326,8.3758131)]	[3|H6,H7,H8]
+9.675241	[H550|(17.157056,7.1263259,19.442813)]	[5|H5,H6,H8]
+9.6951209	[H467|(5.3090559,14.144326,17.774813)]	[4|H7,H8,H9]
+9.7484806	[H289|(8.0640559,20.227326,11.766813)]	[3|H6,H7,H8]
+9.7573037	[H199|(7.1300559,19.822326,8.3158131)]	[2|H7,H9,H10]
+9.7785142	[H566|(13.750056,10.083326,20.610813)]	[5|H5,H6,H8]
+9.7962273	[H101|(19.325056,16.953326,4.9858131)]	[0|H4,H6,H7]
+9.8253804	[H412|(5.2310559,4.8003259,17.839813)]	[11|H9,H10,H11]
+9.8326241	[H542|(6.8930559,7.8653259,19.885813)]	[11|H9,H10,H11]
+9.8351856	[H560|(8.5620559,11.462326,20.266813)]	[6|H5,H8,H11]
+9.8479887	[H113|(14.592056,20.007326,5.3868131)]	[0|H4,H6,H7]
+9.8720044	[H284|(20.569056,17.795326,10.316813)]	[0|H4,H6,H7]
+9.8721625	[H497|(16.615056,16.618326,17.721813)]	[3|H6,H7,H8]
+9.9433325	[H200|(8.4380559,20.597326,8.3368131)]	[0|H4,H6,H7]
+9.9476145	[H466|(3.9450559,13.563326,17.440813)]	[11|H9,H10,H11]
+9.9609811	[H485|(5.2940559,16.589326,16.459813)]	[4|H7,H8,H9]
+9.9639204	[H296|(14.352056,20.943326,11.309813)]	[3|H6,H7,H8]
+9.9753256	[H482|(19.433056,14.454326,17.334813)]	[0|H4,H6,H7]
+10.011723	[H527|(10.001056,4.8493259,19.898813)]	[11|H9,H10,H11]
+10.014004	[H427|(19.425056,4.1643259,16.858813)]	[5|H5,H6,H8]
+10.014122	[H376|(4.6940559,18.021326,14.113813)]	[11|H9,H10,H11]
+10.018358	[H404|(13.344056,20.810326,13.673813)]	[3|H6,H7,H8]
+10.056684	[H547|(14.502056,7.1163259,20.634813)]	[5|H5,H6,H8]
+10.070075	[H551|(16.185056,7.8173259,20.384813)]	[5|H5,H6,H8]
+10.090221	[H487|(8.0420559,17.462326,17.891813)]	[3|H6,H7,H8]
+10.108834	[H496|(17.969056,16.649326,17.031813)]	[3|H6,H7,H8]
+10.117644	[H112|(13.188056,20.471326,5.0358131)]	[0|H4,H6,H7]
+10.119478	[H562|(10.788056,11.371326,20.955813)]	[6|H5,H8,H11]
+10.156688	[H109|(10.497056,20.644326,5.3708131)]	[0|H4,H6,H7]
+10.170168	[H463|(20.830056,10.357326,17.557813)]	[5|H5,H6,H8]
+10.198106	[H106|(8.1440559,20.094326,5.5388131)]	[0|H4,H6,H7]
+10.199854	[H86|(5.0110559,16.959326,3.7408131)]	[2|H7,H9,H10]
+10.214294	[H569|(16.232056,11.149326,20.410813)]	[5|H5,H6,H8]
+10.220562	[H428|(19.904056,5.4233259,17.562813)]	[5|H5,H6,H8]
+10.261425	[H530|(13.653056,5.5083259,20.459813)]	[5|H5,H6,H8]
+10.269801	[H539|(5.2960559,8.3283259,19.619813)]	[11|H9,H10,H11]
+10.281592	[H194|(20.747056,17.872326,7.7908131)]	[0|H4,H6,H7]
+10.315495	[H581|(11.586056,14.281326,20.754813)]	[3|H6,H7,H8]
+10.32569	[H583|(13.289056,14.359326,20.644813)]	[3|H6,H7,H8]
+10.34537	[H392|(20.181056,17.939326,13.523813)]	[0|H4,H6,H7]
+10.347882	[H29|(20.743056,4.5033259,3.8658131)]	[0|H4,H6,H7]
+10.359711	[H290|(8.1710559,20.973326,10.446813)]	[3|H6,H7,H8]
+10.405079	[H577|(7.2560559,13.205326,20.033813)]	[7|H8,H9,H11]
+10.446993	[H100|(20.791056,16.901326,5.3868131)]	[0|H4,H6,H7]
+10.447567	[H511|(13.360056,20.081326,16.347813)]	[3|H6,H7,H8]
+10.451273	[H413|(3.8080559,4.5903259,17.349813)]	[11|H9,H10,H11]
+10.468902	[H602|(14.423056,16.332326,19.704813)]	[3|H6,H7,H8]
+10.492753	[H598|(11.762056,16.746326,19.851813)]	[3|H6,H7,H8]
+10.530454	[H107|(8.5510559,19.937326,4.0828131)]	[0|H4,H6,H7]
+10.545772	[H197|(5.0650559,19.455326,7.2228131)]	[2|H7,H9,H10]
+10.55899	[H557|(5.6650559,10.825326,20.051813)]	[11|H9,H10,H11]
+10.587385	[H556|(4.3800559,10.928326,19.245813)]	[11|H9,H10,H11]
+10.596337	[H584|(14.687056,13.781326,20.795813)]	[3|H6,H7,H8]
+10.641643	[H85|(3.8080559,17.386326,4.5658131)]	[11|H9,H10,H11]
+10.659504	[H115|(16.790056,20.064326,5.5388131)]	[0|H4,H6,H7]
+10.672073	[H110|(11.529056,20.807326,4.2678131)]	[0|H4,H6,H7]
+10.684917	[H601|(13.392056,17.430326,19.503813)]	[3|H6,H7,H8]
+10.68773	[H116|(16.966056,19.331326,4.2188131)]	[0|H4,H6,H7]
+10.745796	[H526|(10.990056,3.7233259,20.153813)]	[9|H4,H5,H11]
+10.875172	[H572|(19.755056,10.471326,19.406813)]	[5|H5,H6,H8]
+10.887862	[H508|(10.685056,19.628326,17.794813)]	[3|H6,H7,H8]
+10.911942	[H506|(8.1860559,19.329326,17.283813)]	[3|H6,H7,H8]
+10.936525	[H532|(16.263056,4.9623259,20.484813)]	[5|H5,H6,H8]
+10.958983	[H481|(20.831056,14.049326,17.771813)]	[0|H4,H6,H7]
+10.964717	[H298|(16.862056,21.099326,10.933813)]	[3|H6,H7,H8]
+10.970727	[H398|(8.0310559,20.905326,14.528813)]	[3|H6,H7,H8]
+11.008131	[H587|(16.339056,14.462326,20.438813)]	[3|H6,H7,H8]
+11.064955	[H209|(17.262056,20.972326,8.2588131)]	[0|H4,H6,H7]
+11.086675	[H574|(5.0450559,13.226326,19.651813)]	[7|H8,H9,H11]
+11.097282	[H524|(7.2010559,3.9443259,20.059813)]	[11|H9,H10,H11]
+11.121857	[H568|(17.696056,11.249326,20.806813)]	[5|H5,H6,H8]
+11.151885	[H484|(4.1230559,17.557326,16.459813)]	[4|H7,H8,H9]
+11.201595	[H505|(8.2970559,20.449326,16.262813)]	[3|H6,H7,H8]
+11.215686	[H406|(18.070056,20.209326,13.925813)]	[3|H6,H7,H8]
+11.240911	[H523|(8.4240559,4.4123259,20.831813)]	[11|H9,H10,H11]
+11.317601	[H287|(3.8030559,19.989326,11.082813)]	[11|H9,H10,H11]
+11.321056	[H586|(17.184056,13.237326,20.746813)]	[5|H5,H6,H8]
+11.392297	[H520|(4.6380559,5.6013259,19.895813)]	[11|H9,H10,H11]
+11.408512	[H409|(19.585056,19.801326,13.324813)]	[0|H4,H6,H7]
+11.440492	[H512|(14.679056,20.760326,16.676813)]	[3|H6,H7,H8]
+11.441945	[H407|(16.842056,21.053326,14.226813)]	[3|H6,H7,H8]
+11.455754	[H599|(10.737056,16.618326,20.965813)]	[3|H6,H7,H8]
+11.475823	[H301|(20.061056,20.172326,9.8978131)]	[0|H4,H6,H7]
+11.546761	[H211|(20.733056,19.668326,8.3658131)]	[0|H4,H6,H7]
+11.578702	[H196|(5.3410559,20.892326,7.6318131)]	[2|H7,H9,H10]
+11.615478	[H553|(19.420056,8.0833259,20.588813)]	[5|H5,H6,H8]
+11.617124	[H595|(8.2750559,16.422326,20.667813)]	[3|H6,H7,H8]
+11.649092	[H499|(21.057056,16.913326,16.623813)]	[0|H4,H6,H7]
+11.77875	[H509|(10.898056,21.075326,17.381813)]	[3|H6,H7,H8]
+11.778818	[H538|(4.3950559,8.3513259,20.843813)]	[11|H9,H10,H11]
+11.791511	[H212|(19.590056,20.667326,8.2848131)]	[0|H4,H6,H7]
+11.803704	[H286|(4.6960559,21.075326,10.504813)]	[11|H9,H10,H11]
+11.814398	[H554|(20.126056,6.8243259,20.112813)]	[5|H5,H6,H8]
+11.822456	[H515|(16.948056,19.512326,17.713813)]	[3|H6,H7,H8]
+11.825297	[H533|(17.724056,4.8013259,20.870813)]	[5|H5,H6,H8]
+11.891577	[H500|(20.037056,18.008326,16.889813)]	[0|H4,H6,H7]
+11.918058	[H605|(16.973056,16.193326,20.483813)]	[3|H6,H7,H8]
+11.926016	[H535|(19.256056,4.6683259,20.077813)]	[5|H5,H6,H8]
+12.071778	[H394|(3.8650559,20.351326,13.528813)]	[11|H9,H10,H11]
+12.095539	[H571|(21.101056,11.040326,19.823813)]	[5|H5,H6,H8]
+12.102745	[H104|(4.0570559,19.524326,4.3958131)]	[2|H7,H9,H10]
+12.103061	[H103|(5.3770559,20.135326,3.9548131)]	[2|H7,H9,H10]
+12.144567	[H514|(18.003056,20.004326,16.735813)]	[5|H5,H6,H8]
+12.256424	[H118|(19.649056,19.601326,4.1258131)]	[3|H6,H7,H8]
+12.315578	[H302|(21.133056,20.424326,10.944813)]	[0|H4,H6,H7]
+12.38815	[H395|(4.8600559,20.927326,14.522813)]	[4|H7,H8,H9]
+12.521228	[H521|(4.9040559,4.6903259,21.082813)]	[11|H9,H10,H11]
+12.573945	[H119|(20.934056,19.620326,4.9368131)]	[0|H4,H6,H7]
+12.574419	[H575|(4.0820559,13.608326,20.763813)]	[7|H8,H9,H11]
+12.590457	[H596|(7.4340559,17.683326,20.783813)]	[3|H6,H7,H8]
+12.622906	[H410|(20.994056,20.363326,13.420813)]	[0|H4,H6,H7]
+12.624738	[H613|(7.7470559,19.779326,19.274813)]	[3|H6,H7,H8]
+12.797415	[H607|(19.796056,17.101326,19.280813)]	[3|H6,H7,H8]
+12.911737	[H502|(3.9560559,19.991326,16.484813)]	[4|H7,H8,H9]
+12.936275	[H604|(17.911056,17.386326,20.575813)]	[3|H6,H7,H8]
+12.984248	[H590|(20.022056,13.683326,21.035813)]	[5|H5,H6,H8]
+13.017624	[H589|(20.750056,14.764326,20.252813)]	[0|H4,H6,H7]
+13.026152	[H503|(5.1730559,20.895326,16.604813)]	[4|H7,H8,H9]
+13.086071	[H592|(4.3170559,16.255326,20.436813)]	[7|H8,H9,H11]
+13.203436	[H619|(13.108056,20.388326,20.382813)]	[3|H6,H7,H8]
+13.29575	[H617|(11.576056,20.116326,20.831813)]	[3|H6,H7,H8]
+13.313967	[H518|(20.700056,20.103326,16.221813)]	[0|H4,H6,H7]
+13.37545	[H536|(20.409056,4.1863259,20.942813)]	[5|H5,H6,H8]
+13.525067	[H608|(20.773056,16.301326,20.126813)]	[0|H4,H6,H7]
+13.602914	[H620|(14.444056,21.027326,20.040813)]	[3|H6,H7,H8]
+13.60526	[H616|(10.285056,20.829326,20.462813)]	[3|H6,H7,H8]
+13.739966	[H623|(17.071056,19.396326,20.696813)]	[3|H6,H7,H8]
+13.847762	[H614|(8.1710559,21.053326,19.987813)]	[3|H6,H7,H8]
+13.952512	[H593|(4.4010559,17.737326,20.766813)]	[4|H7,H8,H9]
+14.060328	[H610|(5.0670559,19.292326,20.232813)]	[3|H6,H7,H8]
+14.399143	[H517|(20.390056,21.066326,17.356813)]	[3|H6,H7,H8]
+14.431564	[H626|(20.119056,19.385326,19.613813)]	[3|H6,H7,H8]
+14.664861	[H622|(17.886056,20.655326,20.447813)]	[3|H6,H7,H8]
+15.433693	[H625|(20.410056,20.874326,19.514813)]	[3|H6,H7,H8]
+15.464089	[H611|(4.7610559,20.553326,21.024813)]	[3|H6,H7,H8]
Index: tests/regression/Analysis/4/pre/test.conf
===================================================================
--- tests/regression/Analysis/4/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/4/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,699 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+25	
+0	25	
+0	0	25	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	3	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	418	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+Ion_Type3	205	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	13.129055911	9.787325879	9.993813099	0 # molecule nr 0
+Ion_Type2_2	11.880055911	10.670325879	9.993813099	0 # molecule nr 1
+Ion_Type2_3	10.631055911	9.787325879	9.993813099	0 # molecule nr 2
+Ion_Type1_1	13.129055911	9.158325879	9.103813099	0 # molecule nr 3
+Ion_Type1_2	13.129055911	9.158325879	10.883813099	0 # molecule nr 4
+Ion_Type1_3	14.019055911	10.416325879	9.993813099	0 # molecule nr 5
+Ion_Type1_4	11.880055911	11.300325879	9.103813099	0 # molecule nr 6
+Ion_Type1_5	11.880055911	11.300325879	10.883813099	0 # molecule nr 7
+Ion_Type1_6	9.741055911	10.416325879	9.993813099	0 # molecule nr 8
+Ion_Type1_7	10.631055911	9.158325879	9.103813099	0 # molecule nr 9
+Ion_Type1_8	10.631055911	9.158325879	10.883813099	0 # molecule nr 10
+Ion_Type3_1	4.712055911	4.678325879	4.643813099	0 # molecule nr 11
+Ion_Type1_9	3.918055911	4.391325879	4.189813099	0 # molecule nr 12
+Ion_Type1_10	5.342055911	4.866325879	3.945813099	0 # molecule nr 13
+Ion_Type3_2	7.812055911	4.678325879	4.643813099	0 # molecule nr 14
+Ion_Type1_11	8.175055911	3.859325879	4.983813099	0 # molecule nr 15
+Ion_Type1_12	6.888055911	4.661325879	4.895813099	0 # molecule nr 16
+Ion_Type3_3	10.912055911	4.678325879	4.643813099	0 # molecule nr 17
+Ion_Type1_13	11.666055911	4.089325879	4.698813099	0 # molecule nr 18
+Ion_Type1_14	10.147055911	4.111325879	4.751813099	0 # molecule nr 19
+Ion_Type3_4	14.012055911	4.678325879	4.643813099	0 # molecule nr 20
+Ion_Type1_15	13.191055911	5.063325879	4.333813099	0 # molecule nr 21
+Ion_Type1_16	13.821055911	3.745325879	4.753813099	0 # molecule nr 22
+Ion_Type3_5	17.112055911	4.678325879	4.643813099	0 # molecule nr 23
+Ion_Type1_17	16.356055911	4.753325879	4.059813099	0 # molecule nr 24
+Ion_Type1_18	17.869055911	4.603325879	4.059813099	0 # molecule nr 25
+Ion_Type3_6	20.212055911	4.678325879	4.643813099	0 # molecule nr 26
+Ion_Type1_19	19.767055911	3.850325879	4.830813099	0 # molecule nr 27
+Ion_Type1_20	20.743055911	4.503325879	3.865813099	0 # molecule nr 28
+Ion_Type3_7	4.712055911	7.778325879	4.643813099	0 # molecule nr 29
+Ion_Type1_21	4.848055911	8.717325879	4.779813099	0 # molecule nr 30
+Ion_Type1_22	4.224055911	7.716325879	3.820813099	0 # molecule nr 31
+Ion_Type3_8	7.812055911	7.778325879	4.643813099	0 # molecule nr 32
+Ion_Type1_23	7.796055911	6.899325879	5.026813099	0 # molecule nr 33
+Ion_Type1_24	8.408055911	8.279325879	5.202813099	0 # molecule nr 34
+Ion_Type3_9	10.912055911	7.778325879	4.643813099	0 # molecule nr 35
+Ion_Type1_25	11.766055911	7.342325879	4.660813099	0 # molecule nr 36
+Ion_Type1_26	10.960055911	8.386325879	3.903813099	0 # molecule nr 37
+Ion_Type3_10	14.012055911	7.778325879	4.643813099	0 # molecule nr 38
+Ion_Type1_27	13.569055911	8.375325879	4.038813099	0 # molecule nr 39
+Ion_Type1_28	14.453055911	7.139325879	4.081813099	0 # molecule nr 40
+Ion_Type3_11	17.112055911	7.778325879	4.643813099	0 # molecule nr 41
+Ion_Type1_29	17.271055911	6.833325879	4.640813099	0 # molecule nr 42
+Ion_Type1_30	17.658055911	8.118325879	5.354813099	0 # molecule nr 43
+Ion_Type3_12	20.212055911	7.778325879	4.643813099	0 # molecule nr 44
+Ion_Type1_31	20.207055911	8.093325879	5.548813099	0 # molecule nr 45
+Ion_Type1_32	19.348055911	8.007325879	4.297813099	0 # molecule nr 46
+Ion_Type3_13	4.712055911	10.878325879	4.643813099	0 # molecule nr 47
+Ion_Type1_33	5.158055911	11.711325879	4.804813099	0 # molecule nr 48
+Ion_Type1_34	3.778055911	11.083325879	4.701813099	0 # molecule nr 49
+Ion_Type3_14	7.812055911	10.878325879	4.643813099	0 # molecule nr 50
+Ion_Type1_35	8.481055911	10.513325879	4.062813099	0 # molecule nr 51
+Ion_Type1_36	7.394055911	11.572325879	4.132813099	0 # molecule nr 52
+Ion_Type3_15	10.912055911	10.878325879	4.643813099	0 # molecule nr 53
+Ion_Type1_37	11.090055911	11.636325879	5.201813099	0 # molecule nr 54
+Ion_Type1_38	10.724055911	11.247325879	3.779813099	0 # molecule nr 55
+Ion_Type3_16	14.012055911	10.878325879	4.643813099	0 # molecule nr 56
+Ion_Type1_39	13.086055911	10.640325879	4.703813099	0 # molecule nr 57
+Ion_Type1_40	14.204055911	11.334325879	5.464813099	0 # molecule nr 58
+Ion_Type3_17	17.112055911	10.878325879	4.643813099	0 # molecule nr 59
+Ion_Type1_41	16.256055911	10.644325879	4.281813099	0 # molecule nr 60
+Ion_Type1_42	17.269055911	10.237325879	5.338813099	0 # molecule nr 61
+Ion_Type3_18	20.212055911	10.878325879	4.643813099	0 # molecule nr 62
+Ion_Type1_43	20.355055911	11.271325879	5.505813099	0 # molecule nr 63
+Ion_Type1_44	19.288055911	10.623325879	4.638813099	0 # molecule nr 64
+Ion_Type3_19	4.712055911	13.978325879	4.643813099	0 # molecule nr 65
+Ion_Type1_45	5.047055911	14.782325879	5.043813099	0 # molecule nr 66
+Ion_Type1_46	4.564055911	13.380325879	5.378813099	0 # molecule nr 67
+Ion_Type3_20	7.812055911	13.978325879	4.643813099	0 # molecule nr 68
+Ion_Type1_47	8.047055911	13.382325879	3.930813099	0 # molecule nr 69
+Ion_Type1_48	7.501055911	14.773325879	4.207813099	0 # molecule nr 70
+Ion_Type3_21	10.912055911	13.978325879	4.643813099	0 # molecule nr 71
+Ion_Type1_49	10.056055911	13.549325879	4.604813099	0 # molecule nr 72
+Ion_Type1_50	11.080055911	14.276325879	3.748813099	0 # molecule nr 73
+Ion_Type3_22	14.012055911	13.978325879	4.643813099	0 # molecule nr 74
+Ion_Type1_51	14.438055911	13.634325879	3.857813099	0 # molecule nr 75
+Ion_Type1_52	13.811055911	13.205325879	5.173813099	0 # molecule nr 76
+Ion_Type3_23	17.112055911	13.978325879	4.643813099	0 # molecule nr 77
+Ion_Type1_53	16.943055911	14.221325879	3.731813099	0 # molecule nr 78
+Ion_Type1_54	17.999055911	14.293325879	4.822813099	0 # molecule nr 79
+Ion_Type3_24	20.212055911	13.978325879	4.643813099	0 # molecule nr 80
+Ion_Type1_55	20.552055911	13.539325879	3.862813099	0 # molecule nr 81
+Ion_Type1_56	19.991055911	13.269325879	5.249813099	0 # molecule nr 82
+Ion_Type3_25	4.712055911	17.078325879	4.643813099	0 # molecule nr 83
+Ion_Type1_57	3.808055911	17.386325879	4.565813099	0 # molecule nr 84
+Ion_Type1_58	5.011055911	16.959325879	3.740813099	0 # molecule nr 85
+Ion_Type3_26	7.812055911	17.078325879	4.643813099	0 # molecule nr 86
+Ion_Type1_59	8.047055911	16.344325879	5.213813099	0 # molecule nr 87
+Ion_Type1_60	7.470055911	17.750325879	5.234813099	0 # molecule nr 88
+Ion_Type3_27	10.912055911	17.078325879	4.643813099	0 # molecule nr 89
+Ion_Type1_61	11.093055911	16.137325879	4.638813099	0 # molecule nr 90
+Ion_Type1_62	10.501055911	17.246325879	5.492813099	0 # molecule nr 91
+Ion_Type3_28	14.012055911	17.078325879	4.643813099	0 # molecule nr 92
+Ion_Type1_63	13.325055911	16.779325879	4.045813099	0 # molecule nr 93
+Ion_Type1_64	13.659055911	16.925325879	5.521813099	0 # molecule nr 94
+Ion_Type3_29	17.112055911	17.078325879	4.643813099	0 # molecule nr 95
+Ion_Type1_65	16.446055911	17.266325879	3.980813099	0 # molecule nr 96
+Ion_Type1_66	17.825055911	16.653325879	4.163813099	0 # molecule nr 97
+Ion_Type3_30	20.212055911	17.078325879	4.643813099	0 # molecule nr 98
+Ion_Type1_67	20.791055911	16.901325879	5.386813099	0 # molecule nr 99
+Ion_Type1_68	19.325055911	16.953325879	4.985813099	0 # molecule nr 100
+Ion_Type3_31	4.712055911	20.178325879	4.643813099	0 # molecule nr 101
+Ion_Type1_69	5.377055911	20.135325879	3.954813099	0 # molecule nr 102
+Ion_Type1_70	4.057055911	19.524325879	4.395813099	0 # molecule nr 103
+Ion_Type3_32	7.812055911	20.178325879	4.643813099	0 # molecule nr 104
+Ion_Type1_71	8.144055911	20.094325879	5.538813099	0 # molecule nr 105
+Ion_Type1_72	8.551055911	19.937325879	4.082813099	0 # molecule nr 106
+Ion_Type3_33	10.912055911	20.178325879	4.643813099	0 # molecule nr 107
+Ion_Type1_73	10.497055911	20.644325879	5.370813099	0 # molecule nr 108
+Ion_Type1_74	11.529055911	20.807325879	4.267813099	0 # molecule nr 109
+Ion_Type3_34	14.012055911	20.178325879	4.643813099	0 # molecule nr 110
+Ion_Type1_75	13.188055911	20.471325879	5.035813099	0 # molecule nr 111
+Ion_Type1_76	14.592055911	20.007325879	5.386813099	0 # molecule nr 112
+Ion_Type3_35	17.112055911	20.178325879	4.643813099	0 # molecule nr 113
+Ion_Type1_77	16.790055911	20.064325879	5.538813099	0 # molecule nr 114
+Ion_Type1_78	16.966055911	19.331325879	4.218813099	0 # molecule nr 115
+Ion_Type3_36	20.212055911	20.178325879	4.643813099	0 # molecule nr 116
+Ion_Type1_79	19.649055911	19.601325879	4.125813099	0 # molecule nr 117
+Ion_Type1_80	20.934055911	19.620325879	4.936813099	0 # molecule nr 118
+Ion_Type3_37	4.712055911	4.678325879	7.743813099	0 # molecule nr 119
+Ion_Type1_81	3.930055911	4.142325879	7.887813099	0 # molecule nr 120
+Ion_Type1_82	4.479055911	5.548325879	8.072813099	0 # molecule nr 121
+Ion_Type3_38	7.812055911	4.678325879	7.743813099	0 # molecule nr 122
+Ion_Type1_83	7.412055911	4.536325879	6.884813099	0 # molecule nr 123
+Ion_Type1_84	8.137055911	3.817325879	8.009813099	0 # molecule nr 124
+Ion_Type3_39	10.912055911	4.678325879	7.743813099	0 # molecule nr 125
+Ion_Type1_85	10.577055911	5.494325879	8.118813099	0 # molecule nr 126
+Ion_Type1_86	11.103055911	4.120325879	8.498813099	0 # molecule nr 127
+Ion_Type3_40	14.012055911	4.678325879	7.743813099	0 # molecule nr 128
+Ion_Type1_87	14.510055911	5.177325879	7.094813099	0 # molecule nr 129
+Ion_Type1_88	13.769055911	3.866325879	7.296813099	0 # molecule nr 130
+Ion_Type3_41	17.112055911	4.678325879	7.743813099	0 # molecule nr 131
+Ion_Type1_89	17.448055911	5.298325879	7.093813099	0 # molecule nr 132
+Ion_Type1_90	17.028055911	3.848325879	7.272813099	0 # molecule nr 133
+Ion_Type3_42	20.212055911	4.678325879	7.743813099	0 # molecule nr 134
+Ion_Type1_91	19.303055911	4.655325879	8.045813099	0 # molecule nr 135
+Ion_Type1_92	20.727055911	4.878325879	8.526813099	0 # molecule nr 136
+Ion_Type3_43	4.712055911	7.778325879	7.743813099	0 # molecule nr 137
+Ion_Type1_93	4.387055911	7.912325879	8.635813099	0 # molecule nr 138
+Ion_Type1_94	4.490055911	6.870325879	7.533813099	0 # molecule nr 139
+Ion_Type3_44	7.812055911	7.778325879	7.743813099	0 # molecule nr 140
+Ion_Type1_95	8.287055911	6.951325879	7.646813099	0 # molecule nr 141
+Ion_Type1_96	6.936055911	7.526325879	8.040813099	0 # molecule nr 142
+Ion_Type3_45	17.112055911	7.778325879	7.743813099	0 # molecule nr 143
+Ion_Type1_97	17.466055911	7.073325879	7.199813099	0 # molecule nr 144
+Ion_Type1_98	16.710055911	8.390325879	7.124813099	0 # molecule nr 145
+Ion_Type3_46	20.212055911	7.778325879	7.743813099	0 # molecule nr 146
+Ion_Type1_99	21.150055911	7.756325879	7.549813099	0 # molecule nr 147
+Ion_Type1_100	19.794055911	8.016325879	6.914813099	0 # molecule nr 148
+Ion_Type3_47	4.712055911	10.878325879	7.743813099	0 # molecule nr 149
+Ion_Type1_101	5.053055911	10.092325879	7.313813099	0 # molecule nr 150
+Ion_Type1_102	4.710055911	11.551325879	7.061813099	0 # molecule nr 151
+Ion_Type3_48	17.112055911	10.878325879	7.743813099	0 # molecule nr 152
+Ion_Type1_103	17.481055911	10.051325879	8.057813099	0 # molecule nr 153
+Ion_Type1_104	17.812055911	11.522325879	7.863813099	0 # molecule nr 154
+Ion_Type3_49	20.212055911	10.878325879	7.743813099	0 # molecule nr 155
+Ion_Type1_105	20.293055911	10.517325879	6.859813099	0 # molecule nr 156
+Ion_Type1_106	20.016055911	10.124325879	8.301813099	0 # molecule nr 157
+Ion_Type3_50	4.712055911	13.978325879	7.743813099	0 # molecule nr 158
+Ion_Type1_107	4.195055911	14.461325879	8.390813099	0 # molecule nr 159
+Ion_Type1_108	4.511055911	14.397325879	6.905813099	0 # molecule nr 160
+Ion_Type3_51	7.812055911	13.978325879	7.743813099	0 # molecule nr 161
+Ion_Type1_109	7.204055911	13.586325879	7.114813099	0 # molecule nr 162
+Ion_Type1_110	8.679055911	13.674325879	7.470813099	0 # molecule nr 163
+Ion_Type3_52	10.912055911	13.978325879	7.743813099	0 # molecule nr 164
+Ion_Type1_111	11.010055911	14.867325879	8.088813099	0 # molecule nr 165
+Ion_Type1_112	10.662055911	14.095325879	6.825813099	0 # molecule nr 166
+Ion_Type3_53	14.012055911	13.978325879	7.743813099	0 # molecule nr 167
+Ion_Type1_113	14.699055911	14.453325879	7.273813099	0 # molecule nr 168
+Ion_Type1_114	13.229055911	14.523325879	7.651813099	0 # molecule nr 169
+Ion_Type3_54	17.112055911	13.978325879	7.743813099	0 # molecule nr 170
+Ion_Type1_115	17.451055911	13.084325879	7.811813099	0 # molecule nr 171
+Ion_Type1_116	16.301055911	13.897325879	7.238813099	0 # molecule nr 172
+Ion_Type3_55	20.212055911	13.978325879	7.743813099	0 # molecule nr 173
+Ion_Type1_117	20.698055911	14.646325879	8.229813099	0 # molecule nr 174
+Ion_Type1_118	19.810055911	13.427325879	8.416813099	0 # molecule nr 175
+Ion_Type3_56	4.712055911	17.078325879	7.743813099	0 # molecule nr 176
+Ion_Type1_119	5.077055911	17.815325879	7.251813099	0 # molecule nr 177
+Ion_Type1_120	4.370055911	16.481325879	7.076813099	0 # molecule nr 178
+Ion_Type3_57	7.812055911	17.078325879	7.743813099	0 # molecule nr 179
+Ion_Type1_121	8.424055911	17.442325879	8.385813099	0 # molecule nr 180
+Ion_Type1_122	7.241055911	16.498325879	8.249813099	0 # molecule nr 181
+Ion_Type3_58	10.912055911	17.078325879	7.743813099	0 # molecule nr 182
+Ion_Type1_123	10.007055911	17.384325879	7.666813099	0 # molecule nr 183
+Ion_Type1_124	11.407055911	17.611325879	7.119813099	0 # molecule nr 184
+Ion_Type3_59	14.012055911	17.078325879	7.743813099	0 # molecule nr 185
+Ion_Type1_125	13.405055911	17.509325879	8.346813099	0 # molecule nr 186
+Ion_Type1_126	14.737055911	16.780325879	8.294813099	0 # molecule nr 187
+Ion_Type3_60	17.112055911	17.078325879	7.743813099	0 # molecule nr 188
+Ion_Type1_127	16.589055911	16.402325879	8.177813099	0 # molecule nr 189
+Ion_Type1_128	17.545055911	16.627325879	7.017813099	0 # molecule nr 190
+Ion_Type3_61	20.212055911	17.078325879	7.743813099	0 # molecule nr 191
+Ion_Type1_129	20.164055911	16.759325879	8.646813099	0 # molecule nr 192
+Ion_Type1_130	20.747055911	17.872325879	7.790813099	0 # molecule nr 193
+Ion_Type3_62	4.712055911	20.178325879	7.743813099	0 # molecule nr 194
+Ion_Type1_131	5.341055911	20.892325879	7.631813099	0 # molecule nr 195
+Ion_Type1_132	5.065055911	19.455325879	7.222813099	0 # molecule nr 196
+Ion_Type3_63	7.812055911	20.178325879	7.743813099	0 # molecule nr 197
+Ion_Type1_133	7.130055911	19.822325879	8.315813099	0 # molecule nr 198
+Ion_Type1_134	8.438055911	20.597325879	8.336813099	0 # molecule nr 199
+Ion_Type3_64	10.912055911	20.178325879	7.743813099	0 # molecule nr 200
+Ion_Type1_135	11.157055911	19.403325879	7.235813099	0 # molecule nr 201
+Ion_Type1_136	10.224055911	19.876325879	8.338813099	0 # molecule nr 202
+Ion_Type3_65	14.012055911	20.178325879	7.743813099	0 # molecule nr 203
+Ion_Type1_137	14.394055911	20.411325879	8.590813099	0 # molecule nr 204
+Ion_Type1_138	14.363055911	19.308325879	7.545813099	0 # molecule nr 205
+Ion_Type3_66	17.112055911	20.178325879	7.743813099	0 # molecule nr 206
+Ion_Type1_139	17.165055911	19.460325879	8.375813099	0 # molecule nr 207
+Ion_Type1_140	17.262055911	20.972325879	8.258813099	0 # molecule nr 208
+Ion_Type3_67	20.212055911	20.178325879	7.743813099	0 # molecule nr 209
+Ion_Type1_141	20.733055911	19.668325879	8.365813099	0 # molecule nr 210
+Ion_Type1_142	19.590055911	20.667325879	8.284813099	0 # molecule nr 211
+Ion_Type3_68	4.712055911	4.678325879	10.843813099	0 # molecule nr 212
+Ion_Type1_143	4.032055911	4.289325879	11.395813099	0 # molecule nr 213
+Ion_Type1_144	5.537055911	4.476325879	11.287813099	0 # molecule nr 214
+Ion_Type3_69	7.812055911	4.678325879	10.843813099	0 # molecule nr 215
+Ion_Type1_145	8.346055911	5.022325879	10.125813099	0 # molecule nr 216
+Ion_Type1_146	7.478055911	5.454325879	11.296813099	0 # molecule nr 217
+Ion_Type3_70	10.912055911	4.678325879	10.843813099	0 # molecule nr 218
+Ion_Type1_147	10.694055911	5.401325879	11.433813099	0 # molecule nr 219
+Ion_Type1_148	11.251055911	3.987325879	11.414813099	0 # molecule nr 220
+Ion_Type3_71	14.012055911	4.678325879	10.843813099	0 # molecule nr 221
+Ion_Type1_149	13.430055911	5.149325879	11.441813099	0 # molecule nr 222
+Ion_Type1_150	14.564055911	4.137325879	11.410813099	0 # molecule nr 223
+Ion_Type3_72	17.112055911	4.678325879	10.843813099	0 # molecule nr 224
+Ion_Type1_151	16.343055911	4.783325879	11.405813099	0 # molecule nr 225
+Ion_Type1_152	17.815055911	4.408325879	11.436813099	0 # molecule nr 226
+Ion_Type3_73	20.212055911	4.678325879	10.843813099	0 # molecule nr 227
+Ion_Type1_153	19.473055911	4.726325879	10.235813099	0 # molecule nr 228
+Ion_Type1_154	20.991055911	4.677325879	10.285813099	0 # molecule nr 229
+Ion_Type3_74	4.712055911	7.778325879	10.843813099	0 # molecule nr 230
+Ion_Type1_155	5.403055911	7.125325879	10.961813099	0 # molecule nr 231
+Ion_Type1_156	4.567055911	8.145325879	11.716813099	0 # molecule nr 232
+Ion_Type3_75	7.812055911	7.778325879	10.843813099	0 # molecule nr 233
+Ion_Type1_157	7.844055911	7.097325879	11.517813099	0 # molecule nr 234
+Ion_Type1_158	8.685055911	8.173325879	10.850813099	0 # molecule nr 235
+Ion_Type3_76	17.112055911	7.778325879	10.843813099	0 # molecule nr 236
+Ion_Type1_159	16.418055911	8.376325879	10.561813099	0 # molecule nr 237
+Ion_Type1_160	17.915055911	8.301325879	10.814813099	0 # molecule nr 238
+Ion_Type3_77	20.212055911	7.778325879	10.843813099	0 # molecule nr 239
+Ion_Type1_161	19.737055911	6.949325879	10.764813099	0 # molecule nr 240
+Ion_Type1_162	21.073055911	7.537325879	11.188813099	0 # molecule nr 241
+Ion_Type3_78	4.712055911	10.878325879	10.843813099	0 # molecule nr 242
+Ion_Type1_163	5.208055911	10.202325879	10.380813099	0 # molecule nr 243
+Ion_Type1_164	4.513055911	10.495325879	11.699813099	0 # molecule nr 244
+Ion_Type3_79	17.112055911	10.878325879	10.843813099	0 # molecule nr 245
+Ion_Type1_165	16.783055911	10.073325879	11.247813099	0 # molecule nr 246
+Ion_Type1_166	17.116055911	11.525325879	11.550813099	0 # molecule nr 247
+Ion_Type3_80	20.212055911	10.878325879	10.843813099	0 # molecule nr 248
+Ion_Type1_167	20.130055911	10.400325879	10.016813099	0 # molecule nr 249
+Ion_Type1_168	19.698055911	11.677325879	10.718813099	0 # molecule nr 250
+Ion_Type3_81	4.712055911	13.978325879	10.843813099	0 # molecule nr 251
+Ion_Type1_169	3.919055911	14.136325879	11.358813099	0 # molecule nr 252
+Ion_Type1_170	4.960055911	14.839325879	10.501813099	0 # molecule nr 253
+Ion_Type3_82	7.812055911	13.978325879	10.843813099	0 # molecule nr 254
+Ion_Type1_171	7.778055911	14.779325879	11.368813099	0 # molecule nr 255
+Ion_Type1_172	8.050055911	13.287325879	11.463813099	0 # molecule nr 256
+Ion_Type3_83	14.012055911	13.978325879	10.843813099	0 # molecule nr 257
+Ion_Type1_173	14.819055911	14.416325879	10.568813099	0 # molecule nr 258
+Ion_Type1_174	13.453055911	13.979325879	10.064813099	0 # molecule nr 259
+Ion_Type3_84	17.112055911	13.978325879	10.843813099	0 # molecule nr 260
+Ion_Type1_175	17.521055911	14.826325879	11.023813099	0 # molecule nr 261
+Ion_Type1_176	17.243055911	13.466325879	11.643813099	0 # molecule nr 262
+Ion_Type3_85	20.212055911	13.978325879	10.843813099	0 # molecule nr 263
+Ion_Type1_177	19.464055911	14.532325879	10.615813099	0 # molecule nr 264
+Ion_Type1_178	20.940055911	14.320325879	10.321813099	0 # molecule nr 265
+Ion_Type3_86	4.712055911	17.078325879	10.843813099	0 # molecule nr 266
+Ion_Type1_179	5.410055911	17.656325879	11.156813099	0 # molecule nr 267
+Ion_Type1_180	3.970055911	17.249325879	11.425813099	0 # molecule nr 268
+Ion_Type3_87	7.812055911	17.078325879	10.843813099	0 # molecule nr 269
+Ion_Type1_181	7.726055911	16.501325879	10.083813099	0 # molecule nr 270
+Ion_Type1_182	8.157055911	16.518325879	11.540813099	0 # molecule nr 271
+Ion_Type3_88	10.912055911	17.078325879	10.843813099	0 # molecule nr 272
+Ion_Type1_183	10.789055911	17.984325879	11.131813099	0 # molecule nr 273
+Ion_Type1_184	10.874055911	16.556325879	11.646813099	0 # molecule nr 274
+Ion_Type3_89	14.012055911	17.078325879	10.843813099	0 # molecule nr 275
+Ion_Type1_185	13.690055911	16.555325879	11.579813099	0 # molecule nr 276
+Ion_Type1_186	13.539055911	16.746325879	10.078813099	0 # molecule nr 277
+Ion_Type3_90	17.112055911	17.078325879	10.843813099	0 # molecule nr 278
+Ion_Type1_187	18.028055911	16.966325879	10.584813099	0 # molecule nr 279
+Ion_Type1_188	16.629055911	16.430325879	10.328813099	0 # molecule nr 280
+Ion_Type3_91	20.212055911	17.078325879	10.843813099	0 # molecule nr 281
+Ion_Type1_189	19.295055911	17.314325879	10.992813099	0 # molecule nr 282
+Ion_Type1_190	20.569055911	17.795325879	10.316813099	0 # molecule nr 283
+Ion_Type3_92	4.712055911	20.178325879	10.843813099	0 # molecule nr 284
+Ion_Type1_191	4.696055911	21.075325879	10.504813099	0 # molecule nr 285
+Ion_Type1_192	3.803055911	19.989325879	11.082813099	0 # molecule nr 286
+Ion_Type3_93	7.812055911	20.178325879	10.843813099	0 # molecule nr 287
+Ion_Type1_193	8.064055911	20.227325879	11.766813099	0 # molecule nr 288
+Ion_Type1_194	8.171055911	20.973325879	10.446813099	0 # molecule nr 289
+Ion_Type3_94	10.912055911	20.178325879	10.843813099	0 # molecule nr 290
+Ion_Type1_195	11.792055911	19.953325879	10.537813099	0 # molecule nr 291
+Ion_Type1_196	10.443055911	19.343325879	10.883813099	0 # molecule nr 292
+Ion_Type3_95	14.012055911	20.178325879	10.843813099	0 # molecule nr 293
+Ion_Type1_197	14.579055911	20.084325879	10.076813099	0 # molecule nr 294
+Ion_Type1_198	14.352055911	20.943325879	11.309813099	0 # molecule nr 295
+Ion_Type3_96	17.112055911	20.178325879	10.843813099	0 # molecule nr 296
+Ion_Type1_199	16.862055911	21.099325879	10.933813099	0 # molecule nr 297
+Ion_Type1_200	16.336055911	19.684325879	11.112813099	0 # molecule nr 298
+Ion_Type3_97	20.212055911	20.178325879	10.843813099	0 # molecule nr 299
+Ion_Type1_201	20.061055911	20.172325879	9.897813099	0 # molecule nr 300
+Ion_Type1_202	21.133055911	20.424325879	10.944813099	0 # molecule nr 301
+Ion_Type3_98	4.712055911	4.678325879	13.943813099	0 # molecule nr 302
+Ion_Type1_203	4.935055911	4.130325879	13.188813099	0 # molecule nr 303
+Ion_Type1_204	4.383055911	5.495325879	13.566813099	0 # molecule nr 304
+Ion_Type3_99	7.812055911	4.678325879	13.943813099	0 # molecule nr 305
+Ion_Type1_205	6.907055911	4.362325879	13.920813099	0 # molecule nr 306
+Ion_Type1_206	8.344055911	3.920325879	13.696813099	0 # molecule nr 307
+Ion_Type3_100	10.912055911	4.678325879	13.943813099	0 # molecule nr 308
+Ion_Type1_207	10.397055911	5.173325879	13.304813099	0 # molecule nr 309
+Ion_Type1_208	10.264055911	4.253325879	14.507813099	0 # molecule nr 310
+Ion_Type3_101	14.012055911	4.678325879	13.943813099	0 # molecule nr 311
+Ion_Type1_209	13.570055911	5.410325879	13.510813099	0 # molecule nr 312
+Ion_Type1_210	14.888055911	4.654325879	13.556813099	0 # molecule nr 313
+Ion_Type3_102	17.112055911	4.678325879	13.943813099	0 # molecule nr 314
+Ion_Type1_211	17.446055911	4.032325879	13.319813099	0 # molecule nr 315
+Ion_Type1_212	16.300055911	5.002325879	13.551813099	0 # molecule nr 316
+Ion_Type3_103	20.212055911	4.678325879	13.943813099	0 # molecule nr 317
+Ion_Type1_213	20.244055911	5.534325879	14.374813099	0 # molecule nr 318
+Ion_Type1_214	19.306055911	4.383325879	14.046813099	0 # molecule nr 319
+Ion_Type3_104	4.712055911	7.778325879	13.943813099	0 # molecule nr 320
+Ion_Type1_215	3.774055911	7.739325879	13.750813099	0 # molecule nr 321
+Ion_Type1_216	4.767055911	7.787325879	14.900813099	0 # molecule nr 322
+Ion_Type3_105	7.812055911	7.778325879	13.943813099	0 # molecule nr 323
+Ion_Type1_217	7.213055911	8.400325879	13.527813099	0 # molecule nr 324
+Ion_Type1_218	7.609055911	7.828325879	14.878813099	0 # molecule nr 325
+Ion_Type3_106	10.912055911	7.778325879	13.943813099	0 # molecule nr 326
+Ion_Type1_219	11.038055911	8.167325879	13.076813099	0 # molecule nr 327
+Ion_Type1_220	10.670055911	6.866325879	13.772813099	0 # molecule nr 328
+Ion_Type3_107	14.012055911	7.778325879	13.943813099	0 # molecule nr 329
+Ion_Type1_221	14.408055911	7.061325879	13.446813099	0 # molecule nr 330
+Ion_Type1_222	13.742055911	8.417325879	13.282813099	0 # molecule nr 331
+Ion_Type3_108	17.112055911	7.778325879	13.943813099	0 # molecule nr 332
+Ion_Type1_223	17.509055911	7.709325879	14.812813099	0 # molecule nr 333
+Ion_Type1_224	17.442055911	7.019325879	13.460813099	0 # molecule nr 334
+Ion_Type3_109	20.212055911	7.778325879	13.943813099	0 # molecule nr 335
+Ion_Type1_225	19.646055911	7.020325879	13.790813099	0 # molecule nr 336
+Ion_Type1_226	19.841055911	8.212325879	14.713813099	0 # molecule nr 337
+Ion_Type3_110	4.712055911	10.878325879	13.943813099	0 # molecule nr 338
+Ion_Type1_227	4.120055911	10.944325879	13.192813099	0 # molecule nr 339
+Ion_Type1_228	5.038055911	9.977325879	13.921813099	0 # molecule nr 340
+Ion_Type3_111	7.812055911	10.878325879	13.943813099	0 # molecule nr 341
+Ion_Type1_229	7.878055911	10.404325879	14.773813099	0 # molecule nr 342
+Ion_Type1_230	8.696055911	11.208325879	13.777813099	0 # molecule nr 343
+Ion_Type3_112	10.912055911	10.878325879	13.943813099	0 # molecule nr 344
+Ion_Type1_231	10.159055911	10.824325879	13.352813099	0 # molecule nr 345
+Ion_Type1_232	11.674055911	10.949325879	13.366813099	0 # molecule nr 346
+Ion_Type3_113	14.012055911	10.878325879	13.943813099	0 # molecule nr 347
+Ion_Type1_233	14.631055911	11.542325879	14.250813099	0 # molecule nr 348
+Ion_Type1_234	14.091055911	10.158325879	14.571813099	0 # molecule nr 349
+Ion_Type3_114	17.112055911	10.878325879	13.943813099	0 # molecule nr 350
+Ion_Type1_235	16.365055911	11.149325879	13.407813099	0 # molecule nr 351
+Ion_Type1_236	17.799055911	10.652325879	13.313813099	0 # molecule nr 352
+Ion_Type3_115	20.212055911	10.878325879	13.943813099	0 # molecule nr 353
+Ion_Type1_237	20.100055911	10.855325879	12.991813099	0 # molecule nr 354
+Ion_Type1_238	19.712055911	10.128325879	14.269813099	0 # molecule nr 355
+Ion_Type3_116	4.712055911	13.978325879	13.943813099	0 # molecule nr 356
+Ion_Type1_239	4.938055911	13.274325879	13.333813099	0 # molecule nr 357
+Ion_Type1_240	4.388055911	14.690325879	13.389813099	0 # molecule nr 358
+Ion_Type3_117	7.812055911	13.978325879	13.943813099	0 # molecule nr 359
+Ion_Type1_241	7.457055911	13.320325879	14.543813099	0 # molecule nr 360
+Ion_Type1_242	8.272055911	14.602325879	14.506813099	0 # molecule nr 361
+Ion_Type3_118	10.912055911	13.978325879	13.943813099	0 # molecule nr 362
+Ion_Type1_243	11.399055911	14.794325879	14.064813099	0 # molecule nr 363
+Ion_Type1_244	11.316055911	13.560325879	13.181813099	0 # molecule nr 364
+Ion_Type3_119	14.012055911	13.978325879	13.943813099	0 # molecule nr 365
+Ion_Type1_245	14.261055911	14.903325879	13.986813099	0 # molecule nr 366
+Ion_Type1_246	14.540055911	13.549325879	14.618813099	0 # molecule nr 367
+Ion_Type3_120	17.112055911	13.978325879	13.943813099	0 # molecule nr 368
+Ion_Type1_247	17.205055911	14.906325879	13.722813099	0 # molecule nr 369
+Ion_Type1_248	17.515055911	13.888325879	14.808813099	0 # molecule nr 370
+Ion_Type3_121	20.212055911	13.978325879	13.943813099	0 # molecule nr 371
+Ion_Type1_249	20.242055911	13.786325879	13.004813099	0 # molecule nr 372
+Ion_Type1_250	20.853055911	13.384325879	14.337813099	0 # molecule nr 373
+Ion_Type3_122	4.712055911	17.078325879	13.943813099	0 # molecule nr 374
+Ion_Type1_251	4.694055911	18.021325879	14.113813099	0 # molecule nr 375
+Ion_Type1_252	4.869055911	17.000325879	13.001813099	0 # molecule nr 376
+Ion_Type3_123	7.812055911	17.078325879	13.943813099	0 # molecule nr 377
+Ion_Type1_253	8.488055911	17.210325879	13.276813099	0 # molecule nr 378
+Ion_Type1_254	7.709055911	17.934325879	14.363813099	0 # molecule nr 379
+Ion_Type3_124	10.912055911	17.078325879	13.943813099	0 # molecule nr 380
+Ion_Type1_255	11.763055911	17.187325879	13.516813099	0 # molecule nr 381
+Ion_Type1_256	11.010055911	16.300325879	14.494813099	0 # molecule nr 382
+Ion_Type3_125	14.012055911	17.078325879	13.943813099	0 # molecule nr 383
+Ion_Type1_257	13.773055911	17.965325879	13.670813099	0 # molecule nr 384
+Ion_Type1_258	14.003055911	16.560325879	13.136813099	0 # molecule nr 385
+Ion_Type3_126	17.112055911	17.078325879	13.943813099	0 # molecule nr 386
+Ion_Type1_259	16.358055911	16.914325879	14.512813099	0 # molecule nr 387
+Ion_Type1_260	16.818055911	16.829325879	13.065813099	0 # molecule nr 388
+Ion_Type3_127	20.212055911	17.078325879	13.943813099	0 # molecule nr 389
+Ion_Type1_261	19.322055911	16.928325879	14.265813099	0 # molecule nr 390
+Ion_Type1_262	20.181055911	17.939325879	13.523813099	0 # molecule nr 391
+Ion_Type3_128	4.712055911	20.178325879	13.943813099	0 # molecule nr 392
+Ion_Type1_263	3.865055911	20.351325879	13.528813099	0 # molecule nr 393
+Ion_Type1_264	4.860055911	20.927325879	14.522813099	0 # molecule nr 394
+Ion_Type3_129	7.812055911	20.178325879	13.943813099	0 # molecule nr 395
+Ion_Type1_265	8.073055911	19.390325879	14.421813099	0 # molecule nr 396
+Ion_Type1_266	8.031055911	20.905325879	14.528813099	0 # molecule nr 397
+Ion_Type3_130	10.912055911	20.178325879	13.943813099	0 # molecule nr 398
+Ion_Type1_267	10.153055911	19.688325879	13.623813099	0 # molecule nr 399
+Ion_Type1_268	11.599055911	20.019325879	13.294813099	0 # molecule nr 400
+Ion_Type3_131	14.012055911	20.178325879	13.943813099	0 # molecule nr 401
+Ion_Type1_269	14.304055911	19.764325879	13.129813099	0 # molecule nr 402
+Ion_Type1_270	13.344055911	20.810325879	13.673813099	0 # molecule nr 403
+Ion_Type3_132	17.112055911	20.178325879	13.943813099	0 # molecule nr 404
+Ion_Type1_271	18.070055911	20.209325879	13.925813099	0 # molecule nr 405
+Ion_Type1_272	16.842055911	21.053325879	14.226813099	0 # molecule nr 406
+Ion_Type3_133	20.212055911	20.178325879	13.943813099	0 # molecule nr 407
+Ion_Type1_273	19.585055911	19.801325879	13.324813099	0 # molecule nr 408
+Ion_Type1_274	20.994055911	20.363325879	13.420813099	0 # molecule nr 409
+Ion_Type3_134	4.712055911	4.678325879	17.043813099	0 # molecule nr 410
+Ion_Type1_275	5.231055911	4.800325879	17.839813099	0 # molecule nr 411
+Ion_Type1_276	3.808055911	4.590325879	17.349813099	0 # molecule nr 412
+Ion_Type3_135	7.812055911	4.678325879	17.043813099	0 # molecule nr 413
+Ion_Type1_277	7.754055911	4.254325879	16.186813099	0 # molecule nr 414
+Ion_Type1_278	7.577055911	5.593325879	16.882813099	0 # molecule nr 415
+Ion_Type3_136	10.912055911	4.678325879	17.043813099	0 # molecule nr 416
+Ion_Type1_279	11.288055911	3.985325879	17.588813099	0 # molecule nr 417
+Ion_Type1_280	10.511055911	5.289325879	17.663813099	0 # molecule nr 418
+Ion_Type3_137	14.012055911	4.678325879	17.043813099	0 # molecule nr 419
+Ion_Type1_281	14.323055911	5.443325879	16.557813099	0 # molecule nr 420
+Ion_Type1_282	14.550055911	4.654325879	17.836813099	0 # molecule nr 421
+Ion_Type3_138	17.112055911	4.678325879	17.043813099	0 # molecule nr 422
+Ion_Type1_283	16.669055911	4.557325879	17.884813099	0 # molecule nr 423
+Ion_Type1_284	18.044055911	4.568325879	17.237813099	0 # molecule nr 424
+Ion_Type3_139	20.212055911	4.678325879	17.043813099	0 # molecule nr 425
+Ion_Type1_285	19.425055911	4.164325879	16.858813099	0 # molecule nr 426
+Ion_Type1_286	19.904055911	5.423325879	17.562813099	0 # molecule nr 427
+Ion_Type3_140	4.712055911	7.778325879	17.043813099	0 # molecule nr 428
+Ion_Type1_287	4.346055911	7.018325879	16.587813099	0 # molecule nr 429
+Ion_Type1_288	4.913055911	8.408325879	16.350813099	0 # molecule nr 430
+Ion_Type3_141	7.812055911	7.778325879	17.043813099	0 # molecule nr 431
+Ion_Type1_289	7.033055911	8.332325879	16.978813099	0 # molecule nr 432
+Ion_Type1_290	8.407055911	8.108325879	16.368813099	0 # molecule nr 433
+Ion_Type3_142	10.912055911	7.778325879	17.043813099	0 # molecule nr 434
+Ion_Type1_291	11.247055911	8.215325879	17.828813099	0 # molecule nr 435
+Ion_Type1_292	11.693055911	7.513325879	16.555813099	0 # molecule nr 436
+Ion_Type3_143	14.012055911	7.778325879	17.043813099	0 # molecule nr 437
+Ion_Type1_293	14.510055911	8.538325879	16.739813099	0 # molecule nr 438
+Ion_Type1_294	13.961055911	7.881325879	17.995813099	0 # molecule nr 439
+Ion_Type3_144	17.112055911	7.778325879	17.043813099	0 # molecule nr 440
+Ion_Type1_295	18.008055911	8.116325879	17.081813099	0 # molecule nr 441
+Ion_Type1_296	16.769055911	7.887325879	17.932813099	0 # molecule nr 442
+Ion_Type3_145	20.212055911	7.778325879	17.043813099	0 # molecule nr 443
+Ion_Type1_297	20.173055911	7.358325879	16.182813099	0 # molecule nr 444
+Ion_Type1_298	20.429055911	8.694325879	16.861813099	0 # molecule nr 445
+Ion_Type3_146	4.712055911	10.878325879	17.043813099	0 # molecule nr 446
+Ion_Type1_299	4.015055911	10.812325879	16.389813099	0 # molecule nr 447
+Ion_Type1_300	4.468055911	11.627325879	17.589813099	0 # molecule nr 448
+Ion_Type3_147	7.812055911	10.878325879	17.043813099	0 # molecule nr 449
+Ion_Type1_301	7.429055911	10.108325879	17.465813099	0 # molecule nr 450
+Ion_Type1_302	7.153055911	11.166325879	16.410813099	0 # molecule nr 451
+Ion_Type3_148	10.912055911	10.878325879	17.043813099	0 # molecule nr 452
+Ion_Type1_303	10.867055911	10.602325879	16.126813099	0 # molecule nr 453
+Ion_Type1_304	10.263055911	11.579325879	17.122813099	0 # molecule nr 454
+Ion_Type3_149	14.012055911	10.878325879	17.043813099	0 # molecule nr 455
+Ion_Type1_305	14.937055911	10.906325879	17.291813099	0 # molecule nr 456
+Ion_Type1_306	13.560055911	10.536325879	17.816813099	0 # molecule nr 457
+Ion_Type3_150	17.112055911	10.878325879	17.043813099	0 # molecule nr 458
+Ion_Type1_307	17.687055911	10.236325879	16.623813099	0 # molecule nr 459
+Ion_Type1_308	17.250055911	11.690325879	16.554813099	0 # molecule nr 460
+Ion_Type3_151	20.212055911	10.878325879	17.043813099	0 # molecule nr 461
+Ion_Type1_309	20.830055911	10.357325879	17.557813099	0 # molecule nr 462
+Ion_Type1_310	19.569055911	10.247325879	16.716813099	0 # molecule nr 463
+Ion_Type3_152	4.712055911	13.978325879	17.043813099	0 # molecule nr 464
+Ion_Type1_311	3.945055911	13.563325879	17.440813099	0 # molecule nr 465
+Ion_Type1_312	5.309055911	14.144325879	17.774813099	0 # molecule nr 466
+Ion_Type3_153	7.812055911	13.978325879	17.043813099	0 # molecule nr 467
+Ion_Type1_313	8.341055911	13.376325879	16.518813099	0 # molecule nr 468
+Ion_Type1_314	7.245055911	14.423325879	16.412813099	0 # molecule nr 469
+Ion_Type3_154	10.912055911	13.978325879	17.043813099	0 # molecule nr 470
+Ion_Type1_315	10.623055911	13.765325879	16.154813099	0 # molecule nr 471
+Ion_Type1_316	10.845055911	13.154325879	17.528813099	0 # molecule nr 472
+Ion_Type3_155	14.012055911	13.978325879	17.043813099	0 # molecule nr 473
+Ion_Type1_317	13.846055911	14.578325879	16.315813099	0 # molecule nr 474
+Ion_Type1_318	14.443055911	13.220325879	16.644813099	0 # molecule nr 475
+Ion_Type3_156	17.112055911	13.978325879	17.043813099	0 # molecule nr 476
+Ion_Type1_319	16.806055911	14.389325879	16.233813099	0 # molecule nr 477
+Ion_Type1_320	17.963055911	13.598325879	16.821813099	0 # molecule nr 478
+Ion_Type3_157	20.212055911	13.978325879	17.043813099	0 # molecule nr 479
+Ion_Type1_321	20.831055911	14.049325879	17.771813099	0 # molecule nr 480
+Ion_Type1_322	19.433055911	14.454325879	17.334813099	0 # molecule nr 481
+Ion_Type3_158	4.712055911	17.078325879	17.043813099	0 # molecule nr 482
+Ion_Type1_323	4.123055911	17.557325879	16.459813099	0 # molecule nr 483
+Ion_Type1_324	5.294055911	16.589325879	16.459813099	0 # molecule nr 484
+Ion_Type3_159	7.812055911	17.078325879	17.043813099	0 # molecule nr 485
+Ion_Type1_325	8.042055911	17.462325879	17.891813099	0 # molecule nr 486
+Ion_Type1_326	7.392055911	16.243325879	17.256813099	0 # molecule nr 487
+Ion_Type3_160	10.912055911	17.078325879	17.043813099	0 # molecule nr 488
+Ion_Type1_327	11.610055911	16.695325879	16.510813099	0 # molecule nr 489
+Ion_Type1_328	10.146055911	17.101325879	16.467813099	0 # molecule nr 490
+Ion_Type3_161	14.012055911	17.078325879	17.043813099	0 # molecule nr 491
+Ion_Type1_329	13.645055911	16.325325879	16.577813099	0 # molecule nr 492
+Ion_Type1_330	14.164055911	17.737325879	16.364813099	0 # molecule nr 493
+Ion_Type3_162	17.112055911	17.078325879	17.043813099	0 # molecule nr 494
+Ion_Type1_331	17.969055911	16.649325879	17.031813099	0 # molecule nr 495
+Ion_Type1_332	16.615055911	16.618325879	17.721813099	0 # molecule nr 496
+Ion_Type3_163	20.212055911	17.078325879	17.043813099	0 # molecule nr 497
+Ion_Type1_333	21.057055911	16.913325879	16.623813099	0 # molecule nr 498
+Ion_Type1_334	20.037055911	18.008325879	16.889813099	0 # molecule nr 499
+Ion_Type3_164	4.712055911	20.178325879	17.043813099	0 # molecule nr 500
+Ion_Type1_335	3.956055911	19.991325879	16.484813099	0 # molecule nr 501
+Ion_Type1_336	5.173055911	20.895325879	16.604813099	0 # molecule nr 502
+Ion_Type3_165	7.812055911	20.178325879	17.043813099	0 # molecule nr 503
+Ion_Type1_337	8.297055911	20.449325879	16.262813099	0 # molecule nr 504
+Ion_Type1_338	8.186055911	19.329325879	17.283813099	0 # molecule nr 505
+Ion_Type3_166	10.912055911	20.178325879	17.043813099	0 # molecule nr 506
+Ion_Type1_339	10.685055911	19.628325879	17.794813099	0 # molecule nr 507
+Ion_Type1_340	10.898055911	21.075325879	17.381813099	0 # molecule nr 508
+Ion_Type3_167	14.012055911	20.178325879	17.043813099	0 # molecule nr 509
+Ion_Type1_341	13.360055911	20.081325879	16.347813099	0 # molecule nr 510
+Ion_Type1_342	14.679055911	20.760325879	16.676813099	0 # molecule nr 511
+Ion_Type3_168	17.112055911	20.178325879	17.043813099	0 # molecule nr 512
+Ion_Type1_343	18.003055911	20.004325879	16.735813099	0 # molecule nr 513
+Ion_Type1_344	16.948055911	19.512325879	17.713813099	0 # molecule nr 514
+Ion_Type3_169	20.212055911	20.178325879	17.043813099	0 # molecule nr 515
+Ion_Type1_345	20.390055911	21.066325879	17.356813099	0 # molecule nr 516
+Ion_Type1_346	20.700055911	20.103325879	16.221813099	0 # molecule nr 517
+Ion_Type3_170	4.712055911	4.678325879	20.143813099	0 # molecule nr 518
+Ion_Type1_347	4.638055911	5.601325879	19.895813099	0 # molecule nr 519
+Ion_Type1_348	4.904055911	4.690325879	21.082813099	0 # molecule nr 520
+Ion_Type3_171	7.812055911	4.678325879	20.143813099	0 # molecule nr 521
+Ion_Type1_349	8.424055911	4.412325879	20.831813099	0 # molecule nr 522
+Ion_Type1_350	7.201055911	3.944325879	20.059813099	0 # molecule nr 523
+Ion_Type3_172	10.912055911	4.678325879	20.143813099	0 # molecule nr 524
+Ion_Type1_351	10.990055911	3.723325879	20.153813099	0 # molecule nr 525
+Ion_Type1_352	10.001055911	4.849325879	19.898813099	0 # molecule nr 526
+Ion_Type3_173	14.012055911	4.678325879	20.143813099	0 # molecule nr 527
+Ion_Type1_353	14.486055911	4.904325879	19.341813099	0 # molecule nr 528
+Ion_Type1_354	13.653055911	5.508325879	20.459813099	0 # molecule nr 529
+Ion_Type3_174	17.112055911	4.678325879	20.143813099	0 # molecule nr 530
+Ion_Type1_355	16.263055911	4.962325879	20.484813099	0 # molecule nr 531
+Ion_Type1_356	17.724055911	4.801325879	20.870813099	0 # molecule nr 532
+Ion_Type3_175	20.212055911	4.678325879	20.143813099	0 # molecule nr 533
+Ion_Type1_357	19.256055911	4.668325879	20.077813099	0 # molecule nr 534
+Ion_Type1_358	20.409055911	4.186325879	20.942813099	0 # molecule nr 535
+Ion_Type3_176	4.712055911	7.778325879	20.143813099	0 # molecule nr 536
+Ion_Type1_359	4.395055911	8.351325879	20.843813099	0 # molecule nr 537
+Ion_Type1_360	5.296055911	8.328325879	19.619813099	0 # molecule nr 538
+Ion_Type3_177	7.812055911	7.778325879	20.143813099	0 # molecule nr 539
+Ion_Type1_361	8.311055911	8.111325879	19.395813099	0 # molecule nr 540
+Ion_Type1_362	6.893055911	7.865325879	19.885813099	0 # molecule nr 541
+Ion_Type3_178	10.912055911	7.778325879	20.143813099	0 # molecule nr 542
+Ion_Type1_363	10.178055911	7.464325879	19.612813099	0 # molecule nr 543
+Ion_Type1_364	11.155055911	8.620325879	19.755813099	0 # molecule nr 544
+Ion_Type3_179	14.012055911	7.778325879	20.143813099	0 # molecule nr 545
+Ion_Type1_365	14.502055911	7.116325879	20.634813099	0 # molecule nr 546
+Ion_Type1_366	13.950055911	7.429325879	19.252813099	0 # molecule nr 547
+Ion_Type3_180	17.112055911	7.778325879	20.143813099	0 # molecule nr 548
+Ion_Type1_367	17.157055911	7.126325879	19.442813099	0 # molecule nr 549
+Ion_Type1_368	16.185055911	7.817325879	20.384813099	0 # molecule nr 550
+Ion_Type3_181	20.212055911	7.778325879	20.143813099	0 # molecule nr 551
+Ion_Type1_369	19.420055911	8.083325879	20.588813099	0 # molecule nr 552
+Ion_Type1_370	20.126055911	6.824325879	20.112813099	0 # molecule nr 553
+Ion_Type3_182	4.712055911	10.878325879	20.143813099	0 # molecule nr 554
+Ion_Type1_371	4.380055911	10.928325879	19.245813099	0 # molecule nr 555
+Ion_Type1_372	5.665055911	10.825325879	20.051813099	0 # molecule nr 556
+Ion_Type3_183	7.812055911	10.878325879	20.143813099	0 # molecule nr 557
+Ion_Type1_373	7.823055911	10.655325879	19.211813099	0 # molecule nr 558
+Ion_Type1_374	8.562055911	11.462325879	20.266813099	0 # molecule nr 559
+Ion_Type3_184	10.912055911	10.878325879	20.143813099	0 # molecule nr 560
+Ion_Type1_375	10.788055911	11.371325879	20.955813099	0 # molecule nr 561
+Ion_Type1_376	10.340055911	10.114325879	20.229813099	0 # molecule nr 562
+Ion_Type3_185	14.012055911	10.878325879	20.143813099	0 # molecule nr 563
+Ion_Type1_377	13.728055911	10.738325879	19.238813099	0 # molecule nr 564
+Ion_Type1_378	13.750055911	10.083325879	20.610813099	0 # molecule nr 565
+Ion_Type3_186	17.112055911	10.878325879	20.143813099	0 # molecule nr 566
+Ion_Type1_379	17.696055911	11.249325879	20.806813099	0 # molecule nr 567
+Ion_Type1_380	16.232055911	11.149325879	20.410813099	0 # molecule nr 568
+Ion_Type3_187	20.212055911	10.878325879	20.143813099	0 # molecule nr 569
+Ion_Type1_381	21.101055911	11.040325879	19.823813099	0 # molecule nr 570
+Ion_Type1_382	19.755055911	10.471325879	19.406813099	0 # molecule nr 571
+Ion_Type3_188	4.712055911	13.978325879	20.143813099	0 # molecule nr 572
+Ion_Type1_383	5.045055911	13.226325879	19.651813099	0 # molecule nr 573
+Ion_Type1_384	4.082055911	13.608325879	20.763813099	0 # molecule nr 574
+Ion_Type3_189	7.812055911	13.978325879	20.143813099	0 # molecule nr 575
+Ion_Type1_385	7.256055911	13.205325879	20.033813099	0 # molecule nr 576
+Ion_Type1_386	8.220055911	14.112325879	19.286813099	0 # molecule nr 577
+Ion_Type3_190	10.912055911	13.978325879	20.143813099	0 # molecule nr 578
+Ion_Type1_387	11.220055911	13.122325879	19.840813099	0 # molecule nr 579
+Ion_Type1_388	11.586055911	14.281325879	20.754813099	0 # molecule nr 580
+Ion_Type3_191	14.012055911	13.978325879	20.143813099	0 # molecule nr 581
+Ion_Type1_389	13.289055911	14.359325879	20.644813099	0 # molecule nr 582
+Ion_Type1_390	14.687055911	13.781325879	20.795813099	0 # molecule nr 583
+Ion_Type3_192	17.112055911	13.978325879	20.143813099	0 # molecule nr 584
+Ion_Type1_391	17.184055911	13.237325879	20.746813099	0 # molecule nr 585
+Ion_Type1_392	16.339055911	14.462325879	20.438813099	0 # molecule nr 586
+Ion_Type3_193	20.212055911	13.978325879	20.143813099	0 # molecule nr 587
+Ion_Type1_393	20.750055911	14.764325879	20.252813099	0 # molecule nr 588
+Ion_Type1_394	20.022055911	13.683325879	21.035813099	0 # molecule nr 589
+Ion_Type3_194	4.712055911	17.078325879	20.143813099	0 # molecule nr 590
+Ion_Type1_395	4.317055911	16.255325879	20.436813099	0 # molecule nr 591
+Ion_Type1_396	4.401055911	17.737325879	20.766813099	0 # molecule nr 592
+Ion_Type3_195	7.812055911	17.078325879	20.143813099	0 # molecule nr 593
+Ion_Type1_397	8.275055911	16.422325879	20.667813099	0 # molecule nr 594
+Ion_Type1_398	7.434055911	17.683325879	20.783813099	0 # molecule nr 595
+Ion_Type3_196	10.912055911	17.078325879	20.143813099	0 # molecule nr 596
+Ion_Type1_399	11.762055911	16.746325879	19.851813099	0 # molecule nr 597
+Ion_Type1_400	10.737055911	16.618325879	20.965813099	0 # molecule nr 598
+Ion_Type3_197	14.012055911	17.078325879	20.143813099	0 # molecule nr 599
+Ion_Type1_401	13.392055911	17.430325879	19.503813099	0 # molecule nr 600
+Ion_Type1_402	14.423055911	16.332325879	19.704813099	0 # molecule nr 601
+Ion_Type3_198	17.112055911	17.078325879	20.143813099	0 # molecule nr 602
+Ion_Type1_403	17.911055911	17.386325879	20.575813099	0 # molecule nr 603
+Ion_Type1_404	16.973055911	16.193325879	20.483813099	0 # molecule nr 604
+Ion_Type3_199	20.212055911	17.078325879	20.143813099	0 # molecule nr 605
+Ion_Type1_405	19.796055911	17.101325879	19.280813099	0 # molecule nr 606
+Ion_Type1_406	20.773055911	16.301325879	20.126813099	0 # molecule nr 607
+Ion_Type3_200	4.712055911	20.178325879	20.143813099	0 # molecule nr 608
+Ion_Type1_407	5.067055911	19.292325879	20.232813099	0 # molecule nr 609
+Ion_Type1_408	4.761055911	20.553325879	21.024813099	0 # molecule nr 610
+Ion_Type3_201	7.812055911	20.178325879	20.143813099	0 # molecule nr 611
+Ion_Type1_409	7.747055911	19.779325879	19.274813099	0 # molecule nr 612
+Ion_Type1_410	8.171055911	21.053325879	19.987813099	0 # molecule nr 613
+Ion_Type3_202	10.912055911	20.178325879	20.143813099	0 # molecule nr 614
+Ion_Type1_411	10.285055911	20.829325879	20.462813099	0 # molecule nr 615
+Ion_Type1_412	11.576055911	20.116325879	20.831813099	0 # molecule nr 616
+Ion_Type3_203	14.012055911	20.178325879	20.143813099	0 # molecule nr 617
+Ion_Type1_413	13.108055911	20.388325879	20.382813099	0 # molecule nr 618
+Ion_Type1_414	14.444055911	21.027325879	20.040813099	0 # molecule nr 619
+Ion_Type3_204	17.112055911	20.178325879	20.143813099	0 # molecule nr 620
+Ion_Type1_415	17.886055911	20.655325879	20.447813099	0 # molecule nr 621
+Ion_Type1_416	17.071055911	19.396325879	20.696813099	0 # molecule nr 622
+Ion_Type3_205	20.212055911	20.178325879	20.143813099	0 # molecule nr 623
+Ion_Type1_417	20.410055911	20.874325879	19.514813099	0 # molecule nr 624
+Ion_Type1_418	20.119055911	19.385325879	19.613813099	0 # molecule nr 625
Index: tests/regression/Analysis/5/pre/test.conf
===================================================================
--- tests/regression/Analysis/5/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Analysis/5/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Domain/1/post/test.conf
===================================================================
--- tests/regression/Domain/1/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/1/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,70 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+10	
+0	10	
+0	0	10	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	0	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
Index: tests/regression/Domain/2/post/test.conf
===================================================================
--- tests/regression/Domain/2/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/2/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,73 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+15	
+0	15	
+0	0	15	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	1	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	2	1	1.0	3	3	1.00800000000	Hydrogen	H
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	7.000000000	7.500000000	6.500000000	0 # molecule nr 0
+Ion_Type1_2	8.000000000	7.500000000	8.500000000	0 # molecule nr 1
Index: tests/regression/Domain/2/pre/test.conf
===================================================================
--- tests/regression/Domain/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,73 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	1	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	2	1	1.0	3	3	1.00800000000	Hydrogen	H
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	10.000000000	10.000000000	10.000000000	0 # molecule nr 0
+Ion_Type1_2	11.000000000	10.000000000	12.000000000	0 # molecule nr 0
Index: tests/regression/Domain/3/post/test.conf
===================================================================
--- tests/regression/Domain/3/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/3/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,73 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+11	
+0	20	
+0	0	32	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	1	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	2	1	1.0	3	3	1.00800000000	Hydrogen	H
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	5.000000000	10.000000000	15.000000000	0 # molecule nr 0
+Ion_Type1_2	6.000000000	10.000000000	17.000000000	0 # molecule nr 1
Index: tests/regression/Domain/3/pre/test.conf
===================================================================
--- tests/regression/Domain/3/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/3/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,73 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	1	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	2	1	1.0	3	3	1.00800000000	Hydrogen	H
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	10.000000000	10.000000000	10.000000000	0 # molecule nr 0
+Ion_Type1_2	11.000000000	10.000000000	12.000000000	0 # molecule nr 0
Index: tests/regression/Domain/4/post/test.conf
===================================================================
--- tests/regression/Domain/4/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/4/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,73 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+1	
+0	0	
+0	0	2	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	1	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	2	1	1.0	3	3	1.00800000000	Hydrogen	H
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	0.000000000	0.000000000	0.000000000	0 # molecule nr 0
+Ion_Type1_2	1.000000000	0.000000000	2.000000000	0 # molecule nr 1
Index: tests/regression/Domain/4/pre/test.conf
===================================================================
--- tests/regression/Domain/4/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/4/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,73 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	1	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	2	1	1.0	3	3	1.00800000000	Hydrogen	H
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	10.000000000	10.000000000	10.000000000	0 # molecule nr 0
+Ion_Type1_2	11.000000000	10.000000000	12.000000000	0 # molecule nr 0
Index: tests/regression/Domain/5/post/test.conf
===================================================================
--- tests/regression/Domain/5/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/5/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+10	
+0	20	
+0	0	18	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	4.891042973	2.645886050	2.381297445	0 # molecule nr 0
+Ion_Type1_2	4.891042973	2.645886050	3.983297422	0 # molecule nr 1
+Ion_Type1_3	5.336019804	3.904536878	3.182297433	0 # molecule nr 2
+Ion_Type1_4	4.266392982	4.787886018	2.381297445	0 # molecule nr 3
+Ion_Type1_5	4.266392982	4.787886018	3.983297422	0 # molecule nr 4
+Ion_Type1_6	3.196816159	3.904536877	3.182297433	0 # molecule nr 5
+Ion_Type1_7	3.641792991	2.645886050	2.381297445	0 # molecule nr 6
+Ion_Type1_8	3.641792991	2.645886050	3.983297422	0 # molecule nr 7
+Ion_Type2_1	4.891042973	3.275186040	3.182297433	0 # molecule nr 8
+Ion_Type2_2	4.266392982	4.158586027	3.182297433	0 # molecule nr 9
+Ion_Type2_3	3.641792991	3.275186040	3.182297433	0 # molecule nr 10
Index: tests/regression/Domain/5/pre/test.conf
===================================================================
--- tests/regression/Domain/5/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/5/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 0
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 1
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 2
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 3
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 4
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 5
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 6
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 7
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 8
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 9
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 10
Index: tests/regression/Domain/6/post/test-x.conf.xyz
===================================================================
--- tests/regression/Domain/6/post/test-x.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/6/post/test-x.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,24 @@
+22
+	Created by molecuilder on Mon May 31 19:07:16 2010
+H	9.78209	2.64589	2.64589	
+C	27.2836	3.27519	3.53589	
+C	28.5328	4.15859	3.53589	
+C	29.7821	3.27519	3.53589	
+H	27.2836	2.64589	4.42589	
+H	9.78209	2.64589	4.42589	
+H	10.672	3.90454	3.53589	
+H	8.53279	4.78789	2.64589	
+H	27.2836	2.64589	2.64589	
+H	26.3936	3.90454	3.53589	
+H	28.5328	4.78789	4.42589	
+H	28.5328	4.78789	2.64589	
+H	30.672	3.90454	3.53589	
+H	29.7821	2.64589	4.42589	
+H	29.7821	2.64589	2.64589	
+H	8.53279	4.78789	4.42589	
+H	6.39363	3.90454	3.53589	
+H	7.28359	2.64589	2.64589	
+H	7.28359	2.64589	4.42589	
+C	9.78209	3.27519	3.53589	
+C	8.53279	4.15859	3.53589	
+C	7.28359	3.27519	3.53589	
Index: tests/regression/Domain/6/post/test-y.conf.xyz
===================================================================
--- tests/regression/Domain/6/post/test-y.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/6/post/test-y.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,24 @@
+22
+	Created by molecuilder on Mon May 31 19:07:16 2010
+H	9.78209	2.64589	2.64589	
+C	7.28359	23.2752	3.53589	
+C	8.53279	24.1586	3.53589	
+C	9.78209	23.2752	3.53589	
+H	7.28359	22.6459	4.42589	
+H	9.78209	2.64589	4.42589	
+H	10.672	3.90454	3.53589	
+H	8.53279	4.78789	2.64589	
+H	7.28359	22.6459	2.64589	
+H	6.39363	23.9045	3.53589	
+H	8.53279	24.7879	4.42589	
+H	8.53279	24.7879	2.64589	
+H	10.672	23.9045	3.53589	
+H	9.78209	22.6459	4.42589	
+H	9.78209	22.6459	2.64589	
+H	8.53279	4.78789	4.42589	
+H	6.39363	3.90454	3.53589	
+H	7.28359	2.64589	2.64589	
+H	7.28359	2.64589	4.42589	
+C	9.78209	3.27519	3.53589	
+C	8.53279	4.15859	3.53589	
+C	7.28359	3.27519	3.53589	
Index: tests/regression/Domain/6/post/test-z.conf.xyz
===================================================================
--- tests/regression/Domain/6/post/test-z.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/6/post/test-z.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,24 @@
+22
+	Created by molecuilder on Mon May 31 19:07:16 2010
+H	9.78209	2.64589	2.64589	
+C	7.28359	3.27519	23.5359	
+C	8.53279	4.15859	23.5359	
+C	9.78209	3.27519	23.5359	
+H	7.28359	2.64589	24.4259	
+H	9.78209	2.64589	4.42589	
+H	10.672	3.90454	3.53589	
+H	8.53279	4.78789	2.64589	
+H	7.28359	2.64589	22.6459	
+H	6.39363	3.90454	23.5359	
+H	8.53279	4.78789	24.4259	
+H	8.53279	4.78789	22.6459	
+H	10.672	3.90454	23.5359	
+H	9.78209	2.64589	24.4259	
+H	9.78209	2.64589	22.6459	
+H	8.53279	4.78789	4.42589	
+H	6.39363	3.90454	3.53589	
+H	7.28359	2.64589	2.64589	
+H	7.28359	2.64589	4.42589	
+C	9.78209	3.27519	3.53589	
+C	8.53279	4.15859	3.53589	
+C	7.28359	3.27519	3.53589	
Index: tests/regression/Domain/6/post/test.conf.xyz
===================================================================
--- tests/regression/Domain/6/post/test.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/6/post/test.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,13 @@
+11
+	Created by molecuilder on Mon May 31 19:21:12 2010
+H	9.78209	2.64589	2.64589	
+H	9.78209	2.64589	4.42589	
+H	10.672	3.90454	3.53589	
+H	8.53279	4.78789	2.64589	
+H	8.53279	4.78789	4.42589	
+H	6.39363	3.90454	3.53589	
+H	7.28359	2.64589	2.64589	
+H	7.28359	2.64589	4.42589	
+C	9.78209	3.27519	3.53589	
+C	8.53279	4.15859	3.53589	
+C	7.28359	3.27519	3.53589	
Index: tests/regression/Domain/6/pre/test.conf
===================================================================
--- tests/regression/Domain/6/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Domain/6/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 0
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 1
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 2
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 3
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 4
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 5
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 6
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 7
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 8
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 9
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 10
Index: tests/regression/Filling/1/post/test.conf
===================================================================
--- tests/regression/Filling/1/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Filling/1/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,1089 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	3	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	678	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+Ion_Type3	335	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 0
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 1
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 2
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 3
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 4
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 5
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 6
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 7
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 8
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 9
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 10
+Ion_Type3_1	0.000000000	0.000000000	0.504284000	0 # molecule nr 11
+Ion_Type1_9	0.758602000	0.000000000	1.008568000	0 # molecule nr 12
+Ion_Type1_10	0.758602000	0.000000000	0.000000000	0 # molecule nr 13
+Ion_Type3_2	0.000000000	0.000000000	3.361426857	0 # molecule nr 14
+Ion_Type1_11	0.758602000	0.000000000	3.865710857	0 # molecule nr 15
+Ion_Type1_12	0.758602000	0.000000000	2.857142857	0 # molecule nr 16
+Ion_Type3_3	0.000000000	0.000000000	6.218569714	0 # molecule nr 17
+Ion_Type1_13	0.758602000	0.000000000	6.722853714	0 # molecule nr 18
+Ion_Type1_14	0.758602000	0.000000000	5.714285714	0 # molecule nr 19
+Ion_Type3_4	0.000000000	0.000000000	9.075712571	0 # molecule nr 20
+Ion_Type1_15	0.758602000	0.000000000	9.579996571	0 # molecule nr 21
+Ion_Type1_16	0.758602000	0.000000000	8.571428571	0 # molecule nr 22
+Ion_Type3_5	0.000000000	0.000000000	11.932855429	0 # molecule nr 23
+Ion_Type1_17	0.758602000	0.000000000	12.437139429	0 # molecule nr 24
+Ion_Type1_18	0.758602000	0.000000000	11.428571429	0 # molecule nr 25
+Ion_Type3_6	0.000000000	0.000000000	14.789998286	0 # molecule nr 26
+Ion_Type1_19	0.758602000	0.000000000	15.294282286	0 # molecule nr 27
+Ion_Type1_20	0.758602000	0.000000000	14.285714286	0 # molecule nr 28
+Ion_Type3_7	0.000000000	0.000000000	17.647141143	0 # molecule nr 29
+Ion_Type1_21	0.758602000	0.000000000	18.151425143	0 # molecule nr 30
+Ion_Type1_22	0.758602000	0.000000000	17.142857143	0 # molecule nr 31
+Ion_Type3_8	0.000000000	2.857142857	0.504284000	0 # molecule nr 32
+Ion_Type1_23	0.758602000	2.857142857	1.008568000	0 # molecule nr 33
+Ion_Type1_24	0.758602000	2.857142857	0.000000000	0 # molecule nr 34
+Ion_Type3_9	0.000000000	2.857142857	3.361426857	0 # molecule nr 35
+Ion_Type1_25	0.758602000	2.857142857	3.865710857	0 # molecule nr 36
+Ion_Type1_26	0.758602000	2.857142857	2.857142857	0 # molecule nr 37
+Ion_Type3_10	0.000000000	2.857142857	6.218569714	0 # molecule nr 38
+Ion_Type1_27	0.758602000	2.857142857	6.722853714	0 # molecule nr 39
+Ion_Type1_28	0.758602000	2.857142857	5.714285714	0 # molecule nr 40
+Ion_Type3_11	0.000000000	2.857142857	9.075712571	0 # molecule nr 41
+Ion_Type1_29	0.758602000	2.857142857	9.579996571	0 # molecule nr 42
+Ion_Type1_30	0.758602000	2.857142857	8.571428571	0 # molecule nr 43
+Ion_Type3_12	0.000000000	2.857142857	11.932855429	0 # molecule nr 44
+Ion_Type1_31	0.758602000	2.857142857	12.437139429	0 # molecule nr 45
+Ion_Type1_32	0.758602000	2.857142857	11.428571429	0 # molecule nr 46
+Ion_Type3_13	0.000000000	2.857142857	14.789998286	0 # molecule nr 47
+Ion_Type1_33	0.758602000	2.857142857	15.294282286	0 # molecule nr 48
+Ion_Type1_34	0.758602000	2.857142857	14.285714286	0 # molecule nr 49
+Ion_Type3_14	0.000000000	2.857142857	17.647141143	0 # molecule nr 50
+Ion_Type1_35	0.758602000	2.857142857	18.151425143	0 # molecule nr 51
+Ion_Type1_36	0.758602000	2.857142857	17.142857143	0 # molecule nr 52
+Ion_Type3_15	0.000000000	5.714285714	0.504284000	0 # molecule nr 53
+Ion_Type1_37	0.758602000	5.714285714	1.008568000	0 # molecule nr 54
+Ion_Type1_38	0.758602000	5.714285714	0.000000000	0 # molecule nr 55
+Ion_Type3_16	0.000000000	5.714285714	3.361426857	0 # molecule nr 56
+Ion_Type1_39	0.758602000	5.714285714	3.865710857	0 # molecule nr 57
+Ion_Type1_40	0.758602000	5.714285714	2.857142857	0 # molecule nr 58
+Ion_Type3_17	0.000000000	5.714285714	6.218569714	0 # molecule nr 59
+Ion_Type1_41	0.758602000	5.714285714	6.722853714	0 # molecule nr 60
+Ion_Type1_42	0.758602000	5.714285714	5.714285714	0 # molecule nr 61
+Ion_Type3_18	0.000000000	5.714285714	9.075712571	0 # molecule nr 62
+Ion_Type1_43	0.758602000	5.714285714	9.579996571	0 # molecule nr 63
+Ion_Type1_44	0.758602000	5.714285714	8.571428571	0 # molecule nr 64
+Ion_Type3_19	0.000000000	5.714285714	11.932855429	0 # molecule nr 65
+Ion_Type1_45	0.758602000	5.714285714	12.437139429	0 # molecule nr 66
+Ion_Type1_46	0.758602000	5.714285714	11.428571429	0 # molecule nr 67
+Ion_Type3_20	0.000000000	5.714285714	14.789998286	0 # molecule nr 68
+Ion_Type1_47	0.758602000	5.714285714	15.294282286	0 # molecule nr 69
+Ion_Type1_48	0.758602000	5.714285714	14.285714286	0 # molecule nr 70
+Ion_Type3_21	0.000000000	5.714285714	17.647141143	0 # molecule nr 71
+Ion_Type1_49	0.758602000	5.714285714	18.151425143	0 # molecule nr 72
+Ion_Type1_50	0.758602000	5.714285714	17.142857143	0 # molecule nr 73
+Ion_Type3_22	0.000000000	8.571428571	0.504284000	0 # molecule nr 74
+Ion_Type1_51	0.758602000	8.571428571	1.008568000	0 # molecule nr 75
+Ion_Type1_52	0.758602000	8.571428571	0.000000000	0 # molecule nr 76
+Ion_Type3_23	0.000000000	8.571428571	3.361426857	0 # molecule nr 77
+Ion_Type1_53	0.758602000	8.571428571	3.865710857	0 # molecule nr 78
+Ion_Type1_54	0.758602000	8.571428571	2.857142857	0 # molecule nr 79
+Ion_Type3_24	0.000000000	8.571428571	6.218569714	0 # molecule nr 80
+Ion_Type1_55	0.758602000	8.571428571	6.722853714	0 # molecule nr 81
+Ion_Type1_56	0.758602000	8.571428571	5.714285714	0 # molecule nr 82
+Ion_Type3_25	0.000000000	8.571428571	9.075712571	0 # molecule nr 83
+Ion_Type1_57	0.758602000	8.571428571	9.579996571	0 # molecule nr 84
+Ion_Type1_58	0.758602000	8.571428571	8.571428571	0 # molecule nr 85
+Ion_Type3_26	0.000000000	8.571428571	11.932855429	0 # molecule nr 86
+Ion_Type1_59	0.758602000	8.571428571	12.437139429	0 # molecule nr 87
+Ion_Type1_60	0.758602000	8.571428571	11.428571429	0 # molecule nr 88
+Ion_Type3_27	0.000000000	8.571428571	14.789998286	0 # molecule nr 89
+Ion_Type1_61	0.758602000	8.571428571	15.294282286	0 # molecule nr 90
+Ion_Type1_62	0.758602000	8.571428571	14.285714286	0 # molecule nr 91
+Ion_Type3_28	0.000000000	8.571428571	17.647141143	0 # molecule nr 92
+Ion_Type1_63	0.758602000	8.571428571	18.151425143	0 # molecule nr 93
+Ion_Type1_64	0.758602000	8.571428571	17.142857143	0 # molecule nr 94
+Ion_Type3_29	0.000000000	11.428571429	0.504284000	0 # molecule nr 95
+Ion_Type1_65	0.758602000	11.428571429	1.008568000	0 # molecule nr 96
+Ion_Type1_66	0.758602000	11.428571429	0.000000000	0 # molecule nr 97
+Ion_Type3_30	0.000000000	11.428571429	3.361426857	0 # molecule nr 98
+Ion_Type1_67	0.758602000	11.428571429	3.865710857	0 # molecule nr 99
+Ion_Type1_68	0.758602000	11.428571429	2.857142857	0 # molecule nr 100
+Ion_Type3_31	0.000000000	11.428571429	6.218569714	0 # molecule nr 101
+Ion_Type1_69	0.758602000	11.428571429	6.722853714	0 # molecule nr 102
+Ion_Type1_70	0.758602000	11.428571429	5.714285714	0 # molecule nr 103
+Ion_Type3_32	0.000000000	11.428571429	9.075712571	0 # molecule nr 104
+Ion_Type1_71	0.758602000	11.428571429	9.579996571	0 # molecule nr 105
+Ion_Type1_72	0.758602000	11.428571429	8.571428571	0 # molecule nr 106
+Ion_Type3_33	0.000000000	11.428571429	11.932855429	0 # molecule nr 107
+Ion_Type1_73	0.758602000	11.428571429	12.437139429	0 # molecule nr 108
+Ion_Type1_74	0.758602000	11.428571429	11.428571429	0 # molecule nr 109
+Ion_Type3_34	0.000000000	11.428571429	14.789998286	0 # molecule nr 110
+Ion_Type1_75	0.758602000	11.428571429	15.294282286	0 # molecule nr 111
+Ion_Type1_76	0.758602000	11.428571429	14.285714286	0 # molecule nr 112
+Ion_Type3_35	0.000000000	11.428571429	17.647141143	0 # molecule nr 113
+Ion_Type1_77	0.758602000	11.428571429	18.151425143	0 # molecule nr 114
+Ion_Type1_78	0.758602000	11.428571429	17.142857143	0 # molecule nr 115
+Ion_Type3_36	0.000000000	14.285714286	0.504284000	0 # molecule nr 116
+Ion_Type1_79	0.758602000	14.285714286	1.008568000	0 # molecule nr 117
+Ion_Type1_80	0.758602000	14.285714286	0.000000000	0 # molecule nr 118
+Ion_Type3_37	0.000000000	14.285714286	3.361426857	0 # molecule nr 119
+Ion_Type1_81	0.758602000	14.285714286	3.865710857	0 # molecule nr 120
+Ion_Type1_82	0.758602000	14.285714286	2.857142857	0 # molecule nr 121
+Ion_Type3_38	0.000000000	14.285714286	6.218569714	0 # molecule nr 122
+Ion_Type1_83	0.758602000	14.285714286	6.722853714	0 # molecule nr 123
+Ion_Type1_84	0.758602000	14.285714286	5.714285714	0 # molecule nr 124
+Ion_Type3_39	0.000000000	14.285714286	9.075712571	0 # molecule nr 125
+Ion_Type1_85	0.758602000	14.285714286	9.579996571	0 # molecule nr 126
+Ion_Type1_86	0.758602000	14.285714286	8.571428571	0 # molecule nr 127
+Ion_Type3_40	0.000000000	14.285714286	11.932855429	0 # molecule nr 128
+Ion_Type1_87	0.758602000	14.285714286	12.437139429	0 # molecule nr 129
+Ion_Type1_88	0.758602000	14.285714286	11.428571429	0 # molecule nr 130
+Ion_Type3_41	0.000000000	14.285714286	14.789998286	0 # molecule nr 131
+Ion_Type1_89	0.758602000	14.285714286	15.294282286	0 # molecule nr 132
+Ion_Type1_90	0.758602000	14.285714286	14.285714286	0 # molecule nr 133
+Ion_Type3_42	0.000000000	14.285714286	17.647141143	0 # molecule nr 134
+Ion_Type1_91	0.758602000	14.285714286	18.151425143	0 # molecule nr 135
+Ion_Type1_92	0.758602000	14.285714286	17.142857143	0 # molecule nr 136
+Ion_Type3_43	0.000000000	17.142857143	0.504284000	0 # molecule nr 137
+Ion_Type1_93	0.758602000	17.142857143	1.008568000	0 # molecule nr 138
+Ion_Type1_94	0.758602000	17.142857143	0.000000000	0 # molecule nr 139
+Ion_Type3_44	0.000000000	17.142857143	3.361426857	0 # molecule nr 140
+Ion_Type1_95	0.758602000	17.142857143	3.865710857	0 # molecule nr 141
+Ion_Type1_96	0.758602000	17.142857143	2.857142857	0 # molecule nr 142
+Ion_Type3_45	0.000000000	17.142857143	6.218569714	0 # molecule nr 143
+Ion_Type1_97	0.758602000	17.142857143	6.722853714	0 # molecule nr 144
+Ion_Type1_98	0.758602000	17.142857143	5.714285714	0 # molecule nr 145
+Ion_Type3_46	0.000000000	17.142857143	9.075712571	0 # molecule nr 146
+Ion_Type1_99	0.758602000	17.142857143	9.579996571	0 # molecule nr 147
+Ion_Type1_100	0.758602000	17.142857143	8.571428571	0 # molecule nr 148
+Ion_Type3_47	0.000000000	17.142857143	11.932855429	0 # molecule nr 149
+Ion_Type1_101	0.758602000	17.142857143	12.437139429	0 # molecule nr 150
+Ion_Type1_102	0.758602000	17.142857143	11.428571429	0 # molecule nr 151
+Ion_Type3_48	0.000000000	17.142857143	14.789998286	0 # molecule nr 152
+Ion_Type1_103	0.758602000	17.142857143	15.294282286	0 # molecule nr 153
+Ion_Type1_104	0.758602000	17.142857143	14.285714286	0 # molecule nr 154
+Ion_Type3_49	0.000000000	17.142857143	17.647141143	0 # molecule nr 155
+Ion_Type1_105	0.758602000	17.142857143	18.151425143	0 # molecule nr 156
+Ion_Type1_106	0.758602000	17.142857143	17.142857143	0 # molecule nr 157
+Ion_Type3_50	2.857142857	0.000000000	0.504284000	0 # molecule nr 158
+Ion_Type1_107	3.615744857	0.000000000	1.008568000	0 # molecule nr 159
+Ion_Type1_108	3.615744857	0.000000000	0.000000000	0 # molecule nr 160
+Ion_Type3_51	2.857142857	0.000000000	3.361426857	0 # molecule nr 161
+Ion_Type1_109	3.615744857	0.000000000	3.865710857	0 # molecule nr 162
+Ion_Type1_110	3.615744857	0.000000000	2.857142857	0 # molecule nr 163
+Ion_Type3_52	2.857142857	0.000000000	6.218569714	0 # molecule nr 164
+Ion_Type1_111	3.615744857	0.000000000	6.722853714	0 # molecule nr 165
+Ion_Type1_112	3.615744857	0.000000000	5.714285714	0 # molecule nr 166
+Ion_Type3_53	2.857142857	0.000000000	9.075712571	0 # molecule nr 167
+Ion_Type1_113	3.615744857	0.000000000	9.579996571	0 # molecule nr 168
+Ion_Type1_114	3.615744857	0.000000000	8.571428571	0 # molecule nr 169
+Ion_Type3_54	2.857142857	0.000000000	11.932855429	0 # molecule nr 170
+Ion_Type1_115	3.615744857	0.000000000	12.437139429	0 # molecule nr 171
+Ion_Type1_116	3.615744857	0.000000000	11.428571429	0 # molecule nr 172
+Ion_Type3_55	2.857142857	0.000000000	14.789998286	0 # molecule nr 173
+Ion_Type1_117	3.615744857	0.000000000	15.294282286	0 # molecule nr 174
+Ion_Type1_118	3.615744857	0.000000000	14.285714286	0 # molecule nr 175
+Ion_Type3_56	2.857142857	0.000000000	17.647141143	0 # molecule nr 176
+Ion_Type1_119	3.615744857	0.000000000	18.151425143	0 # molecule nr 177
+Ion_Type1_120	3.615744857	0.000000000	17.142857143	0 # molecule nr 178
+Ion_Type3_57	2.857142857	2.857142857	0.504284000	0 # molecule nr 179
+Ion_Type1_121	3.615744857	2.857142857	1.008568000	0 # molecule nr 180
+Ion_Type1_122	3.615744857	2.857142857	0.000000000	0 # molecule nr 181
+Ion_Type3_58	2.857142857	2.857142857	3.361426857	0 # molecule nr 182
+Ion_Type1_123	3.615744857	2.857142857	3.865710857	0 # molecule nr 183
+Ion_Type1_124	3.615744857	2.857142857	2.857142857	0 # molecule nr 184
+Ion_Type3_59	2.857142857	2.857142857	6.218569714	0 # molecule nr 185
+Ion_Type1_125	3.615744857	2.857142857	6.722853714	0 # molecule nr 186
+Ion_Type1_126	3.615744857	2.857142857	5.714285714	0 # molecule nr 187
+Ion_Type3_60	2.857142857	2.857142857	9.075712571	0 # molecule nr 188
+Ion_Type1_127	3.615744857	2.857142857	9.579996571	0 # molecule nr 189
+Ion_Type1_128	3.615744857	2.857142857	8.571428571	0 # molecule nr 190
+Ion_Type3_61	2.857142857	2.857142857	11.932855429	0 # molecule nr 191
+Ion_Type1_129	3.615744857	2.857142857	12.437139429	0 # molecule nr 192
+Ion_Type1_130	3.615744857	2.857142857	11.428571429	0 # molecule nr 193
+Ion_Type3_62	2.857142857	2.857142857	14.789998286	0 # molecule nr 194
+Ion_Type1_131	3.615744857	2.857142857	15.294282286	0 # molecule nr 195
+Ion_Type1_132	3.615744857	2.857142857	14.285714286	0 # molecule nr 196
+Ion_Type3_63	2.857142857	2.857142857	17.647141143	0 # molecule nr 197
+Ion_Type1_133	3.615744857	2.857142857	18.151425143	0 # molecule nr 198
+Ion_Type1_134	3.615744857	2.857142857	17.142857143	0 # molecule nr 199
+Ion_Type3_64	2.857142857	5.714285714	0.504284000	0 # molecule nr 200
+Ion_Type1_135	3.615744857	5.714285714	1.008568000	0 # molecule nr 201
+Ion_Type1_136	3.615744857	5.714285714	0.000000000	0 # molecule nr 202
+Ion_Type3_65	2.857142857	5.714285714	3.361426857	0 # molecule nr 203
+Ion_Type1_137	3.615744857	5.714285714	3.865710857	0 # molecule nr 204
+Ion_Type1_138	3.615744857	5.714285714	2.857142857	0 # molecule nr 205
+Ion_Type3_66	2.857142857	5.714285714	6.218569714	0 # molecule nr 206
+Ion_Type1_139	3.615744857	5.714285714	6.722853714	0 # molecule nr 207
+Ion_Type1_140	3.615744857	5.714285714	5.714285714	0 # molecule nr 208
+Ion_Type3_67	2.857142857	5.714285714	9.075712571	0 # molecule nr 209
+Ion_Type1_141	3.615744857	5.714285714	9.579996571	0 # molecule nr 210
+Ion_Type1_142	3.615744857	5.714285714	8.571428571	0 # molecule nr 211
+Ion_Type3_68	2.857142857	5.714285714	11.932855429	0 # molecule nr 212
+Ion_Type1_143	3.615744857	5.714285714	12.437139429	0 # molecule nr 213
+Ion_Type1_144	3.615744857	5.714285714	11.428571429	0 # molecule nr 214
+Ion_Type3_69	2.857142857	5.714285714	14.789998286	0 # molecule nr 215
+Ion_Type1_145	3.615744857	5.714285714	15.294282286	0 # molecule nr 216
+Ion_Type1_146	3.615744857	5.714285714	14.285714286	0 # molecule nr 217
+Ion_Type3_70	2.857142857	5.714285714	17.647141143	0 # molecule nr 218
+Ion_Type1_147	3.615744857	5.714285714	18.151425143	0 # molecule nr 219
+Ion_Type1_148	3.615744857	5.714285714	17.142857143	0 # molecule nr 220
+Ion_Type3_71	2.857142857	8.571428571	0.504284000	0 # molecule nr 221
+Ion_Type1_149	3.615744857	8.571428571	1.008568000	0 # molecule nr 222
+Ion_Type1_150	3.615744857	8.571428571	0.000000000	0 # molecule nr 223
+Ion_Type3_72	2.857142857	8.571428571	3.361426857	0 # molecule nr 224
+Ion_Type1_151	3.615744857	8.571428571	3.865710857	0 # molecule nr 225
+Ion_Type1_152	3.615744857	8.571428571	2.857142857	0 # molecule nr 226
+Ion_Type3_73	2.857142857	8.571428571	6.218569714	0 # molecule nr 227
+Ion_Type1_153	3.615744857	8.571428571	6.722853714	0 # molecule nr 228
+Ion_Type1_154	3.615744857	8.571428571	5.714285714	0 # molecule nr 229
+Ion_Type3_74	2.857142857	8.571428571	9.075712571	0 # molecule nr 230
+Ion_Type1_155	3.615744857	8.571428571	9.579996571	0 # molecule nr 231
+Ion_Type1_156	3.615744857	8.571428571	8.571428571	0 # molecule nr 232
+Ion_Type3_75	2.857142857	8.571428571	11.932855429	0 # molecule nr 233
+Ion_Type1_157	3.615744857	8.571428571	12.437139429	0 # molecule nr 234
+Ion_Type1_158	3.615744857	8.571428571	11.428571429	0 # molecule nr 235
+Ion_Type3_76	2.857142857	8.571428571	14.789998286	0 # molecule nr 236
+Ion_Type1_159	3.615744857	8.571428571	15.294282286	0 # molecule nr 237
+Ion_Type1_160	3.615744857	8.571428571	14.285714286	0 # molecule nr 238
+Ion_Type3_77	2.857142857	8.571428571	17.647141143	0 # molecule nr 239
+Ion_Type1_161	3.615744857	8.571428571	18.151425143	0 # molecule nr 240
+Ion_Type1_162	3.615744857	8.571428571	17.142857143	0 # molecule nr 241
+Ion_Type3_78	2.857142857	11.428571429	0.504284000	0 # molecule nr 242
+Ion_Type1_163	3.615744857	11.428571429	1.008568000	0 # molecule nr 243
+Ion_Type1_164	3.615744857	11.428571429	0.000000000	0 # molecule nr 244
+Ion_Type3_79	2.857142857	11.428571429	3.361426857	0 # molecule nr 245
+Ion_Type1_165	3.615744857	11.428571429	3.865710857	0 # molecule nr 246
+Ion_Type1_166	3.615744857	11.428571429	2.857142857	0 # molecule nr 247
+Ion_Type3_80	2.857142857	11.428571429	6.218569714	0 # molecule nr 248
+Ion_Type1_167	3.615744857	11.428571429	6.722853714	0 # molecule nr 249
+Ion_Type1_168	3.615744857	11.428571429	5.714285714	0 # molecule nr 250
+Ion_Type3_81	2.857142857	11.428571429	9.075712571	0 # molecule nr 251
+Ion_Type1_169	3.615744857	11.428571429	9.579996571	0 # molecule nr 252
+Ion_Type1_170	3.615744857	11.428571429	8.571428571	0 # molecule nr 253
+Ion_Type3_82	2.857142857	11.428571429	11.932855429	0 # molecule nr 254
+Ion_Type1_171	3.615744857	11.428571429	12.437139429	0 # molecule nr 255
+Ion_Type1_172	3.615744857	11.428571429	11.428571429	0 # molecule nr 256
+Ion_Type3_83	2.857142857	11.428571429	14.789998286	0 # molecule nr 257
+Ion_Type1_173	3.615744857	11.428571429	15.294282286	0 # molecule nr 258
+Ion_Type1_174	3.615744857	11.428571429	14.285714286	0 # molecule nr 259
+Ion_Type3_84	2.857142857	11.428571429	17.647141143	0 # molecule nr 260
+Ion_Type1_175	3.615744857	11.428571429	18.151425143	0 # molecule nr 261
+Ion_Type1_176	3.615744857	11.428571429	17.142857143	0 # molecule nr 262
+Ion_Type3_85	2.857142857	14.285714286	0.504284000	0 # molecule nr 263
+Ion_Type1_177	3.615744857	14.285714286	1.008568000	0 # molecule nr 264
+Ion_Type1_178	3.615744857	14.285714286	0.000000000	0 # molecule nr 265
+Ion_Type3_86	2.857142857	14.285714286	3.361426857	0 # molecule nr 266
+Ion_Type1_179	3.615744857	14.285714286	3.865710857	0 # molecule nr 267
+Ion_Type1_180	3.615744857	14.285714286	2.857142857	0 # molecule nr 268
+Ion_Type3_87	2.857142857	14.285714286	6.218569714	0 # molecule nr 269
+Ion_Type1_181	3.615744857	14.285714286	6.722853714	0 # molecule nr 270
+Ion_Type1_182	3.615744857	14.285714286	5.714285714	0 # molecule nr 271
+Ion_Type3_88	2.857142857	14.285714286	9.075712571	0 # molecule nr 272
+Ion_Type1_183	3.615744857	14.285714286	9.579996571	0 # molecule nr 273
+Ion_Type1_184	3.615744857	14.285714286	8.571428571	0 # molecule nr 274
+Ion_Type3_89	2.857142857	14.285714286	11.932855429	0 # molecule nr 275
+Ion_Type1_185	3.615744857	14.285714286	12.437139429	0 # molecule nr 276
+Ion_Type1_186	3.615744857	14.285714286	11.428571429	0 # molecule nr 277
+Ion_Type3_90	2.857142857	14.285714286	14.789998286	0 # molecule nr 278
+Ion_Type1_187	3.615744857	14.285714286	15.294282286	0 # molecule nr 279
+Ion_Type1_188	3.615744857	14.285714286	14.285714286	0 # molecule nr 280
+Ion_Type3_91	2.857142857	14.285714286	17.647141143	0 # molecule nr 281
+Ion_Type1_189	3.615744857	14.285714286	18.151425143	0 # molecule nr 282
+Ion_Type1_190	3.615744857	14.285714286	17.142857143	0 # molecule nr 283
+Ion_Type3_92	2.857142857	17.142857143	0.504284000	0 # molecule nr 284
+Ion_Type1_191	3.615744857	17.142857143	1.008568000	0 # molecule nr 285
+Ion_Type1_192	3.615744857	17.142857143	0.000000000	0 # molecule nr 286
+Ion_Type3_93	2.857142857	17.142857143	3.361426857	0 # molecule nr 287
+Ion_Type1_193	3.615744857	17.142857143	3.865710857	0 # molecule nr 288
+Ion_Type1_194	3.615744857	17.142857143	2.857142857	0 # molecule nr 289
+Ion_Type3_94	2.857142857	17.142857143	6.218569714	0 # molecule nr 290
+Ion_Type1_195	3.615744857	17.142857143	6.722853714	0 # molecule nr 291
+Ion_Type1_196	3.615744857	17.142857143	5.714285714	0 # molecule nr 292
+Ion_Type3_95	2.857142857	17.142857143	9.075712571	0 # molecule nr 293
+Ion_Type1_197	3.615744857	17.142857143	9.579996571	0 # molecule nr 294
+Ion_Type1_198	3.615744857	17.142857143	8.571428571	0 # molecule nr 295
+Ion_Type3_96	2.857142857	17.142857143	11.932855429	0 # molecule nr 296
+Ion_Type1_199	3.615744857	17.142857143	12.437139429	0 # molecule nr 297
+Ion_Type1_200	3.615744857	17.142857143	11.428571429	0 # molecule nr 298
+Ion_Type3_97	2.857142857	17.142857143	14.789998286	0 # molecule nr 299
+Ion_Type1_201	3.615744857	17.142857143	15.294282286	0 # molecule nr 300
+Ion_Type1_202	3.615744857	17.142857143	14.285714286	0 # molecule nr 301
+Ion_Type3_98	2.857142857	17.142857143	17.647141143	0 # molecule nr 302
+Ion_Type1_203	3.615744857	17.142857143	18.151425143	0 # molecule nr 303
+Ion_Type1_204	3.615744857	17.142857143	17.142857143	0 # molecule nr 304
+Ion_Type3_99	5.714285714	0.000000000	0.504284000	0 # molecule nr 305
+Ion_Type1_205	6.472887714	0.000000000	1.008568000	0 # molecule nr 306
+Ion_Type1_206	6.472887714	0.000000000	0.000000000	0 # molecule nr 307
+Ion_Type3_100	5.714285714	0.000000000	3.361426857	0 # molecule nr 308
+Ion_Type1_207	6.472887714	0.000000000	3.865710857	0 # molecule nr 309
+Ion_Type1_208	6.472887714	0.000000000	2.857142857	0 # molecule nr 310
+Ion_Type3_101	5.714285714	0.000000000	6.218569714	0 # molecule nr 311
+Ion_Type1_209	6.472887714	0.000000000	6.722853714	0 # molecule nr 312
+Ion_Type1_210	6.472887714	0.000000000	5.714285714	0 # molecule nr 313
+Ion_Type3_102	5.714285714	0.000000000	9.075712571	0 # molecule nr 314
+Ion_Type1_211	6.472887714	0.000000000	9.579996571	0 # molecule nr 315
+Ion_Type1_212	6.472887714	0.000000000	8.571428571	0 # molecule nr 316
+Ion_Type3_103	5.714285714	0.000000000	11.932855429	0 # molecule nr 317
+Ion_Type1_213	6.472887714	0.000000000	12.437139429	0 # molecule nr 318
+Ion_Type1_214	6.472887714	0.000000000	11.428571429	0 # molecule nr 319
+Ion_Type3_104	5.714285714	0.000000000	14.789998286	0 # molecule nr 320
+Ion_Type1_215	6.472887714	0.000000000	15.294282286	0 # molecule nr 321
+Ion_Type1_216	6.472887714	0.000000000	14.285714286	0 # molecule nr 322
+Ion_Type3_105	5.714285714	0.000000000	17.647141143	0 # molecule nr 323
+Ion_Type1_217	6.472887714	0.000000000	18.151425143	0 # molecule nr 324
+Ion_Type1_218	6.472887714	0.000000000	17.142857143	0 # molecule nr 325
+Ion_Type3_106	5.714285714	2.857142857	0.504284000	0 # molecule nr 326
+Ion_Type1_219	6.472887714	2.857142857	0.000000000	0 # molecule nr 327
+Ion_Type3_107	5.714285714	2.857142857	6.218569714	0 # molecule nr 328
+Ion_Type1_220	6.472887714	2.857142857	6.722853714	0 # molecule nr 329
+Ion_Type3_108	5.714285714	2.857142857	9.075712571	0 # molecule nr 330
+Ion_Type1_221	6.472887714	2.857142857	9.579996571	0 # molecule nr 331
+Ion_Type1_222	6.472887714	2.857142857	8.571428571	0 # molecule nr 332
+Ion_Type3_109	5.714285714	2.857142857	11.932855429	0 # molecule nr 333
+Ion_Type1_223	6.472887714	2.857142857	12.437139429	0 # molecule nr 334
+Ion_Type1_224	6.472887714	2.857142857	11.428571429	0 # molecule nr 335
+Ion_Type3_110	5.714285714	2.857142857	14.789998286	0 # molecule nr 336
+Ion_Type1_225	6.472887714	2.857142857	15.294282286	0 # molecule nr 337
+Ion_Type1_226	6.472887714	2.857142857	14.285714286	0 # molecule nr 338
+Ion_Type3_111	5.714285714	2.857142857	17.647141143	0 # molecule nr 339
+Ion_Type1_227	6.472887714	2.857142857	18.151425143	0 # molecule nr 340
+Ion_Type1_228	6.472887714	2.857142857	17.142857143	0 # molecule nr 341
+Ion_Type3_112	5.714285714	5.714285714	0.504284000	0 # molecule nr 342
+Ion_Type1_229	6.472887714	5.714285714	1.008568000	0 # molecule nr 343
+Ion_Type1_230	6.472887714	5.714285714	0.000000000	0 # molecule nr 344
+Ion_Type3_113	5.714285714	5.714285714	6.218569714	0 # molecule nr 345
+Ion_Type1_231	6.472887714	5.714285714	6.722853714	0 # molecule nr 346
+Ion_Type1_232	6.472887714	5.714285714	5.714285714	0 # molecule nr 347
+Ion_Type3_114	5.714285714	5.714285714	9.075712571	0 # molecule nr 348
+Ion_Type1_233	6.472887714	5.714285714	9.579996571	0 # molecule nr 349
+Ion_Type1_234	6.472887714	5.714285714	8.571428571	0 # molecule nr 350
+Ion_Type3_115	5.714285714	5.714285714	11.932855429	0 # molecule nr 351
+Ion_Type1_235	6.472887714	5.714285714	12.437139429	0 # molecule nr 352
+Ion_Type1_236	6.472887714	5.714285714	11.428571429	0 # molecule nr 353
+Ion_Type3_116	5.714285714	5.714285714	14.789998286	0 # molecule nr 354
+Ion_Type1_237	6.472887714	5.714285714	15.294282286	0 # molecule nr 355
+Ion_Type1_238	6.472887714	5.714285714	14.285714286	0 # molecule nr 356
+Ion_Type3_117	5.714285714	5.714285714	17.647141143	0 # molecule nr 357
+Ion_Type1_239	6.472887714	5.714285714	18.151425143	0 # molecule nr 358
+Ion_Type1_240	6.472887714	5.714285714	17.142857143	0 # molecule nr 359
+Ion_Type3_118	5.714285714	8.571428571	0.504284000	0 # molecule nr 360
+Ion_Type1_241	6.472887714	8.571428571	1.008568000	0 # molecule nr 361
+Ion_Type1_242	6.472887714	8.571428571	0.000000000	0 # molecule nr 362
+Ion_Type3_119	5.714285714	8.571428571	3.361426857	0 # molecule nr 363
+Ion_Type1_243	6.472887714	8.571428571	3.865710857	0 # molecule nr 364
+Ion_Type1_244	6.472887714	8.571428571	2.857142857	0 # molecule nr 365
+Ion_Type3_120	5.714285714	8.571428571	6.218569714	0 # molecule nr 366
+Ion_Type1_245	6.472887714	8.571428571	6.722853714	0 # molecule nr 367
+Ion_Type1_246	6.472887714	8.571428571	5.714285714	0 # molecule nr 368
+Ion_Type3_121	5.714285714	8.571428571	9.075712571	0 # molecule nr 369
+Ion_Type1_247	6.472887714	8.571428571	9.579996571	0 # molecule nr 370
+Ion_Type1_248	6.472887714	8.571428571	8.571428571	0 # molecule nr 371
+Ion_Type3_122	5.714285714	8.571428571	11.932855429	0 # molecule nr 372
+Ion_Type1_249	6.472887714	8.571428571	12.437139429	0 # molecule nr 373
+Ion_Type1_250	6.472887714	8.571428571	11.428571429	0 # molecule nr 374
+Ion_Type3_123	5.714285714	8.571428571	14.789998286	0 # molecule nr 375
+Ion_Type1_251	6.472887714	8.571428571	15.294282286	0 # molecule nr 376
+Ion_Type1_252	6.472887714	8.571428571	14.285714286	0 # molecule nr 377
+Ion_Type3_124	5.714285714	8.571428571	17.647141143	0 # molecule nr 378
+Ion_Type1_253	6.472887714	8.571428571	18.151425143	0 # molecule nr 379
+Ion_Type1_254	6.472887714	8.571428571	17.142857143	0 # molecule nr 380
+Ion_Type3_125	5.714285714	11.428571429	0.504284000	0 # molecule nr 381
+Ion_Type1_255	6.472887714	11.428571429	1.008568000	0 # molecule nr 382
+Ion_Type1_256	6.472887714	11.428571429	0.000000000	0 # molecule nr 383
+Ion_Type3_126	5.714285714	11.428571429	3.361426857	0 # molecule nr 384
+Ion_Type1_257	6.472887714	11.428571429	3.865710857	0 # molecule nr 385
+Ion_Type1_258	6.472887714	11.428571429	2.857142857	0 # molecule nr 386
+Ion_Type3_127	5.714285714	11.428571429	6.218569714	0 # molecule nr 387
+Ion_Type1_259	6.472887714	11.428571429	6.722853714	0 # molecule nr 388
+Ion_Type1_260	6.472887714	11.428571429	5.714285714	0 # molecule nr 389
+Ion_Type3_128	5.714285714	11.428571429	9.075712571	0 # molecule nr 390
+Ion_Type1_261	6.472887714	11.428571429	9.579996571	0 # molecule nr 391
+Ion_Type1_262	6.472887714	11.428571429	8.571428571	0 # molecule nr 392
+Ion_Type3_129	5.714285714	11.428571429	11.932855429	0 # molecule nr 393
+Ion_Type1_263	6.472887714	11.428571429	12.437139429	0 # molecule nr 394
+Ion_Type1_264	6.472887714	11.428571429	11.428571429	0 # molecule nr 395
+Ion_Type3_130	5.714285714	11.428571429	14.789998286	0 # molecule nr 396
+Ion_Type1_265	6.472887714	11.428571429	15.294282286	0 # molecule nr 397
+Ion_Type1_266	6.472887714	11.428571429	14.285714286	0 # molecule nr 398
+Ion_Type3_131	5.714285714	11.428571429	17.647141143	0 # molecule nr 399
+Ion_Type1_267	6.472887714	11.428571429	18.151425143	0 # molecule nr 400
+Ion_Type1_268	6.472887714	11.428571429	17.142857143	0 # molecule nr 401
+Ion_Type3_132	5.714285714	14.285714286	0.504284000	0 # molecule nr 402
+Ion_Type1_269	6.472887714	14.285714286	1.008568000	0 # molecule nr 403
+Ion_Type1_270	6.472887714	14.285714286	0.000000000	0 # molecule nr 404
+Ion_Type3_133	5.714285714	14.285714286	3.361426857	0 # molecule nr 405
+Ion_Type1_271	6.472887714	14.285714286	3.865710857	0 # molecule nr 406
+Ion_Type1_272	6.472887714	14.285714286	2.857142857	0 # molecule nr 407
+Ion_Type3_134	5.714285714	14.285714286	6.218569714	0 # molecule nr 408
+Ion_Type1_273	6.472887714	14.285714286	6.722853714	0 # molecule nr 409
+Ion_Type1_274	6.472887714	14.285714286	5.714285714	0 # molecule nr 410
+Ion_Type3_135	5.714285714	14.285714286	9.075712571	0 # molecule nr 411
+Ion_Type1_275	6.472887714	14.285714286	9.579996571	0 # molecule nr 412
+Ion_Type1_276	6.472887714	14.285714286	8.571428571	0 # molecule nr 413
+Ion_Type3_136	5.714285714	14.285714286	11.932855429	0 # molecule nr 414
+Ion_Type1_277	6.472887714	14.285714286	12.437139429	0 # molecule nr 415
+Ion_Type1_278	6.472887714	14.285714286	11.428571429	0 # molecule nr 416
+Ion_Type3_137	5.714285714	14.285714286	14.789998286	0 # molecule nr 417
+Ion_Type1_279	6.472887714	14.285714286	15.294282286	0 # molecule nr 418
+Ion_Type1_280	6.472887714	14.285714286	14.285714286	0 # molecule nr 419
+Ion_Type3_138	5.714285714	14.285714286	17.647141143	0 # molecule nr 420
+Ion_Type1_281	6.472887714	14.285714286	18.151425143	0 # molecule nr 421
+Ion_Type1_282	6.472887714	14.285714286	17.142857143	0 # molecule nr 422
+Ion_Type3_139	5.714285714	17.142857143	0.504284000	0 # molecule nr 423
+Ion_Type1_283	6.472887714	17.142857143	1.008568000	0 # molecule nr 424
+Ion_Type1_284	6.472887714	17.142857143	0.000000000	0 # molecule nr 425
+Ion_Type3_140	5.714285714	17.142857143	3.361426857	0 # molecule nr 426
+Ion_Type1_285	6.472887714	17.142857143	3.865710857	0 # molecule nr 427
+Ion_Type1_286	6.472887714	17.142857143	2.857142857	0 # molecule nr 428
+Ion_Type3_141	5.714285714	17.142857143	6.218569714	0 # molecule nr 429
+Ion_Type1_287	6.472887714	17.142857143	6.722853714	0 # molecule nr 430
+Ion_Type1_288	6.472887714	17.142857143	5.714285714	0 # molecule nr 431
+Ion_Type3_142	5.714285714	17.142857143	9.075712571	0 # molecule nr 432
+Ion_Type1_289	6.472887714	17.142857143	9.579996571	0 # molecule nr 433
+Ion_Type1_290	6.472887714	17.142857143	8.571428571	0 # molecule nr 434
+Ion_Type3_143	5.714285714	17.142857143	11.932855429	0 # molecule nr 435
+Ion_Type1_291	6.472887714	17.142857143	12.437139429	0 # molecule nr 436
+Ion_Type1_292	6.472887714	17.142857143	11.428571429	0 # molecule nr 437
+Ion_Type3_144	5.714285714	17.142857143	14.789998286	0 # molecule nr 438
+Ion_Type1_293	6.472887714	17.142857143	15.294282286	0 # molecule nr 439
+Ion_Type1_294	6.472887714	17.142857143	14.285714286	0 # molecule nr 440
+Ion_Type3_145	5.714285714	17.142857143	17.647141143	0 # molecule nr 441
+Ion_Type1_295	6.472887714	17.142857143	18.151425143	0 # molecule nr 442
+Ion_Type1_296	6.472887714	17.142857143	17.142857143	0 # molecule nr 443
+Ion_Type3_146	8.571428571	0.000000000	0.504284000	0 # molecule nr 444
+Ion_Type1_297	9.330030571	0.000000000	1.008568000	0 # molecule nr 445
+Ion_Type1_298	9.330030571	0.000000000	0.000000000	0 # molecule nr 446
+Ion_Type3_147	8.571428571	0.000000000	3.361426857	0 # molecule nr 447
+Ion_Type1_299	9.330030571	0.000000000	3.865710857	0 # molecule nr 448
+Ion_Type1_300	9.330030571	0.000000000	2.857142857	0 # molecule nr 449
+Ion_Type3_148	8.571428571	0.000000000	6.218569714	0 # molecule nr 450
+Ion_Type1_301	9.330030571	0.000000000	6.722853714	0 # molecule nr 451
+Ion_Type1_302	9.330030571	0.000000000	5.714285714	0 # molecule nr 452
+Ion_Type3_149	8.571428571	0.000000000	9.075712571	0 # molecule nr 453
+Ion_Type1_303	9.330030571	0.000000000	9.579996571	0 # molecule nr 454
+Ion_Type1_304	9.330030571	0.000000000	8.571428571	0 # molecule nr 455
+Ion_Type3_150	8.571428571	0.000000000	11.932855429	0 # molecule nr 456
+Ion_Type1_305	9.330030571	0.000000000	12.437139429	0 # molecule nr 457
+Ion_Type1_306	9.330030571	0.000000000	11.428571429	0 # molecule nr 458
+Ion_Type3_151	8.571428571	0.000000000	14.789998286	0 # molecule nr 459
+Ion_Type1_307	9.330030571	0.000000000	15.294282286	0 # molecule nr 460
+Ion_Type1_308	9.330030571	0.000000000	14.285714286	0 # molecule nr 461
+Ion_Type3_152	8.571428571	0.000000000	17.647141143	0 # molecule nr 462
+Ion_Type1_309	9.330030571	0.000000000	18.151425143	0 # molecule nr 463
+Ion_Type1_310	9.330030571	0.000000000	17.142857143	0 # molecule nr 464
+Ion_Type3_153	8.571428571	2.857142857	0.504284000	0 # molecule nr 465
+Ion_Type1_311	9.330030571	2.857142857	0.000000000	0 # molecule nr 466
+Ion_Type1_312	9.330030571	2.857142857	6.722853714	0 # molecule nr 467
+Ion_Type3_154	8.571428571	2.857142857	9.075712571	0 # molecule nr 468
+Ion_Type1_313	9.330030571	2.857142857	9.579996571	0 # molecule nr 469
+Ion_Type1_314	9.330030571	2.857142857	8.571428571	0 # molecule nr 470
+Ion_Type3_155	8.571428571	2.857142857	11.932855429	0 # molecule nr 471
+Ion_Type1_315	9.330030571	2.857142857	12.437139429	0 # molecule nr 472
+Ion_Type1_316	9.330030571	2.857142857	11.428571429	0 # molecule nr 473
+Ion_Type3_156	8.571428571	2.857142857	14.789998286	0 # molecule nr 474
+Ion_Type1_317	9.330030571	2.857142857	15.294282286	0 # molecule nr 475
+Ion_Type1_318	9.330030571	2.857142857	14.285714286	0 # molecule nr 476
+Ion_Type3_157	8.571428571	2.857142857	17.647141143	0 # molecule nr 477
+Ion_Type1_319	9.330030571	2.857142857	18.151425143	0 # molecule nr 478
+Ion_Type1_320	9.330030571	2.857142857	17.142857143	0 # molecule nr 479
+Ion_Type3_158	8.571428571	5.714285714	0.504284000	0 # molecule nr 480
+Ion_Type1_321	9.330030571	5.714285714	0.000000000	0 # molecule nr 481
+Ion_Type1_322	9.330030571	5.714285714	6.722853714	0 # molecule nr 482
+Ion_Type3_159	8.571428571	5.714285714	9.075712571	0 # molecule nr 483
+Ion_Type1_323	9.330030571	5.714285714	9.579996571	0 # molecule nr 484
+Ion_Type1_324	9.330030571	5.714285714	8.571428571	0 # molecule nr 485
+Ion_Type3_160	8.571428571	5.714285714	11.932855429	0 # molecule nr 486
+Ion_Type1_325	9.330030571	5.714285714	12.437139429	0 # molecule nr 487
+Ion_Type1_326	9.330030571	5.714285714	11.428571429	0 # molecule nr 488
+Ion_Type3_161	8.571428571	5.714285714	14.789998286	0 # molecule nr 489
+Ion_Type1_327	9.330030571	5.714285714	15.294282286	0 # molecule nr 490
+Ion_Type1_328	9.330030571	5.714285714	14.285714286	0 # molecule nr 491
+Ion_Type3_162	8.571428571	5.714285714	17.647141143	0 # molecule nr 492
+Ion_Type1_329	9.330030571	5.714285714	18.151425143	0 # molecule nr 493
+Ion_Type1_330	9.330030571	5.714285714	17.142857143	0 # molecule nr 494
+Ion_Type3_163	8.571428571	8.571428571	0.504284000	0 # molecule nr 495
+Ion_Type1_331	9.330030571	8.571428571	1.008568000	0 # molecule nr 496
+Ion_Type1_332	9.330030571	8.571428571	0.000000000	0 # molecule nr 497
+Ion_Type3_164	8.571428571	8.571428571	3.361426857	0 # molecule nr 498
+Ion_Type1_333	9.330030571	8.571428571	3.865710857	0 # molecule nr 499
+Ion_Type1_334	9.330030571	8.571428571	2.857142857	0 # molecule nr 500
+Ion_Type3_165	8.571428571	8.571428571	6.218569714	0 # molecule nr 501
+Ion_Type1_335	9.330030571	8.571428571	6.722853714	0 # molecule nr 502
+Ion_Type1_336	9.330030571	8.571428571	5.714285714	0 # molecule nr 503
+Ion_Type3_166	8.571428571	8.571428571	9.075712571	0 # molecule nr 504
+Ion_Type1_337	9.330030571	8.571428571	9.579996571	0 # molecule nr 505
+Ion_Type1_338	9.330030571	8.571428571	8.571428571	0 # molecule nr 506
+Ion_Type3_167	8.571428571	8.571428571	11.932855429	0 # molecule nr 507
+Ion_Type1_339	9.330030571	8.571428571	12.437139429	0 # molecule nr 508
+Ion_Type1_340	9.330030571	8.571428571	11.428571429	0 # molecule nr 509
+Ion_Type3_168	8.571428571	8.571428571	14.789998286	0 # molecule nr 510
+Ion_Type1_341	9.330030571	8.571428571	15.294282286	0 # molecule nr 511
+Ion_Type1_342	9.330030571	8.571428571	14.285714286	0 # molecule nr 512
+Ion_Type3_169	8.571428571	8.571428571	17.647141143	0 # molecule nr 513
+Ion_Type1_343	9.330030571	8.571428571	18.151425143	0 # molecule nr 514
+Ion_Type1_344	9.330030571	8.571428571	17.142857143	0 # molecule nr 515
+Ion_Type3_170	8.571428571	11.428571429	0.504284000	0 # molecule nr 516
+Ion_Type1_345	9.330030571	11.428571429	1.008568000	0 # molecule nr 517
+Ion_Type1_346	9.330030571	11.428571429	0.000000000	0 # molecule nr 518
+Ion_Type3_171	8.571428571	11.428571429	3.361426857	0 # molecule nr 519
+Ion_Type1_347	9.330030571	11.428571429	3.865710857	0 # molecule nr 520
+Ion_Type1_348	9.330030571	11.428571429	2.857142857	0 # molecule nr 521
+Ion_Type3_172	8.571428571	11.428571429	6.218569714	0 # molecule nr 522
+Ion_Type1_349	9.330030571	11.428571429	6.722853714	0 # molecule nr 523
+Ion_Type1_350	9.330030571	11.428571429	5.714285714	0 # molecule nr 524
+Ion_Type3_173	8.571428571	11.428571429	9.075712571	0 # molecule nr 525
+Ion_Type1_351	9.330030571	11.428571429	9.579996571	0 # molecule nr 526
+Ion_Type1_352	9.330030571	11.428571429	8.571428571	0 # molecule nr 527
+Ion_Type3_174	8.571428571	11.428571429	11.932855429	0 # molecule nr 528
+Ion_Type1_353	9.330030571	11.428571429	12.437139429	0 # molecule nr 529
+Ion_Type1_354	9.330030571	11.428571429	11.428571429	0 # molecule nr 530
+Ion_Type3_175	8.571428571	11.428571429	14.789998286	0 # molecule nr 531
+Ion_Type1_355	9.330030571	11.428571429	15.294282286	0 # molecule nr 532
+Ion_Type1_356	9.330030571	11.428571429	14.285714286	0 # molecule nr 533
+Ion_Type3_176	8.571428571	11.428571429	17.647141143	0 # molecule nr 534
+Ion_Type1_357	9.330030571	11.428571429	18.151425143	0 # molecule nr 535
+Ion_Type1_358	9.330030571	11.428571429	17.142857143	0 # molecule nr 536
+Ion_Type3_177	8.571428571	14.285714286	0.504284000	0 # molecule nr 537
+Ion_Type1_359	9.330030571	14.285714286	1.008568000	0 # molecule nr 538
+Ion_Type1_360	9.330030571	14.285714286	0.000000000	0 # molecule nr 539
+Ion_Type3_178	8.571428571	14.285714286	3.361426857	0 # molecule nr 540
+Ion_Type1_361	9.330030571	14.285714286	3.865710857	0 # molecule nr 541
+Ion_Type1_362	9.330030571	14.285714286	2.857142857	0 # molecule nr 542
+Ion_Type3_179	8.571428571	14.285714286	6.218569714	0 # molecule nr 543
+Ion_Type1_363	9.330030571	14.285714286	6.722853714	0 # molecule nr 544
+Ion_Type1_364	9.330030571	14.285714286	5.714285714	0 # molecule nr 545
+Ion_Type3_180	8.571428571	14.285714286	9.075712571	0 # molecule nr 546
+Ion_Type1_365	9.330030571	14.285714286	9.579996571	0 # molecule nr 547
+Ion_Type1_366	9.330030571	14.285714286	8.571428571	0 # molecule nr 548
+Ion_Type3_181	8.571428571	14.285714286	11.932855429	0 # molecule nr 549
+Ion_Type1_367	9.330030571	14.285714286	12.437139429	0 # molecule nr 550
+Ion_Type1_368	9.330030571	14.285714286	11.428571429	0 # molecule nr 551
+Ion_Type3_182	8.571428571	14.285714286	14.789998286	0 # molecule nr 552
+Ion_Type1_369	9.330030571	14.285714286	15.294282286	0 # molecule nr 553
+Ion_Type1_370	9.330030571	14.285714286	14.285714286	0 # molecule nr 554
+Ion_Type3_183	8.571428571	14.285714286	17.647141143	0 # molecule nr 555
+Ion_Type1_371	9.330030571	14.285714286	18.151425143	0 # molecule nr 556
+Ion_Type1_372	9.330030571	14.285714286	17.142857143	0 # molecule nr 557
+Ion_Type3_184	8.571428571	17.142857143	0.504284000	0 # molecule nr 558
+Ion_Type1_373	9.330030571	17.142857143	1.008568000	0 # molecule nr 559
+Ion_Type1_374	9.330030571	17.142857143	0.000000000	0 # molecule nr 560
+Ion_Type3_185	8.571428571	17.142857143	3.361426857	0 # molecule nr 561
+Ion_Type1_375	9.330030571	17.142857143	3.865710857	0 # molecule nr 562
+Ion_Type1_376	9.330030571	17.142857143	2.857142857	0 # molecule nr 563
+Ion_Type3_186	8.571428571	17.142857143	6.218569714	0 # molecule nr 564
+Ion_Type1_377	9.330030571	17.142857143	6.722853714	0 # molecule nr 565
+Ion_Type1_378	9.330030571	17.142857143	5.714285714	0 # molecule nr 566
+Ion_Type3_187	8.571428571	17.142857143	9.075712571	0 # molecule nr 567
+Ion_Type1_379	9.330030571	17.142857143	9.579996571	0 # molecule nr 568
+Ion_Type1_380	9.330030571	17.142857143	8.571428571	0 # molecule nr 569
+Ion_Type3_188	8.571428571	17.142857143	11.932855429	0 # molecule nr 570
+Ion_Type1_381	9.330030571	17.142857143	12.437139429	0 # molecule nr 571
+Ion_Type1_382	9.330030571	17.142857143	11.428571429	0 # molecule nr 572
+Ion_Type3_189	8.571428571	17.142857143	14.789998286	0 # molecule nr 573
+Ion_Type1_383	9.330030571	17.142857143	15.294282286	0 # molecule nr 574
+Ion_Type1_384	9.330030571	17.142857143	14.285714286	0 # molecule nr 575
+Ion_Type3_190	8.571428571	17.142857143	17.647141143	0 # molecule nr 576
+Ion_Type1_385	9.330030571	17.142857143	18.151425143	0 # molecule nr 577
+Ion_Type1_386	9.330030571	17.142857143	17.142857143	0 # molecule nr 578
+Ion_Type3_191	11.428571429	0.000000000	0.504284000	0 # molecule nr 579
+Ion_Type1_387	12.187173429	0.000000000	1.008568000	0 # molecule nr 580
+Ion_Type1_388	12.187173429	0.000000000	0.000000000	0 # molecule nr 581
+Ion_Type3_192	11.428571429	0.000000000	3.361426857	0 # molecule nr 582
+Ion_Type1_389	12.187173429	0.000000000	3.865710857	0 # molecule nr 583
+Ion_Type1_390	12.187173429	0.000000000	2.857142857	0 # molecule nr 584
+Ion_Type3_193	11.428571429	0.000000000	6.218569714	0 # molecule nr 585
+Ion_Type1_391	12.187173429	0.000000000	6.722853714	0 # molecule nr 586
+Ion_Type1_392	12.187173429	0.000000000	5.714285714	0 # molecule nr 587
+Ion_Type3_194	11.428571429	0.000000000	9.075712571	0 # molecule nr 588
+Ion_Type1_393	12.187173429	0.000000000	9.579996571	0 # molecule nr 589
+Ion_Type1_394	12.187173429	0.000000000	8.571428571	0 # molecule nr 590
+Ion_Type3_195	11.428571429	0.000000000	11.932855429	0 # molecule nr 591
+Ion_Type1_395	12.187173429	0.000000000	12.437139429	0 # molecule nr 592
+Ion_Type1_396	12.187173429	0.000000000	11.428571429	0 # molecule nr 593
+Ion_Type3_196	11.428571429	0.000000000	14.789998286	0 # molecule nr 594
+Ion_Type1_397	12.187173429	0.000000000	15.294282286	0 # molecule nr 595
+Ion_Type1_398	12.187173429	0.000000000	14.285714286	0 # molecule nr 596
+Ion_Type3_197	11.428571429	0.000000000	17.647141143	0 # molecule nr 597
+Ion_Type1_399	12.187173429	0.000000000	18.151425143	0 # molecule nr 598
+Ion_Type1_400	12.187173429	0.000000000	17.142857143	0 # molecule nr 599
+Ion_Type3_198	11.428571429	2.857142857	0.504284000	0 # molecule nr 600
+Ion_Type1_401	12.187173429	2.857142857	1.008568000	0 # molecule nr 601
+Ion_Type1_402	12.187173429	2.857142857	0.000000000	0 # molecule nr 602
+Ion_Type3_199	11.428571429	2.857142857	6.218569714	0 # molecule nr 603
+Ion_Type1_403	12.187173429	2.857142857	6.722853714	0 # molecule nr 604
+Ion_Type1_404	12.187173429	2.857142857	5.714285714	0 # molecule nr 605
+Ion_Type3_200	11.428571429	2.857142857	9.075712571	0 # molecule nr 606
+Ion_Type1_405	12.187173429	2.857142857	9.579996571	0 # molecule nr 607
+Ion_Type1_406	12.187173429	2.857142857	8.571428571	0 # molecule nr 608
+Ion_Type3_201	11.428571429	2.857142857	11.932855429	0 # molecule nr 609
+Ion_Type1_407	12.187173429	2.857142857	12.437139429	0 # molecule nr 610
+Ion_Type1_408	12.187173429	2.857142857	11.428571429	0 # molecule nr 611
+Ion_Type3_202	11.428571429	2.857142857	14.789998286	0 # molecule nr 612
+Ion_Type1_409	12.187173429	2.857142857	15.294282286	0 # molecule nr 613
+Ion_Type1_410	12.187173429	2.857142857	14.285714286	0 # molecule nr 614
+Ion_Type3_203	11.428571429	2.857142857	17.647141143	0 # molecule nr 615
+Ion_Type1_411	12.187173429	2.857142857	18.151425143	0 # molecule nr 616
+Ion_Type1_412	12.187173429	2.857142857	17.142857143	0 # molecule nr 617
+Ion_Type3_204	11.428571429	5.714285714	0.504284000	0 # molecule nr 618
+Ion_Type1_413	12.187173429	5.714285714	1.008568000	0 # molecule nr 619
+Ion_Type1_414	12.187173429	5.714285714	0.000000000	0 # molecule nr 620
+Ion_Type1_415	12.187173429	5.714285714	3.865710857	0 # molecule nr 621
+Ion_Type1_416	12.187173429	5.714285714	2.857142857	0 # molecule nr 622
+Ion_Type3_205	11.428571429	5.714285714	6.218569714	0 # molecule nr 623
+Ion_Type1_417	12.187173429	5.714285714	6.722853714	0 # molecule nr 624
+Ion_Type1_418	12.187173429	5.714285714	5.714285714	0 # molecule nr 625
+Ion_Type3_206	11.428571429	5.714285714	9.075712571	0 # molecule nr 626
+Ion_Type1_419	12.187173429	5.714285714	9.579996571	0 # molecule nr 627
+Ion_Type1_420	12.187173429	5.714285714	8.571428571	0 # molecule nr 628
+Ion_Type3_207	11.428571429	5.714285714	11.932855429	0 # molecule nr 629
+Ion_Type1_421	12.187173429	5.714285714	12.437139429	0 # molecule nr 630
+Ion_Type1_422	12.187173429	5.714285714	11.428571429	0 # molecule nr 631
+Ion_Type3_208	11.428571429	5.714285714	14.789998286	0 # molecule nr 632
+Ion_Type1_423	12.187173429	5.714285714	15.294282286	0 # molecule nr 633
+Ion_Type1_424	12.187173429	5.714285714	14.285714286	0 # molecule nr 634
+Ion_Type3_209	11.428571429	5.714285714	17.647141143	0 # molecule nr 635
+Ion_Type1_425	12.187173429	5.714285714	18.151425143	0 # molecule nr 636
+Ion_Type1_426	12.187173429	5.714285714	17.142857143	0 # molecule nr 637
+Ion_Type3_210	11.428571429	8.571428571	0.504284000	0 # molecule nr 638
+Ion_Type1_427	12.187173429	8.571428571	1.008568000	0 # molecule nr 639
+Ion_Type1_428	12.187173429	8.571428571	0.000000000	0 # molecule nr 640
+Ion_Type3_211	11.428571429	8.571428571	3.361426857	0 # molecule nr 641
+Ion_Type1_429	12.187173429	8.571428571	3.865710857	0 # molecule nr 642
+Ion_Type1_430	12.187173429	8.571428571	2.857142857	0 # molecule nr 643
+Ion_Type3_212	11.428571429	8.571428571	6.218569714	0 # molecule nr 644
+Ion_Type1_431	12.187173429	8.571428571	6.722853714	0 # molecule nr 645
+Ion_Type1_432	12.187173429	8.571428571	5.714285714	0 # molecule nr 646
+Ion_Type3_213	11.428571429	8.571428571	9.075712571	0 # molecule nr 647
+Ion_Type1_433	12.187173429	8.571428571	9.579996571	0 # molecule nr 648
+Ion_Type1_434	12.187173429	8.571428571	8.571428571	0 # molecule nr 649
+Ion_Type3_214	11.428571429	8.571428571	11.932855429	0 # molecule nr 650
+Ion_Type1_435	12.187173429	8.571428571	12.437139429	0 # molecule nr 651
+Ion_Type1_436	12.187173429	8.571428571	11.428571429	0 # molecule nr 652
+Ion_Type3_215	11.428571429	8.571428571	14.789998286	0 # molecule nr 653
+Ion_Type1_437	12.187173429	8.571428571	15.294282286	0 # molecule nr 654
+Ion_Type1_438	12.187173429	8.571428571	14.285714286	0 # molecule nr 655
+Ion_Type3_216	11.428571429	8.571428571	17.647141143	0 # molecule nr 656
+Ion_Type1_439	12.187173429	8.571428571	18.151425143	0 # molecule nr 657
+Ion_Type1_440	12.187173429	8.571428571	17.142857143	0 # molecule nr 658
+Ion_Type3_217	11.428571429	11.428571429	0.504284000	0 # molecule nr 659
+Ion_Type1_441	12.187173429	11.428571429	1.008568000	0 # molecule nr 660
+Ion_Type1_442	12.187173429	11.428571429	0.000000000	0 # molecule nr 661
+Ion_Type3_218	11.428571429	11.428571429	3.361426857	0 # molecule nr 662
+Ion_Type1_443	12.187173429	11.428571429	3.865710857	0 # molecule nr 663
+Ion_Type1_444	12.187173429	11.428571429	2.857142857	0 # molecule nr 664
+Ion_Type3_219	11.428571429	11.428571429	6.218569714	0 # molecule nr 665
+Ion_Type1_445	12.187173429	11.428571429	6.722853714	0 # molecule nr 666
+Ion_Type1_446	12.187173429	11.428571429	5.714285714	0 # molecule nr 667
+Ion_Type3_220	11.428571429	11.428571429	9.075712571	0 # molecule nr 668
+Ion_Type1_447	12.187173429	11.428571429	9.579996571	0 # molecule nr 669
+Ion_Type1_448	12.187173429	11.428571429	8.571428571	0 # molecule nr 670
+Ion_Type3_221	11.428571429	11.428571429	11.932855429	0 # molecule nr 671
+Ion_Type1_449	12.187173429	11.428571429	12.437139429	0 # molecule nr 672
+Ion_Type1_450	12.187173429	11.428571429	11.428571429	0 # molecule nr 673
+Ion_Type3_222	11.428571429	11.428571429	14.789998286	0 # molecule nr 674
+Ion_Type1_451	12.187173429	11.428571429	15.294282286	0 # molecule nr 675
+Ion_Type1_452	12.187173429	11.428571429	14.285714286	0 # molecule nr 676
+Ion_Type3_223	11.428571429	11.428571429	17.647141143	0 # molecule nr 677
+Ion_Type1_453	12.187173429	11.428571429	18.151425143	0 # molecule nr 678
+Ion_Type1_454	12.187173429	11.428571429	17.142857143	0 # molecule nr 679
+Ion_Type3_224	11.428571429	14.285714286	0.504284000	0 # molecule nr 680
+Ion_Type1_455	12.187173429	14.285714286	1.008568000	0 # molecule nr 681
+Ion_Type1_456	12.187173429	14.285714286	0.000000000	0 # molecule nr 682
+Ion_Type3_225	11.428571429	14.285714286	3.361426857	0 # molecule nr 683
+Ion_Type1_457	12.187173429	14.285714286	3.865710857	0 # molecule nr 684
+Ion_Type1_458	12.187173429	14.285714286	2.857142857	0 # molecule nr 685
+Ion_Type3_226	11.428571429	14.285714286	6.218569714	0 # molecule nr 686
+Ion_Type1_459	12.187173429	14.285714286	6.722853714	0 # molecule nr 687
+Ion_Type1_460	12.187173429	14.285714286	5.714285714	0 # molecule nr 688
+Ion_Type3_227	11.428571429	14.285714286	9.075712571	0 # molecule nr 689
+Ion_Type1_461	12.187173429	14.285714286	9.579996571	0 # molecule nr 690
+Ion_Type1_462	12.187173429	14.285714286	8.571428571	0 # molecule nr 691
+Ion_Type3_228	11.428571429	14.285714286	11.932855429	0 # molecule nr 692
+Ion_Type1_463	12.187173429	14.285714286	12.437139429	0 # molecule nr 693
+Ion_Type1_464	12.187173429	14.285714286	11.428571429	0 # molecule nr 694
+Ion_Type3_229	11.428571429	14.285714286	14.789998286	0 # molecule nr 695
+Ion_Type1_465	12.187173429	14.285714286	15.294282286	0 # molecule nr 696
+Ion_Type1_466	12.187173429	14.285714286	14.285714286	0 # molecule nr 697
+Ion_Type3_230	11.428571429	14.285714286	17.647141143	0 # molecule nr 698
+Ion_Type1_467	12.187173429	14.285714286	18.151425143	0 # molecule nr 699
+Ion_Type1_468	12.187173429	14.285714286	17.142857143	0 # molecule nr 700
+Ion_Type3_231	11.428571429	17.142857143	0.504284000	0 # molecule nr 701
+Ion_Type1_469	12.187173429	17.142857143	1.008568000	0 # molecule nr 702
+Ion_Type1_470	12.187173429	17.142857143	0.000000000	0 # molecule nr 703
+Ion_Type3_232	11.428571429	17.142857143	3.361426857	0 # molecule nr 704
+Ion_Type1_471	12.187173429	17.142857143	3.865710857	0 # molecule nr 705
+Ion_Type1_472	12.187173429	17.142857143	2.857142857	0 # molecule nr 706
+Ion_Type3_233	11.428571429	17.142857143	6.218569714	0 # molecule nr 707
+Ion_Type1_473	12.187173429	17.142857143	6.722853714	0 # molecule nr 708
+Ion_Type1_474	12.187173429	17.142857143	5.714285714	0 # molecule nr 709
+Ion_Type3_234	11.428571429	17.142857143	9.075712571	0 # molecule nr 710
+Ion_Type1_475	12.187173429	17.142857143	9.579996571	0 # molecule nr 711
+Ion_Type1_476	12.187173429	17.142857143	8.571428571	0 # molecule nr 712
+Ion_Type3_235	11.428571429	17.142857143	11.932855429	0 # molecule nr 713
+Ion_Type1_477	12.187173429	17.142857143	12.437139429	0 # molecule nr 714
+Ion_Type1_478	12.187173429	17.142857143	11.428571429	0 # molecule nr 715
+Ion_Type3_236	11.428571429	17.142857143	14.789998286	0 # molecule nr 716
+Ion_Type1_479	12.187173429	17.142857143	15.294282286	0 # molecule nr 717
+Ion_Type1_480	12.187173429	17.142857143	14.285714286	0 # molecule nr 718
+Ion_Type3_237	11.428571429	17.142857143	17.647141143	0 # molecule nr 719
+Ion_Type1_481	12.187173429	17.142857143	18.151425143	0 # molecule nr 720
+Ion_Type1_482	12.187173429	17.142857143	17.142857143	0 # molecule nr 721
+Ion_Type3_238	14.285714286	0.000000000	0.504284000	0 # molecule nr 722
+Ion_Type1_483	15.044316286	0.000000000	1.008568000	0 # molecule nr 723
+Ion_Type1_484	15.044316286	0.000000000	0.000000000	0 # molecule nr 724
+Ion_Type3_239	14.285714286	0.000000000	3.361426857	0 # molecule nr 725
+Ion_Type1_485	15.044316286	0.000000000	3.865710857	0 # molecule nr 726
+Ion_Type1_486	15.044316286	0.000000000	2.857142857	0 # molecule nr 727
+Ion_Type3_240	14.285714286	0.000000000	6.218569714	0 # molecule nr 728
+Ion_Type1_487	15.044316286	0.000000000	6.722853714	0 # molecule nr 729
+Ion_Type1_488	15.044316286	0.000000000	5.714285714	0 # molecule nr 730
+Ion_Type3_241	14.285714286	0.000000000	9.075712571	0 # molecule nr 731
+Ion_Type1_489	15.044316286	0.000000000	9.579996571	0 # molecule nr 732
+Ion_Type1_490	15.044316286	0.000000000	8.571428571	0 # molecule nr 733
+Ion_Type3_242	14.285714286	0.000000000	11.932855429	0 # molecule nr 734
+Ion_Type1_491	15.044316286	0.000000000	12.437139429	0 # molecule nr 735
+Ion_Type1_492	15.044316286	0.000000000	11.428571429	0 # molecule nr 736
+Ion_Type3_243	14.285714286	0.000000000	14.789998286	0 # molecule nr 737
+Ion_Type1_493	15.044316286	0.000000000	15.294282286	0 # molecule nr 738
+Ion_Type1_494	15.044316286	0.000000000	14.285714286	0 # molecule nr 739
+Ion_Type3_244	14.285714286	0.000000000	17.647141143	0 # molecule nr 740
+Ion_Type1_495	15.044316286	0.000000000	18.151425143	0 # molecule nr 741
+Ion_Type1_496	15.044316286	0.000000000	17.142857143	0 # molecule nr 742
+Ion_Type3_245	14.285714286	2.857142857	0.504284000	0 # molecule nr 743
+Ion_Type1_497	15.044316286	2.857142857	1.008568000	0 # molecule nr 744
+Ion_Type1_498	15.044316286	2.857142857	0.000000000	0 # molecule nr 745
+Ion_Type3_246	14.285714286	2.857142857	3.361426857	0 # molecule nr 746
+Ion_Type1_499	15.044316286	2.857142857	3.865710857	0 # molecule nr 747
+Ion_Type1_500	15.044316286	2.857142857	2.857142857	0 # molecule nr 748
+Ion_Type3_247	14.285714286	2.857142857	6.218569714	0 # molecule nr 749
+Ion_Type1_501	15.044316286	2.857142857	6.722853714	0 # molecule nr 750
+Ion_Type1_502	15.044316286	2.857142857	5.714285714	0 # molecule nr 751
+Ion_Type3_248	14.285714286	2.857142857	9.075712571	0 # molecule nr 752
+Ion_Type1_503	15.044316286	2.857142857	9.579996571	0 # molecule nr 753
+Ion_Type1_504	15.044316286	2.857142857	8.571428571	0 # molecule nr 754
+Ion_Type3_249	14.285714286	2.857142857	11.932855429	0 # molecule nr 755
+Ion_Type1_505	15.044316286	2.857142857	12.437139429	0 # molecule nr 756
+Ion_Type1_506	15.044316286	2.857142857	11.428571429	0 # molecule nr 757
+Ion_Type3_250	14.285714286	2.857142857	14.789998286	0 # molecule nr 758
+Ion_Type1_507	15.044316286	2.857142857	15.294282286	0 # molecule nr 759
+Ion_Type1_508	15.044316286	2.857142857	14.285714286	0 # molecule nr 760
+Ion_Type3_251	14.285714286	2.857142857	17.647141143	0 # molecule nr 761
+Ion_Type1_509	15.044316286	2.857142857	18.151425143	0 # molecule nr 762
+Ion_Type1_510	15.044316286	2.857142857	17.142857143	0 # molecule nr 763
+Ion_Type3_252	14.285714286	5.714285714	0.504284000	0 # molecule nr 764
+Ion_Type1_511	15.044316286	5.714285714	1.008568000	0 # molecule nr 765
+Ion_Type1_512	15.044316286	5.714285714	0.000000000	0 # molecule nr 766
+Ion_Type3_253	14.285714286	5.714285714	3.361426857	0 # molecule nr 767
+Ion_Type1_513	15.044316286	5.714285714	3.865710857	0 # molecule nr 768
+Ion_Type1_514	15.044316286	5.714285714	2.857142857	0 # molecule nr 769
+Ion_Type3_254	14.285714286	5.714285714	6.218569714	0 # molecule nr 770
+Ion_Type1_515	15.044316286	5.714285714	6.722853714	0 # molecule nr 771
+Ion_Type1_516	15.044316286	5.714285714	5.714285714	0 # molecule nr 772
+Ion_Type3_255	14.285714286	5.714285714	9.075712571	0 # molecule nr 773
+Ion_Type1_517	15.044316286	5.714285714	9.579996571	0 # molecule nr 774
+Ion_Type1_518	15.044316286	5.714285714	8.571428571	0 # molecule nr 775
+Ion_Type3_256	14.285714286	5.714285714	11.932855429	0 # molecule nr 776
+Ion_Type1_519	15.044316286	5.714285714	12.437139429	0 # molecule nr 777
+Ion_Type1_520	15.044316286	5.714285714	11.428571429	0 # molecule nr 778
+Ion_Type3_257	14.285714286	5.714285714	14.789998286	0 # molecule nr 779
+Ion_Type1_521	15.044316286	5.714285714	15.294282286	0 # molecule nr 780
+Ion_Type1_522	15.044316286	5.714285714	14.285714286	0 # molecule nr 781
+Ion_Type3_258	14.285714286	5.714285714	17.647141143	0 # molecule nr 782
+Ion_Type1_523	15.044316286	5.714285714	18.151425143	0 # molecule nr 783
+Ion_Type1_524	15.044316286	5.714285714	17.142857143	0 # molecule nr 784
+Ion_Type3_259	14.285714286	8.571428571	0.504284000	0 # molecule nr 785
+Ion_Type1_525	15.044316286	8.571428571	1.008568000	0 # molecule nr 786
+Ion_Type1_526	15.044316286	8.571428571	0.000000000	0 # molecule nr 787
+Ion_Type3_260	14.285714286	8.571428571	3.361426857	0 # molecule nr 788
+Ion_Type1_527	15.044316286	8.571428571	3.865710857	0 # molecule nr 789
+Ion_Type1_528	15.044316286	8.571428571	2.857142857	0 # molecule nr 790
+Ion_Type3_261	14.285714286	8.571428571	6.218569714	0 # molecule nr 791
+Ion_Type1_529	15.044316286	8.571428571	6.722853714	0 # molecule nr 792
+Ion_Type1_530	15.044316286	8.571428571	5.714285714	0 # molecule nr 793
+Ion_Type3_262	14.285714286	8.571428571	9.075712571	0 # molecule nr 794
+Ion_Type1_531	15.044316286	8.571428571	9.579996571	0 # molecule nr 795
+Ion_Type1_532	15.044316286	8.571428571	8.571428571	0 # molecule nr 796
+Ion_Type3_263	14.285714286	8.571428571	11.932855429	0 # molecule nr 797
+Ion_Type1_533	15.044316286	8.571428571	12.437139429	0 # molecule nr 798
+Ion_Type1_534	15.044316286	8.571428571	11.428571429	0 # molecule nr 799
+Ion_Type3_264	14.285714286	8.571428571	14.789998286	0 # molecule nr 800
+Ion_Type1_535	15.044316286	8.571428571	15.294282286	0 # molecule nr 801
+Ion_Type1_536	15.044316286	8.571428571	14.285714286	0 # molecule nr 802
+Ion_Type3_265	14.285714286	8.571428571	17.647141143	0 # molecule nr 803
+Ion_Type1_537	15.044316286	8.571428571	18.151425143	0 # molecule nr 804
+Ion_Type1_538	15.044316286	8.571428571	17.142857143	0 # molecule nr 805
+Ion_Type3_266	14.285714286	11.428571429	0.504284000	0 # molecule nr 806
+Ion_Type1_539	15.044316286	11.428571429	1.008568000	0 # molecule nr 807
+Ion_Type1_540	15.044316286	11.428571429	0.000000000	0 # molecule nr 808
+Ion_Type3_267	14.285714286	11.428571429	3.361426857	0 # molecule nr 809
+Ion_Type1_541	15.044316286	11.428571429	3.865710857	0 # molecule nr 810
+Ion_Type1_542	15.044316286	11.428571429	2.857142857	0 # molecule nr 811
+Ion_Type3_268	14.285714286	11.428571429	6.218569714	0 # molecule nr 812
+Ion_Type1_543	15.044316286	11.428571429	6.722853714	0 # molecule nr 813
+Ion_Type1_544	15.044316286	11.428571429	5.714285714	0 # molecule nr 814
+Ion_Type3_269	14.285714286	11.428571429	9.075712571	0 # molecule nr 815
+Ion_Type1_545	15.044316286	11.428571429	9.579996571	0 # molecule nr 816
+Ion_Type1_546	15.044316286	11.428571429	8.571428571	0 # molecule nr 817
+Ion_Type3_270	14.285714286	11.428571429	11.932855429	0 # molecule nr 818
+Ion_Type1_547	15.044316286	11.428571429	12.437139429	0 # molecule nr 819
+Ion_Type1_548	15.044316286	11.428571429	11.428571429	0 # molecule nr 820
+Ion_Type3_271	14.285714286	11.428571429	14.789998286	0 # molecule nr 821
+Ion_Type1_549	15.044316286	11.428571429	15.294282286	0 # molecule nr 822
+Ion_Type1_550	15.044316286	11.428571429	14.285714286	0 # molecule nr 823
+Ion_Type3_272	14.285714286	11.428571429	17.647141143	0 # molecule nr 824
+Ion_Type1_551	15.044316286	11.428571429	18.151425143	0 # molecule nr 825
+Ion_Type1_552	15.044316286	11.428571429	17.142857143	0 # molecule nr 826
+Ion_Type3_273	14.285714286	14.285714286	0.504284000	0 # molecule nr 827
+Ion_Type1_553	15.044316286	14.285714286	1.008568000	0 # molecule nr 828
+Ion_Type1_554	15.044316286	14.285714286	0.000000000	0 # molecule nr 829
+Ion_Type3_274	14.285714286	14.285714286	3.361426857	0 # molecule nr 830
+Ion_Type1_555	15.044316286	14.285714286	3.865710857	0 # molecule nr 831
+Ion_Type1_556	15.044316286	14.285714286	2.857142857	0 # molecule nr 832
+Ion_Type3_275	14.285714286	14.285714286	6.218569714	0 # molecule nr 833
+Ion_Type1_557	15.044316286	14.285714286	6.722853714	0 # molecule nr 834
+Ion_Type1_558	15.044316286	14.285714286	5.714285714	0 # molecule nr 835
+Ion_Type3_276	14.285714286	14.285714286	9.075712571	0 # molecule nr 836
+Ion_Type1_559	15.044316286	14.285714286	9.579996571	0 # molecule nr 837
+Ion_Type1_560	15.044316286	14.285714286	8.571428571	0 # molecule nr 838
+Ion_Type3_277	14.285714286	14.285714286	11.932855429	0 # molecule nr 839
+Ion_Type1_561	15.044316286	14.285714286	12.437139429	0 # molecule nr 840
+Ion_Type1_562	15.044316286	14.285714286	11.428571429	0 # molecule nr 841
+Ion_Type3_278	14.285714286	14.285714286	14.789998286	0 # molecule nr 842
+Ion_Type1_563	15.044316286	14.285714286	15.294282286	0 # molecule nr 843
+Ion_Type1_564	15.044316286	14.285714286	14.285714286	0 # molecule nr 844
+Ion_Type3_279	14.285714286	14.285714286	17.647141143	0 # molecule nr 845
+Ion_Type1_565	15.044316286	14.285714286	18.151425143	0 # molecule nr 846
+Ion_Type1_566	15.044316286	14.285714286	17.142857143	0 # molecule nr 847
+Ion_Type3_280	14.285714286	17.142857143	0.504284000	0 # molecule nr 848
+Ion_Type1_567	15.044316286	17.142857143	1.008568000	0 # molecule nr 849
+Ion_Type1_568	15.044316286	17.142857143	0.000000000	0 # molecule nr 850
+Ion_Type3_281	14.285714286	17.142857143	3.361426857	0 # molecule nr 851
+Ion_Type1_569	15.044316286	17.142857143	3.865710857	0 # molecule nr 852
+Ion_Type1_570	15.044316286	17.142857143	2.857142857	0 # molecule nr 853
+Ion_Type3_282	14.285714286	17.142857143	6.218569714	0 # molecule nr 854
+Ion_Type1_571	15.044316286	17.142857143	6.722853714	0 # molecule nr 855
+Ion_Type1_572	15.044316286	17.142857143	5.714285714	0 # molecule nr 856
+Ion_Type3_283	14.285714286	17.142857143	9.075712571	0 # molecule nr 857
+Ion_Type1_573	15.044316286	17.142857143	9.579996571	0 # molecule nr 858
+Ion_Type1_574	15.044316286	17.142857143	8.571428571	0 # molecule nr 859
+Ion_Type3_284	14.285714286	17.142857143	11.932855429	0 # molecule nr 860
+Ion_Type1_575	15.044316286	17.142857143	12.437139429	0 # molecule nr 861
+Ion_Type1_576	15.044316286	17.142857143	11.428571429	0 # molecule nr 862
+Ion_Type3_285	14.285714286	17.142857143	14.789998286	0 # molecule nr 863
+Ion_Type1_577	15.044316286	17.142857143	15.294282286	0 # molecule nr 864
+Ion_Type1_578	15.044316286	17.142857143	14.285714286	0 # molecule nr 865
+Ion_Type3_286	14.285714286	17.142857143	17.647141143	0 # molecule nr 866
+Ion_Type1_579	15.044316286	17.142857143	18.151425143	0 # molecule nr 867
+Ion_Type1_580	15.044316286	17.142857143	17.142857143	0 # molecule nr 868
+Ion_Type3_287	17.142857143	0.000000000	0.504284000	0 # molecule nr 869
+Ion_Type1_581	17.901459143	0.000000000	1.008568000	0 # molecule nr 870
+Ion_Type1_582	17.901459143	0.000000000	0.000000000	0 # molecule nr 871
+Ion_Type3_288	17.142857143	0.000000000	3.361426857	0 # molecule nr 872
+Ion_Type1_583	17.901459143	0.000000000	3.865710857	0 # molecule nr 873
+Ion_Type1_584	17.901459143	0.000000000	2.857142857	0 # molecule nr 874
+Ion_Type3_289	17.142857143	0.000000000	6.218569714	0 # molecule nr 875
+Ion_Type1_585	17.901459143	0.000000000	6.722853714	0 # molecule nr 876
+Ion_Type1_586	17.901459143	0.000000000	5.714285714	0 # molecule nr 877
+Ion_Type3_290	17.142857143	0.000000000	9.075712571	0 # molecule nr 878
+Ion_Type1_587	17.901459143	0.000000000	9.579996571	0 # molecule nr 879
+Ion_Type1_588	17.901459143	0.000000000	8.571428571	0 # molecule nr 880
+Ion_Type3_291	17.142857143	0.000000000	11.932855429	0 # molecule nr 881
+Ion_Type1_589	17.901459143	0.000000000	12.437139429	0 # molecule nr 882
+Ion_Type1_590	17.901459143	0.000000000	11.428571429	0 # molecule nr 883
+Ion_Type3_292	17.142857143	0.000000000	14.789998286	0 # molecule nr 884
+Ion_Type1_591	17.901459143	0.000000000	15.294282286	0 # molecule nr 885
+Ion_Type1_592	17.901459143	0.000000000	14.285714286	0 # molecule nr 886
+Ion_Type3_293	17.142857143	0.000000000	17.647141143	0 # molecule nr 887
+Ion_Type1_593	17.901459143	0.000000000	18.151425143	0 # molecule nr 888
+Ion_Type1_594	17.901459143	0.000000000	17.142857143	0 # molecule nr 889
+Ion_Type3_294	17.142857143	2.857142857	0.504284000	0 # molecule nr 890
+Ion_Type1_595	17.901459143	2.857142857	1.008568000	0 # molecule nr 891
+Ion_Type1_596	17.901459143	2.857142857	0.000000000	0 # molecule nr 892
+Ion_Type3_295	17.142857143	2.857142857	3.361426857	0 # molecule nr 893
+Ion_Type1_597	17.901459143	2.857142857	3.865710857	0 # molecule nr 894
+Ion_Type1_598	17.901459143	2.857142857	2.857142857	0 # molecule nr 895
+Ion_Type3_296	17.142857143	2.857142857	6.218569714	0 # molecule nr 896
+Ion_Type1_599	17.901459143	2.857142857	6.722853714	0 # molecule nr 897
+Ion_Type1_600	17.901459143	2.857142857	5.714285714	0 # molecule nr 898
+Ion_Type3_297	17.142857143	2.857142857	9.075712571	0 # molecule nr 899
+Ion_Type1_601	17.901459143	2.857142857	9.579996571	0 # molecule nr 900
+Ion_Type1_602	17.901459143	2.857142857	8.571428571	0 # molecule nr 901
+Ion_Type3_298	17.142857143	2.857142857	11.932855429	0 # molecule nr 902
+Ion_Type1_603	17.901459143	2.857142857	12.437139429	0 # molecule nr 903
+Ion_Type1_604	17.901459143	2.857142857	11.428571429	0 # molecule nr 904
+Ion_Type3_299	17.142857143	2.857142857	14.789998286	0 # molecule nr 905
+Ion_Type1_605	17.901459143	2.857142857	15.294282286	0 # molecule nr 906
+Ion_Type1_606	17.901459143	2.857142857	14.285714286	0 # molecule nr 907
+Ion_Type3_300	17.142857143	2.857142857	17.647141143	0 # molecule nr 908
+Ion_Type1_607	17.901459143	2.857142857	18.151425143	0 # molecule nr 909
+Ion_Type1_608	17.901459143	2.857142857	17.142857143	0 # molecule nr 910
+Ion_Type3_301	17.142857143	5.714285714	0.504284000	0 # molecule nr 911
+Ion_Type1_609	17.901459143	5.714285714	1.008568000	0 # molecule nr 912
+Ion_Type1_610	17.901459143	5.714285714	0.000000000	0 # molecule nr 913
+Ion_Type3_302	17.142857143	5.714285714	3.361426857	0 # molecule nr 914
+Ion_Type1_611	17.901459143	5.714285714	3.865710857	0 # molecule nr 915
+Ion_Type1_612	17.901459143	5.714285714	2.857142857	0 # molecule nr 916
+Ion_Type3_303	17.142857143	5.714285714	6.218569714	0 # molecule nr 917
+Ion_Type1_613	17.901459143	5.714285714	6.722853714	0 # molecule nr 918
+Ion_Type1_614	17.901459143	5.714285714	5.714285714	0 # molecule nr 919
+Ion_Type3_304	17.142857143	5.714285714	9.075712571	0 # molecule nr 920
+Ion_Type1_615	17.901459143	5.714285714	9.579996571	0 # molecule nr 921
+Ion_Type1_616	17.901459143	5.714285714	8.571428571	0 # molecule nr 922
+Ion_Type3_305	17.142857143	5.714285714	11.932855429	0 # molecule nr 923
+Ion_Type1_617	17.901459143	5.714285714	12.437139429	0 # molecule nr 924
+Ion_Type1_618	17.901459143	5.714285714	11.428571429	0 # molecule nr 925
+Ion_Type3_306	17.142857143	5.714285714	14.789998286	0 # molecule nr 926
+Ion_Type1_619	17.901459143	5.714285714	15.294282286	0 # molecule nr 927
+Ion_Type1_620	17.901459143	5.714285714	14.285714286	0 # molecule nr 928
+Ion_Type3_307	17.142857143	5.714285714	17.647141143	0 # molecule nr 929
+Ion_Type1_621	17.901459143	5.714285714	18.151425143	0 # molecule nr 930
+Ion_Type1_622	17.901459143	5.714285714	17.142857143	0 # molecule nr 931
+Ion_Type3_308	17.142857143	8.571428571	0.504284000	0 # molecule nr 932
+Ion_Type1_623	17.901459143	8.571428571	1.008568000	0 # molecule nr 933
+Ion_Type1_624	17.901459143	8.571428571	0.000000000	0 # molecule nr 934
+Ion_Type3_309	17.142857143	8.571428571	3.361426857	0 # molecule nr 935
+Ion_Type1_625	17.901459143	8.571428571	3.865710857	0 # molecule nr 936
+Ion_Type1_626	17.901459143	8.571428571	2.857142857	0 # molecule nr 937
+Ion_Type3_310	17.142857143	8.571428571	6.218569714	0 # molecule nr 938
+Ion_Type1_627	17.901459143	8.571428571	6.722853714	0 # molecule nr 939
+Ion_Type1_628	17.901459143	8.571428571	5.714285714	0 # molecule nr 940
+Ion_Type3_311	17.142857143	8.571428571	9.075712571	0 # molecule nr 941
+Ion_Type1_629	17.901459143	8.571428571	9.579996571	0 # molecule nr 942
+Ion_Type1_630	17.901459143	8.571428571	8.571428571	0 # molecule nr 943
+Ion_Type3_312	17.142857143	8.571428571	11.932855429	0 # molecule nr 944
+Ion_Type1_631	17.901459143	8.571428571	12.437139429	0 # molecule nr 945
+Ion_Type1_632	17.901459143	8.571428571	11.428571429	0 # molecule nr 946
+Ion_Type3_313	17.142857143	8.571428571	14.789998286	0 # molecule nr 947
+Ion_Type1_633	17.901459143	8.571428571	15.294282286	0 # molecule nr 948
+Ion_Type1_634	17.901459143	8.571428571	14.285714286	0 # molecule nr 949
+Ion_Type3_314	17.142857143	8.571428571	17.647141143	0 # molecule nr 950
+Ion_Type1_635	17.901459143	8.571428571	18.151425143	0 # molecule nr 951
+Ion_Type1_636	17.901459143	8.571428571	17.142857143	0 # molecule nr 952
+Ion_Type3_315	17.142857143	11.428571429	0.504284000	0 # molecule nr 953
+Ion_Type1_637	17.901459143	11.428571429	1.008568000	0 # molecule nr 954
+Ion_Type1_638	17.901459143	11.428571429	0.000000000	0 # molecule nr 955
+Ion_Type3_316	17.142857143	11.428571429	3.361426857	0 # molecule nr 956
+Ion_Type1_639	17.901459143	11.428571429	3.865710857	0 # molecule nr 957
+Ion_Type1_640	17.901459143	11.428571429	2.857142857	0 # molecule nr 958
+Ion_Type3_317	17.142857143	11.428571429	6.218569714	0 # molecule nr 959
+Ion_Type1_641	17.901459143	11.428571429	6.722853714	0 # molecule nr 960
+Ion_Type1_642	17.901459143	11.428571429	5.714285714	0 # molecule nr 961
+Ion_Type3_318	17.142857143	11.428571429	9.075712571	0 # molecule nr 962
+Ion_Type1_643	17.901459143	11.428571429	9.579996571	0 # molecule nr 963
+Ion_Type1_644	17.901459143	11.428571429	8.571428571	0 # molecule nr 964
+Ion_Type3_319	17.142857143	11.428571429	11.932855429	0 # molecule nr 965
+Ion_Type1_645	17.901459143	11.428571429	12.437139429	0 # molecule nr 966
+Ion_Type1_646	17.901459143	11.428571429	11.428571429	0 # molecule nr 967
+Ion_Type3_320	17.142857143	11.428571429	14.789998286	0 # molecule nr 968
+Ion_Type1_647	17.901459143	11.428571429	15.294282286	0 # molecule nr 969
+Ion_Type1_648	17.901459143	11.428571429	14.285714286	0 # molecule nr 970
+Ion_Type3_321	17.142857143	11.428571429	17.647141143	0 # molecule nr 971
+Ion_Type1_649	17.901459143	11.428571429	18.151425143	0 # molecule nr 972
+Ion_Type1_650	17.901459143	11.428571429	17.142857143	0 # molecule nr 973
+Ion_Type3_322	17.142857143	14.285714286	0.504284000	0 # molecule nr 974
+Ion_Type1_651	17.901459143	14.285714286	1.008568000	0 # molecule nr 975
+Ion_Type1_652	17.901459143	14.285714286	0.000000000	0 # molecule nr 976
+Ion_Type3_323	17.142857143	14.285714286	3.361426857	0 # molecule nr 977
+Ion_Type1_653	17.901459143	14.285714286	3.865710857	0 # molecule nr 978
+Ion_Type1_654	17.901459143	14.285714286	2.857142857	0 # molecule nr 979
+Ion_Type3_324	17.142857143	14.285714286	6.218569714	0 # molecule nr 980
+Ion_Type1_655	17.901459143	14.285714286	6.722853714	0 # molecule nr 981
+Ion_Type1_656	17.901459143	14.285714286	5.714285714	0 # molecule nr 982
+Ion_Type3_325	17.142857143	14.285714286	9.075712571	0 # molecule nr 983
+Ion_Type1_657	17.901459143	14.285714286	9.579996571	0 # molecule nr 984
+Ion_Type1_658	17.901459143	14.285714286	8.571428571	0 # molecule nr 985
+Ion_Type3_326	17.142857143	14.285714286	11.932855429	0 # molecule nr 986
+Ion_Type1_659	17.901459143	14.285714286	12.437139429	0 # molecule nr 987
+Ion_Type1_660	17.901459143	14.285714286	11.428571429	0 # molecule nr 988
+Ion_Type3_327	17.142857143	14.285714286	14.789998286	0 # molecule nr 989
+Ion_Type1_661	17.901459143	14.285714286	15.294282286	0 # molecule nr 990
+Ion_Type1_662	17.901459143	14.285714286	14.285714286	0 # molecule nr 991
+Ion_Type3_328	17.142857143	14.285714286	17.647141143	0 # molecule nr 992
+Ion_Type1_663	17.901459143	14.285714286	18.151425143	0 # molecule nr 993
+Ion_Type1_664	17.901459143	14.285714286	17.142857143	0 # molecule nr 994
+Ion_Type3_329	17.142857143	17.142857143	0.504284000	0 # molecule nr 995
+Ion_Type1_665	17.901459143	17.142857143	1.008568000	0 # molecule nr 996
+Ion_Type1_666	17.901459143	17.142857143	0.000000000	0 # molecule nr 997
+Ion_Type3_330	17.142857143	17.142857143	3.361426857	0 # molecule nr 998
+Ion_Type1_667	17.901459143	17.142857143	3.865710857	0 # molecule nr 999
+Ion_Type1_668	17.901459143	17.142857143	2.857142857	0 # molecule nr 1000
+Ion_Type3_331	17.142857143	17.142857143	6.218569714	0 # molecule nr 1001
+Ion_Type1_669	17.901459143	17.142857143	6.722853714	0 # molecule nr 1002
+Ion_Type1_670	17.901459143	17.142857143	5.714285714	0 # molecule nr 1003
+Ion_Type3_332	17.142857143	17.142857143	9.075712571	0 # molecule nr 1004
+Ion_Type1_671	17.901459143	17.142857143	9.579996571	0 # molecule nr 1005
+Ion_Type1_672	17.901459143	17.142857143	8.571428571	0 # molecule nr 1006
+Ion_Type3_333	17.142857143	17.142857143	11.932855429	0 # molecule nr 1007
+Ion_Type1_673	17.901459143	17.142857143	12.437139429	0 # molecule nr 1008
+Ion_Type1_674	17.901459143	17.142857143	11.428571429	0 # molecule nr 1009
+Ion_Type3_334	17.142857143	17.142857143	14.789998286	0 # molecule nr 1010
+Ion_Type1_675	17.901459143	17.142857143	15.294282286	0 # molecule nr 1011
+Ion_Type1_676	17.901459143	17.142857143	14.285714286	0 # molecule nr 1012
+Ion_Type3_335	17.142857143	17.142857143	17.647141143	0 # molecule nr 1013
+Ion_Type1_677	17.901459143	17.142857143	18.151425143	0 # molecule nr 1014
+Ion_Type1_678	17.901459143	17.142857143	17.142857143	0 # molecule nr 1015
Index: tests/regression/Filling/1/pre/test.conf
===================================================================
--- tests/regression/Filling/1/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Filling/1/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Filling/2/pre/test.conf
===================================================================
--- tests/regression/Filling/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Filling/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Graph/2/pre/test.conf
===================================================================
--- tests/regression/Graph/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Graph/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,165 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	62	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	31	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	-3.450000000	-3.450000000	-3.954000000	0 # molecule nr 0
+Ion_Type1_1	-4.020000000	-4.220000000	-3.935000000	0 # molecule nr 1
+Ion_Type1_2	-2.897000000	-3.533000000	-3.176000000	0 # molecule nr 2
+Ion_Type2_2	-0.350000000	-3.450000000	-3.954000000	0 # molecule nr 3
+Ion_Type1_3	-1.186000000	-3.471000000	-3.486000000	0 # molecule nr 4
+Ion_Type1_4	0.283000000	-3.837000000	-3.347000000	0 # molecule nr 5
+Ion_Type2_3	2.750000000	-3.450000000	-3.954000000	0 # molecule nr 6
+Ion_Type1_5	2.181000000	-3.615000000	-4.708000000	0 # molecule nr 7
+Ion_Type1_6	3.035000000	-2.540000000	-4.054000000	0 # molecule nr 8
+Ion_Type2_4	-3.450000000	-0.350000000	-3.954000000	0 # molecule nr 9
+Ion_Type1_7	-3.429000000	0.422000000	-4.521000000	0 # molecule nr 10
+Ion_Type1_8	-3.807000000	-1.050000000	-4.503000000	0 # molecule nr 11
+Ion_Type2_5	-0.350000000	-0.350000000	-3.954000000	0 # molecule nr 12
+Ion_Type1_9	-0.570000000	-0.546000000	-3.042000000	0 # molecule nr 13
+Ion_Type1_10	0.521000000	-0.728000000	-4.084000000	0 # molecule nr 14
+Ion_Type2_6	2.750000000	-0.350000000	-3.954000000	0 # molecule nr 15
+Ion_Type1_11	2.266000000	0.237000000	-4.537000000	0 # molecule nr 16
+Ion_Type1_12	2.900000000	-1.143000000	-4.471000000	0 # molecule nr 17
+Ion_Type2_7	-3.450000000	2.750000000	-3.954000000	0 # molecule nr 18
+Ion_Type1_13	-4.166000000	2.713000000	-3.318000000	0 # molecule nr 19
+Ion_Type1_14	-2.692000000	3.058000000	-3.454000000	0 # molecule nr 20
+Ion_Type2_8	-0.350000000	2.750000000	-3.954000000	0 # molecule nr 21
+Ion_Type1_15	-0.859000000	2.027000000	-4.324000000	0 # molecule nr 22
+Ion_Type1_16	-0.772000000	3.544000000	-4.285000000	0 # molecule nr 23
+Ion_Type2_9	2.750000000	2.750000000	-3.954000000	0 # molecule nr 24
+Ion_Type1_17	2.928000000	3.649000000	-4.236000000	0 # molecule nr 25
+Ion_Type1_18	2.122000000	2.410000000	-4.593000000	0 # molecule nr 26
+Ion_Type2_10	-3.450000000	-3.450000000	-0.854000000	0 # molecule nr 27
+Ion_Type1_19	-3.851000000	-4.287000000	-1.094000000	0 # molecule nr 28
+Ion_Type1_20	-4.062000000	-3.052000000	-0.234000000	0 # molecule nr 29
+Ion_Type2_11	-0.350000000	-3.450000000	-0.854000000	0 # molecule nr 30
+Ion_Type1_21	-0.388000000	-4.167000000	-0.219000000	0 # molecule nr 31
+Ion_Type1_22	-0.224000000	-2.660000000	-0.327000000	0 # molecule nr 32
+Ion_Type2_12	2.750000000	-3.450000000	-0.854000000	0 # molecule nr 33
+Ion_Type1_23	2.734000000	-2.527000000	-0.597000000	0 # molecule nr 34
+Ion_Type1_24	2.410000000	-3.924000000	-0.093000000	0 # molecule nr 35
+Ion_Type2_13	-3.450000000	-0.350000000	-0.854000000	0 # molecule nr 36
+Ion_Type1_25	-3.665000000	0.319000000	-0.202000000	0 # molecule nr 37
+Ion_Type1_26	-3.940000000	-1.127000000	-0.581000000	0 # molecule nr 38
+Ion_Type2_14	-3.450000000	2.750000000	-0.854000000	0 # molecule nr 39
+Ion_Type1_27	-2.864000000	2.026000000	-0.631000000	0 # molecule nr 40
+Ion_Type1_28	-4.262000000	2.330000000	-1.141000000	0 # molecule nr 41
+Ion_Type2_15	2.750000000	2.750000000	-0.854000000	0 # molecule nr 42
+Ion_Type1_29	2.976000000	2.419000000	0.017000000	0 # molecule nr 43
+Ion_Type1_30	3.592000000	2.883000000	-1.293000000	0 # molecule nr 44
+Ion_Type2_16	-3.450000000	-3.450000000	2.246000000	0 # molecule nr 45
+Ion_Type1_31	-3.246000000	-2.771000000	1.601000000	0 # molecule nr 46
+Ion_Type1_32	-4.102000000	-3.053000000	2.825000000	0 # molecule nr 47
+Ion_Type2_17	-0.350000000	-3.450000000	2.246000000	0 # molecule nr 48
+Ion_Type1_33	0.034000000	-4.290000000	2.503000000	0 # molecule nr 49
+Ion_Type1_34	0.067000000	-2.803000000	2.817000000	0 # molecule nr 50
+Ion_Type2_18	2.750000000	-3.450000000	2.246000000	0 # molecule nr 51
+Ion_Type1_35	3.278000000	-2.669000000	2.418000000	0 # molecule nr 52
+Ion_Type1_36	2.248000000	-3.590000000	3.050000000	0 # molecule nr 53
+Ion_Type2_19	-3.450000000	-0.350000000	2.246000000	0 # molecule nr 54
+Ion_Type1_37	-4.009000000	-0.979000000	2.705000000	0 # molecule nr 55
+Ion_Type1_38	-2.618000000	-0.368000000	2.721000000	0 # molecule nr 56
+Ion_Type2_20	-3.450000000	2.750000000	2.246000000	0 # molecule nr 57
+Ion_Type1_39	-2.871000000	2.071000000	2.596000000	0 # molecule nr 58
+Ion_Type1_40	-3.055000000	3.005000000	1.411000000	0 # molecule nr 59
+Ion_Type2_21	-0.350000000	2.750000000	2.246000000	0 # molecule nr 60
+Ion_Type1_41	-0.895000000	2.539000000	3.005000000	0 # molecule nr 61
+Ion_Type1_42	0.474000000	3.071000000	2.615000000	0 # molecule nr 62
+Ion_Type2_22	2.750000000	2.750000000	2.246000000	0 # molecule nr 63
+Ion_Type1_43	2.127000000	2.133000000	2.633000000	0 # molecule nr 64
+Ion_Type1_44	3.614000000	2.395000000	2.461000000	0 # molecule nr 65
+Ion_Type2_23	-3.450000000	-3.450000000	5.346000000	0 # molecule nr 66
+Ion_Type1_45	-4.270000000	-3.580000000	4.868000000	0 # molecule nr 67
+Ion_Type1_46	-2.760000000	-3.612000000	4.701000000	0 # molecule nr 68
+Ion_Type2_24	-0.350000000	-3.450000000	5.346000000	0 # molecule nr 69
+Ion_Type1_47	-0.994000000	-3.755000000	5.987000000	0 # molecule nr 70
+Ion_Type1_48	0.406000000	-3.176000000	5.867000000	0 # molecule nr 71
+Ion_Type2_25	2.750000000	-3.450000000	5.346000000	0 # molecule nr 72
+Ion_Type1_49	3.193000000	-4.217000000	5.712000000	0 # molecule nr 73
+Ion_Type1_50	3.441000000	-2.795000000	5.238000000	0 # molecule nr 74
+Ion_Type2_26	-3.450000000	-0.350000000	5.346000000	0 # molecule nr 75
+Ion_Type1_51	-3.735000000	0.284000000	4.687000000	0 # molecule nr 76
+Ion_Type1_52	-2.556000000	-0.584000000	5.093000000	0 # molecule nr 77
+Ion_Type2_27	-0.350000000	-0.350000000	5.346000000	0 # molecule nr 78
+Ion_Type1_53	0.379000000	-0.556000000	5.933000000	0 # molecule nr 79
+Ion_Type1_54	-1.067000000	-0.088000000	5.926000000	0 # molecule nr 80
+Ion_Type2_28	2.750000000	-0.350000000	5.346000000	0 # molecule nr 81
+Ion_Type1_55	3.611000000	-0.524000000	5.728000000	0 # molecule nr 82
+Ion_Type1_56	2.123000000	-0.695000000	5.984000000	0 # molecule nr 83
+Ion_Type2_29	-3.450000000	2.750000000	5.346000000	0 # molecule nr 84
+Ion_Type1_57	-3.813000000	1.882000000	5.165000000	0 # molecule nr 85
+Ion_Type1_58	-2.500000000	2.638000000	5.286000000	0 # molecule nr 86
+Ion_Type2_30	-0.350000000	2.750000000	5.346000000	0 # molecule nr 87
+Ion_Type1_59	-0.250000000	3.494000000	4.751000000	0 # molecule nr 88
+Ion_Type1_60	-0.717000000	2.049000000	4.805000000	0 # molecule nr 89
+Ion_Type2_31	2.750000000	2.750000000	5.346000000	0 # molecule nr 90
+Ion_Type1_61	3.468000000	3.235000000	5.756000000	0 # molecule nr 91
+Ion_Type1_62	2.276000000	2.347000000	6.075000000	0 # molecule nr 92
Index: tests/regression/Makefile.am
===================================================================
--- tests/regression/Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Makefile.am	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,30 @@
+AUTOM4TE = autom4te
+EXTRA_DIST = testsuite.at $(TESTSUITE) atlocal.in regression
+TESTSUITE = $(srcdir)/testsuite
+
+check-local: atconfig atlocal package.m4 $(TESTSUITE)
+		$(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
+
+installcheck-local: atconfig atlocal $(TESTSUITE)
+		$(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' \
+		$(TESTSUITEFLAGS)
+     
+clean-local:
+		test ! -f '$(TESTSUITE)' || \
+		$(SHELL) '$(TESTSUITE)' --clean
+
+AUTOTEST = $(AUTOM4TE) --language=autotest
+$(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/testsuite-*.at
+		$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at
+		mv $@.tmp $@
+
+# The `:;' works around a Bash 3.2 bug when the output is not writeable.
+$(srcdir)/package.m4: $(top_srcdir)/configure.ac
+			:;{ \
+					echo '# Signature of the current package.' && \
+					echo 'm4_define([AT_PACKAGE_NAME],      [@PACKAGE_NAME@])' && \
+					echo 'm4_define([AT_PACKAGE_TARNAME],   [@PACKAGE_TARNAME@])' && \
+					echo 'm4_define([AT_PACKAGE_VERSION],   [@PACKAGE_VERSION@])' && \
+					echo 'm4_define([AT_PACKAGE_STRING],    [@PACKAGE_STRING@])' && \
+					echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
+				} >'$(srcdir)/package.m4'
Index: tests/regression/Molecules/1/pre/test.conf
===================================================================
--- tests/regression/Molecules/1/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/1/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Molecules/1/pre/test.dbond
===================================================================
--- tests/regression/Molecules/1/pre/test.dbond	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/1/pre/test.dbond	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,11 @@
+m	n
+0	1
+0	3
+0	4
+0	5
+1	2
+1	6
+1	7
+2	8
+2	9
+2	10
Index: tests/regression/Molecules/2/post/test.adj
===================================================================
--- tests/regression/Molecules/2/post/test.adj	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/2/post/test.adj	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,12 @@
+m	n
+0	8	
+1	8	
+2	8	
+3	9	
+4	9	
+5	10	
+6	10	
+7	10	
+8	0	9	1	2	
+9	3	10	4	8	
+10	5	6	7	9	
Index: tests/regression/Molecules/2/post/test.dbond
===================================================================
--- tests/regression/Molecules/2/post/test.dbond	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/2/post/test.dbond	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,11 @@
+m	n
+0	8
+1	8
+2	8
+3	9
+4	9
+5	10
+6	10
+7	10
+8	9
+9	10
Index: tests/regression/Molecules/2/pre/test.conf
===================================================================
--- tests/regression/Molecules/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/2/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 0
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 1
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 2
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 3
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 4
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 5
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 6
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 7
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 8
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 9
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 10
Index: tests/regression/Molecules/3/post/test.ekin
===================================================================
--- tests/regression/Molecules/3/post/test.ekin	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/3/post/test.ekin	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,4 @@
+# Step Temperature [K] Temperature [a.u.]
+0	139247	0.44097
+1	25464.1	0.08064
+2	0	0
Index: tests/regression/Molecules/3/pre/test.conf
===================================================================
--- tests/regression/Molecules/3/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/3/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,119 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.882085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.632785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.383585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.882085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.882085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.772039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.632785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.632785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.493632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.383585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.383585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 0. 0. 0.
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 0. 0. 0.
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 0. 0. 0.
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 0. 0. 0.
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 0. 0. 0.
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 0. 0. 0.
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 0. 0. 0.
+
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 0. 0. 0.
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 0. 0. 0.
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 0. 0. 0.
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 0. 0. 0.
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 0. 0. 0.
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 0. 0. 0.
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 0. 0. 0.
Index: tests/regression/Molecules/4/post/test.conf
===================================================================
--- tests/regression/Molecules/4/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/4/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,107 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.882085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.632785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.383585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.882085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.882085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.772039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.632785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.632785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.493632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.383585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.383585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 0. 0. 0.
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 0. 0. 0.
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 0. 0. 0.
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 0. 0. 0.
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 0. 0. 0.
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 0. 0. 0.
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 0. 0. 0.
Index: tests/regression/Molecules/4/pre/test.conf
===================================================================
--- tests/regression/Molecules/4/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/4/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,95 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 0. 0. 0.
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 0. 0. 0.
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 0. 0. 0.
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 0. 0. 0.
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 0. 0. 0.
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 0. 0. 0.
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 0. 0. 0.
Index: tests/regression/Molecules/5/pre/test.conf
===================================================================
--- tests/regression/Molecules/5/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/5/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	10	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 0.1 0. 0.
Index: tests/regression/Molecules/5/pre/test.forces
===================================================================
--- tests/regression/Molecules/5/pre/test.forces	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/5/pre/test.forces	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,12 @@
+#atom	x	y	z
+1	0.1	0.1	0.
+2	0.1	0.1	0.
+3	0.1	0.1	0.
+4	0.1	0.1	0.
+5	0.1	0.1	0.
+6	0.1	0.1	0.
+7	0.1	0.1	0.
+8	0.1	0.1	0.
+9	0.1	0.1	0.
+10	0.1	0.1	0.
+11	0.1	0.1	0.
Index: tests/regression/Molecules/6/post/test.conf
===================================================================
--- tests/regression/Molecules/6/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/6/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	10.782085945	3.645886050	3.645886050	0 # molecule nr 0
+Ion_Type1_2	10.782085945	3.645886050	5.425886024	0 # molecule nr 1
+Ion_Type1_3	11.672039608	4.904536878	4.535886037	0 # molecule nr 2
+Ion_Type1_4	9.532785963	5.787886018	3.645886050	0 # molecule nr 3
+Ion_Type1_5	9.532785963	5.787886018	5.425886024	0 # molecule nr 4
+Ion_Type1_6	7.393632318	4.904536877	4.535886037	0 # molecule nr 5
+Ion_Type1_7	8.283585982	3.645886050	3.645886050	0 # molecule nr 6
+Ion_Type1_8	8.283585982	3.645886050	5.425886024	0 # molecule nr 7
+Ion_Type2_1	10.782085945	4.275186040	4.535886037	0 # molecule nr 8
+Ion_Type2_2	9.532785963	5.158586027	4.535886037	0 # molecule nr 9
+Ion_Type2_3	8.283585982	4.275186040	4.535886037	0 # molecule nr 10
Index: tests/regression/Molecules/6/pre/test.conf
===================================================================
--- tests/regression/Molecules/6/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/6/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Molecules/7/post/test.conf
===================================================================
--- tests/regression/Molecules/7/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/7/post/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	1.782085945	14.645886050	14.645886050	0 # molecule nr 0
+Ion_Type1_2	1.782085945	14.645886050	16.425886024	0 # molecule nr 1
+Ion_Type1_3	2.672039608	15.904536878	15.535886037	0 # molecule nr 2
+Ion_Type1_4	0.532785963	16.787886018	14.645886050	0 # molecule nr 3
+Ion_Type1_5	0.532785963	16.787886018	16.425886024	0 # molecule nr 4
+Ion_Type1_6	18.393632318	15.904536877	15.535886037	0 # molecule nr 5
+Ion_Type1_7	19.283585982	14.645886050	14.645886050	0 # molecule nr 6
+Ion_Type1_8	19.283585982	14.645886050	16.425886024	0 # molecule nr 7
+Ion_Type2_1	1.782085945	15.275186040	15.535886037	0 # molecule nr 8
+Ion_Type2_2	0.532785963	16.158586027	15.535886037	0 # molecule nr 9
+Ion_Type2_3	19.283585982	15.275186040	15.535886037	0 # molecule nr 10
Index: tests/regression/Molecules/7/pre/test.conf
===================================================================
--- tests/regression/Molecules/7/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/7/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Molecules/8/pre/test.conf
===================================================================
--- tests/regression/Molecules/8/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Molecules/8/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,83 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
Index: tests/regression/Simple_configuration/2/post/test.conf.in
===================================================================
--- tests/regression/Simple_configuration/2/post/test.conf.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Simple_configuration/2/post/test.conf.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,24 @@
+% Created by MoleCuilder
+mpqc: (
+	savestate = no
+	do_gradient = yes
+	mole<MBPT2>: (
+		maxiter = 200
+		basis = $:basis
+		molecule = $:molecule
+		reference<CLHF>: (
+			basis = $:basis
+			molecule = $:molecule
+		)
+	)
+)
+molecule<Molecule>: (
+	unit = angstrom
+	{ atoms geometry } = {
+		H [ 0	0	0 ]
+	}
+)
+basis<GaussianBasisSet>: (
+	name = "3-21G"
+	molecule = $:molecule
+)
Index: tests/regression/Simple_configuration/3/post/test.conf.in
===================================================================
--- tests/regression/Simple_configuration/3/post/test.conf.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Simple_configuration/3/post/test.conf.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,24 @@
+% Created by MoleCuilder
+mpqc: (
+	savestate = no
+	do_gradient = yes
+	mole<MBPT2>: (
+		maxiter = 200
+		basis = $:basis
+		molecule = $:molecule
+		reference<CLHF>: (
+			basis = $:basis
+			molecule = $:molecule
+		)
+	)
+)
+molecule<Molecule>: (
+	unit = angstrom
+	{ atoms geometry } = {
+		H [ 0	0	0 ]
+	}
+)
+basis<GaussianBasisSet>: (
+	name = "3-21G"
+	molecule = $:molecule
+)
Index: tests/regression/Simple_configuration/5/post/test.conf.in
===================================================================
--- tests/regression/Simple_configuration/5/post/test.conf.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Simple_configuration/5/post/test.conf.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,23 @@
+% Created by MoleCuilder
+mpqc: (
+	savestate = no
+	do_gradient = yes
+	mole<MBPT2>: (
+		maxiter = 200
+		basis = $:basis
+		molecule = $:molecule
+		reference<CLHF>: (
+			basis = $:basis
+			molecule = $:molecule
+		)
+	)
+)
+molecule<Molecule>: (
+	unit = angstrom
+	{ atoms geometry } = {
+	}
+)
+basis<GaussianBasisSet>: (
+	name = "3-21G"
+	molecule = $:molecule
+)
Index: tests/regression/Simple_configuration/8/post/test.conf.xyz
===================================================================
--- tests/regression/Simple_configuration/8/post/test.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Simple_configuration/8/post/test.conf.xyz	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,146 @@
+144
+	Created by molecuilder on Mon May 31 18:50:20 2010
+H	9.78209	2.64589	2.64589	
+H	9.78209	2.64589	4.42589	
+H	10.672	3.90454	3.53589	
+H	8.53279	4.78789	2.64589	
+H	8.53279	4.78789	4.42589	
+H	6.39363	3.90454	3.53589	
+H	7.28359	2.64589	2.64589	
+H	7.28359	2.64589	4.42589	
+H	0.758602	2.85714	3.86571	
+H	0.758602	2.85714	2.85714	
+H	0.758602	2.85714	5.71429	
+H	0.758602	5.71429	3.86571	
+H	0.758602	5.71429	2.85714	
+H	3.61574	0	1.00857	
+H	3.61574	0	0	
+H	3.61574	0	3.86571	
+H	3.61574	0	2.85714	
+H	3.61574	0	6.72285	
+H	3.61574	0	5.71429	
+H	3.61574	2.85714	1.00857	
+H	3.61574	2.85714	0	
+H	3.61574	2.85714	3.86571	
+H	3.61574	2.85714	2.85714	
+H	3.61574	2.85714	6.72285	
+H	3.61574	2.85714	5.71429	
+H	3.61574	2.85714	8.57143	
+H	3.61574	5.71429	1.00857	
+H	3.61574	5.71429	0	
+H	3.61574	5.71429	3.86571	
+H	3.61574	5.71429	2.85714	
+H	3.61574	5.71429	6.72285	
+H	3.61574	5.71429	5.71429	
+H	3.61574	5.71429	8.57143	
+H	3.61574	8.57143	1.00857	
+H	3.61574	8.57143	3.86571	
+H	3.61574	8.57143	2.85714	
+H	3.61574	8.57143	5.71429	
+H	6.47289	0	1.00857	
+H	6.47289	0	0	
+H	6.47289	0	3.86571	
+H	6.47289	0	2.85714	
+H	6.47289	0	6.72285	
+H	6.47289	0	5.71429	
+H	6.47289	0	9.58	
+H	6.47289	0	8.57143	
+H	6.47289	2.85714	0	
+H	6.47289	2.85714	6.72285	
+H	6.47289	2.85714	9.58	
+H	6.47289	2.85714	8.57143	
+H	6.47289	5.71429	1.00857	
+H	6.47289	5.71429	0	
+H	6.47289	5.71429	6.72285	
+H	6.47289	5.71429	5.71429	
+H	6.47289	5.71429	9.58	
+H	6.47289	5.71429	8.57143	
+H	6.47289	8.57143	1.00857	
+H	6.47289	8.57143	0	
+H	6.47289	8.57143	3.86571	
+H	6.47289	8.57143	2.85714	
+H	6.47289	8.57143	6.72285	
+H	6.47289	8.57143	5.71429	
+H	9.33003	0	1.00857	
+H	9.33003	0	0	
+H	9.33003	0	3.86571	
+H	9.33003	0	2.85714	
+H	9.33003	0	6.72285	
+H	9.33003	0	5.71429	
+H	9.33003	0	8.57143	
+H	9.33003	2.85714	0	
+H	9.33003	2.85714	6.72285	
+H	9.33003	2.85714	9.58	
+H	9.33003	2.85714	8.57143	
+H	9.33003	5.71429	0	
+H	9.33003	5.71429	6.72285	
+H	9.33003	5.71429	9.58	
+H	9.33003	5.71429	8.57143	
+H	9.33003	8.57143	1.00857	
+H	9.33003	8.57143	0	
+H	9.33003	8.57143	3.86571	
+H	9.33003	8.57143	2.85714	
+H	9.33003	8.57143	6.72285	
+H	9.33003	8.57143	5.71429	
+H	12.1872	0	1.00857	
+H	12.1872	0	0	
+H	12.1872	0	3.86571	
+H	12.1872	0	2.85714	
+H	12.1872	0	6.72285	
+H	12.1872	0	5.71429	
+H	12.1872	2.85714	1.00857	
+H	12.1872	2.85714	0	
+H	12.1872	2.85714	6.72285	
+H	12.1872	2.85714	5.71429	
+H	12.1872	5.71429	1.00857	
+H	12.1872	5.71429	0	
+H	12.1872	5.71429	3.86571	
+H	12.1872	5.71429	2.85714	
+H	12.1872	5.71429	6.72285	
+H	12.1872	5.71429	5.71429	
+C	9.78209	3.27519	3.53589	
+C	8.53279	4.15859	3.53589	
+C	7.28359	3.27519	3.53589	
+O	2.85714	0	0.504284	
+O	2.85714	0	3.36143	
+O	2.85714	0	6.21857	
+O	2.85714	2.85714	0.504284	
+O	2.85714	2.85714	3.36143	
+O	2.85714	2.85714	6.21857	
+O	2.85714	5.71429	0.504284	
+O	2.85714	5.71429	3.36143	
+O	2.85714	5.71429	6.21857	
+O	2.85714	8.57143	3.36143	
+O	5.71429	0	0.504284	
+O	5.71429	0	3.36143	
+O	5.71429	0	6.21857	
+O	5.71429	0	9.07571	
+O	5.71429	2.85714	0.504284	
+O	5.71429	2.85714	6.21857	
+O	5.71429	2.85714	9.07571	
+O	5.71429	5.71429	0.504284	
+O	5.71429	5.71429	6.21857	
+O	5.71429	5.71429	9.07571	
+O	5.71429	8.57143	0.504284	
+O	5.71429	8.57143	3.36143	
+O	5.71429	8.57143	6.21857	
+O	8.57143	0	0.504284	
+O	8.57143	0	3.36143	
+O	8.57143	0	6.21857	
+O	8.57143	0	9.07571	
+O	8.57143	2.85714	0.504284	
+O	8.57143	2.85714	9.07571	
+O	8.57143	5.71429	0.504284	
+O	8.57143	5.71429	9.07571	
+O	8.57143	8.57143	0.504284	
+O	8.57143	8.57143	3.36143	
+O	8.57143	8.57143	6.21857	
+O	11.4286	0	0.504284	
+O	11.4286	0	3.36143	
+O	11.4286	0	6.21857	
+O	11.4286	2.85714	0.504284	
+O	11.4286	2.85714	6.21857	
+O	11.4286	2.85714	9.07571	
+O	11.4286	5.71429	0.504284	
+O	11.4286	5.71429	6.21857	
+O	11.4286	8.57143	3.36143	
Index: tests/regression/Simple_configuration/8/pre/test.conf
===================================================================
--- tests/regression/Simple_configuration/8/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/Simple_configuration/8/pre/test.conf	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,1089 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	3	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	678	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+Ion_Type3	335	8	1.0	3	3	15.99900000000	Oxygen	O
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 # molecule nr 0
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 # molecule nr 1
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 # molecule nr 2
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 # molecule nr 3
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 # molecule nr 4
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 # molecule nr 5
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 # molecule nr 7
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 # molecule nr 8
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 # molecule nr 9
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 # molecule nr 10
+Ion_Type3_1	0.000000000	0.000000000	0.504284000	0 # molecule nr 11
+Ion_Type1_9	0.758602000	0.000000000	1.008568000	0 # molecule nr 12
+Ion_Type1_10	0.758602000	0.000000000	0.000000000	0 # molecule nr 13
+Ion_Type3_2	0.000000000	0.000000000	3.361426857	0 # molecule nr 14
+Ion_Type1_11	0.758602000	0.000000000	3.865710857	0 # molecule nr 15
+Ion_Type1_12	0.758602000	0.000000000	2.857142857	0 # molecule nr 16
+Ion_Type3_3	0.000000000	0.000000000	6.218569714	0 # molecule nr 17
+Ion_Type1_13	0.758602000	0.000000000	6.722853714	0 # molecule nr 18
+Ion_Type1_14	0.758602000	0.000000000	5.714285714	0 # molecule nr 19
+Ion_Type3_4	0.000000000	0.000000000	9.075712571	0 # molecule nr 20
+Ion_Type1_15	0.758602000	0.000000000	9.579996571	0 # molecule nr 21
+Ion_Type1_16	0.758602000	0.000000000	8.571428571	0 # molecule nr 22
+Ion_Type3_5	0.000000000	0.000000000	11.932855429	0 # molecule nr 23
+Ion_Type1_17	0.758602000	0.000000000	12.437139429	0 # molecule nr 24
+Ion_Type1_18	0.758602000	0.000000000	11.428571429	0 # molecule nr 25
+Ion_Type3_6	0.000000000	0.000000000	14.789998286	0 # molecule nr 26
+Ion_Type1_19	0.758602000	0.000000000	15.294282286	0 # molecule nr 27
+Ion_Type1_20	0.758602000	0.000000000	14.285714286	0 # molecule nr 28
+Ion_Type3_7	0.000000000	0.000000000	17.647141143	0 # molecule nr 29
+Ion_Type1_21	0.758602000	0.000000000	18.151425143	0 # molecule nr 30
+Ion_Type1_22	0.758602000	0.000000000	17.142857143	0 # molecule nr 31
+Ion_Type3_8	0.000000000	2.857142857	0.504284000	0 # molecule nr 32
+Ion_Type1_23	0.758602000	2.857142857	1.008568000	0 # molecule nr 33
+Ion_Type1_24	0.758602000	2.857142857	0.000000000	0 # molecule nr 34
+Ion_Type3_9	0.000000000	2.857142857	3.361426857	0 # molecule nr 35
+Ion_Type1_25	0.758602000	2.857142857	3.865710857	0 # molecule nr 36
+Ion_Type1_26	0.758602000	2.857142857	2.857142857	0 # molecule nr 37
+Ion_Type3_10	0.000000000	2.857142857	6.218569714	0 # molecule nr 38
+Ion_Type1_27	0.758602000	2.857142857	6.722853714	0 # molecule nr 39
+Ion_Type1_28	0.758602000	2.857142857	5.714285714	0 # molecule nr 40
+Ion_Type3_11	0.000000000	2.857142857	9.075712571	0 # molecule nr 41
+Ion_Type1_29	0.758602000	2.857142857	9.579996571	0 # molecule nr 42
+Ion_Type1_30	0.758602000	2.857142857	8.571428571	0 # molecule nr 43
+Ion_Type3_12	0.000000000	2.857142857	11.932855429	0 # molecule nr 44
+Ion_Type1_31	0.758602000	2.857142857	12.437139429	0 # molecule nr 45
+Ion_Type1_32	0.758602000	2.857142857	11.428571429	0 # molecule nr 46
+Ion_Type3_13	0.000000000	2.857142857	14.789998286	0 # molecule nr 47
+Ion_Type1_33	0.758602000	2.857142857	15.294282286	0 # molecule nr 48
+Ion_Type1_34	0.758602000	2.857142857	14.285714286	0 # molecule nr 49
+Ion_Type3_14	0.000000000	2.857142857	17.647141143	0 # molecule nr 50
+Ion_Type1_35	0.758602000	2.857142857	18.151425143	0 # molecule nr 51
+Ion_Type1_36	0.758602000	2.857142857	17.142857143	0 # molecule nr 52
+Ion_Type3_15	0.000000000	5.714285714	0.504284000	0 # molecule nr 53
+Ion_Type1_37	0.758602000	5.714285714	1.008568000	0 # molecule nr 54
+Ion_Type1_38	0.758602000	5.714285714	0.000000000	0 # molecule nr 55
+Ion_Type3_16	0.000000000	5.714285714	3.361426857	0 # molecule nr 56
+Ion_Type1_39	0.758602000	5.714285714	3.865710857	0 # molecule nr 57
+Ion_Type1_40	0.758602000	5.714285714	2.857142857	0 # molecule nr 58
+Ion_Type3_17	0.000000000	5.714285714	6.218569714	0 # molecule nr 59
+Ion_Type1_41	0.758602000	5.714285714	6.722853714	0 # molecule nr 60
+Ion_Type1_42	0.758602000	5.714285714	5.714285714	0 # molecule nr 61
+Ion_Type3_18	0.000000000	5.714285714	9.075712571	0 # molecule nr 62
+Ion_Type1_43	0.758602000	5.714285714	9.579996571	0 # molecule nr 63
+Ion_Type1_44	0.758602000	5.714285714	8.571428571	0 # molecule nr 64
+Ion_Type3_19	0.000000000	5.714285714	11.932855429	0 # molecule nr 65
+Ion_Type1_45	0.758602000	5.714285714	12.437139429	0 # molecule nr 66
+Ion_Type1_46	0.758602000	5.714285714	11.428571429	0 # molecule nr 67
+Ion_Type3_20	0.000000000	5.714285714	14.789998286	0 # molecule nr 68
+Ion_Type1_47	0.758602000	5.714285714	15.294282286	0 # molecule nr 69
+Ion_Type1_48	0.758602000	5.714285714	14.285714286	0 # molecule nr 70
+Ion_Type3_21	0.000000000	5.714285714	17.647141143	0 # molecule nr 71
+Ion_Type1_49	0.758602000	5.714285714	18.151425143	0 # molecule nr 72
+Ion_Type1_50	0.758602000	5.714285714	17.142857143	0 # molecule nr 73
+Ion_Type3_22	0.000000000	8.571428571	0.504284000	0 # molecule nr 74
+Ion_Type1_51	0.758602000	8.571428571	1.008568000	0 # molecule nr 75
+Ion_Type1_52	0.758602000	8.571428571	0.000000000	0 # molecule nr 76
+Ion_Type3_23	0.000000000	8.571428571	3.361426857	0 # molecule nr 77
+Ion_Type1_53	0.758602000	8.571428571	3.865710857	0 # molecule nr 78
+Ion_Type1_54	0.758602000	8.571428571	2.857142857	0 # molecule nr 79
+Ion_Type3_24	0.000000000	8.571428571	6.218569714	0 # molecule nr 80
+Ion_Type1_55	0.758602000	8.571428571	6.722853714	0 # molecule nr 81
+Ion_Type1_56	0.758602000	8.571428571	5.714285714	0 # molecule nr 82
+Ion_Type3_25	0.000000000	8.571428571	9.075712571	0 # molecule nr 83
+Ion_Type1_57	0.758602000	8.571428571	9.579996571	0 # molecule nr 84
+Ion_Type1_58	0.758602000	8.571428571	8.571428571	0 # molecule nr 85
+Ion_Type3_26	0.000000000	8.571428571	11.932855429	0 # molecule nr 86
+Ion_Type1_59	0.758602000	8.571428571	12.437139429	0 # molecule nr 87
+Ion_Type1_60	0.758602000	8.571428571	11.428571429	0 # molecule nr 88
+Ion_Type3_27	0.000000000	8.571428571	14.789998286	0 # molecule nr 89
+Ion_Type1_61	0.758602000	8.571428571	15.294282286	0 # molecule nr 90
+Ion_Type1_62	0.758602000	8.571428571	14.285714286	0 # molecule nr 91
+Ion_Type3_28	0.000000000	8.571428571	17.647141143	0 # molecule nr 92
+Ion_Type1_63	0.758602000	8.571428571	18.151425143	0 # molecule nr 93
+Ion_Type1_64	0.758602000	8.571428571	17.142857143	0 # molecule nr 94
+Ion_Type3_29	0.000000000	11.428571429	0.504284000	0 # molecule nr 95
+Ion_Type1_65	0.758602000	11.428571429	1.008568000	0 # molecule nr 96
+Ion_Type1_66	0.758602000	11.428571429	0.000000000	0 # molecule nr 97
+Ion_Type3_30	0.000000000	11.428571429	3.361426857	0 # molecule nr 98
+Ion_Type1_67	0.758602000	11.428571429	3.865710857	0 # molecule nr 99
+Ion_Type1_68	0.758602000	11.428571429	2.857142857	0 # molecule nr 100
+Ion_Type3_31	0.000000000	11.428571429	6.218569714	0 # molecule nr 101
+Ion_Type1_69	0.758602000	11.428571429	6.722853714	0 # molecule nr 102
+Ion_Type1_70	0.758602000	11.428571429	5.714285714	0 # molecule nr 103
+Ion_Type3_32	0.000000000	11.428571429	9.075712571	0 # molecule nr 104
+Ion_Type1_71	0.758602000	11.428571429	9.579996571	0 # molecule nr 105
+Ion_Type1_72	0.758602000	11.428571429	8.571428571	0 # molecule nr 106
+Ion_Type3_33	0.000000000	11.428571429	11.932855429	0 # molecule nr 107
+Ion_Type1_73	0.758602000	11.428571429	12.437139429	0 # molecule nr 108
+Ion_Type1_74	0.758602000	11.428571429	11.428571429	0 # molecule nr 109
+Ion_Type3_34	0.000000000	11.428571429	14.789998286	0 # molecule nr 110
+Ion_Type1_75	0.758602000	11.428571429	15.294282286	0 # molecule nr 111
+Ion_Type1_76	0.758602000	11.428571429	14.285714286	0 # molecule nr 112
+Ion_Type3_35	0.000000000	11.428571429	17.647141143	0 # molecule nr 113
+Ion_Type1_77	0.758602000	11.428571429	18.151425143	0 # molecule nr 114
+Ion_Type1_78	0.758602000	11.428571429	17.142857143	0 # molecule nr 115
+Ion_Type3_36	0.000000000	14.285714286	0.504284000	0 # molecule nr 116
+Ion_Type1_79	0.758602000	14.285714286	1.008568000	0 # molecule nr 117
+Ion_Type1_80	0.758602000	14.285714286	0.000000000	0 # molecule nr 118
+Ion_Type3_37	0.000000000	14.285714286	3.361426857	0 # molecule nr 119
+Ion_Type1_81	0.758602000	14.285714286	3.865710857	0 # molecule nr 120
+Ion_Type1_82	0.758602000	14.285714286	2.857142857	0 # molecule nr 121
+Ion_Type3_38	0.000000000	14.285714286	6.218569714	0 # molecule nr 122
+Ion_Type1_83	0.758602000	14.285714286	6.722853714	0 # molecule nr 123
+Ion_Type1_84	0.758602000	14.285714286	5.714285714	0 # molecule nr 124
+Ion_Type3_39	0.000000000	14.285714286	9.075712571	0 # molecule nr 125
+Ion_Type1_85	0.758602000	14.285714286	9.579996571	0 # molecule nr 126
+Ion_Type1_86	0.758602000	14.285714286	8.571428571	0 # molecule nr 127
+Ion_Type3_40	0.000000000	14.285714286	11.932855429	0 # molecule nr 128
+Ion_Type1_87	0.758602000	14.285714286	12.437139429	0 # molecule nr 129
+Ion_Type1_88	0.758602000	14.285714286	11.428571429	0 # molecule nr 130
+Ion_Type3_41	0.000000000	14.285714286	14.789998286	0 # molecule nr 131
+Ion_Type1_89	0.758602000	14.285714286	15.294282286	0 # molecule nr 132
+Ion_Type1_90	0.758602000	14.285714286	14.285714286	0 # molecule nr 133
+Ion_Type3_42	0.000000000	14.285714286	17.647141143	0 # molecule nr 134
+Ion_Type1_91	0.758602000	14.285714286	18.151425143	0 # molecule nr 135
+Ion_Type1_92	0.758602000	14.285714286	17.142857143	0 # molecule nr 136
+Ion_Type3_43	0.000000000	17.142857143	0.504284000	0 # molecule nr 137
+Ion_Type1_93	0.758602000	17.142857143	1.008568000	0 # molecule nr 138
+Ion_Type1_94	0.758602000	17.142857143	0.000000000	0 # molecule nr 139
+Ion_Type3_44	0.000000000	17.142857143	3.361426857	0 # molecule nr 140
+Ion_Type1_95	0.758602000	17.142857143	3.865710857	0 # molecule nr 141
+Ion_Type1_96	0.758602000	17.142857143	2.857142857	0 # molecule nr 142
+Ion_Type3_45	0.000000000	17.142857143	6.218569714	0 # molecule nr 143
+Ion_Type1_97	0.758602000	17.142857143	6.722853714	0 # molecule nr 144
+Ion_Type1_98	0.758602000	17.142857143	5.714285714	0 # molecule nr 145
+Ion_Type3_46	0.000000000	17.142857143	9.075712571	0 # molecule nr 146
+Ion_Type1_99	0.758602000	17.142857143	9.579996571	0 # molecule nr 147
+Ion_Type1_100	0.758602000	17.142857143	8.571428571	0 # molecule nr 148
+Ion_Type3_47	0.000000000	17.142857143	11.932855429	0 # molecule nr 149
+Ion_Type1_101	0.758602000	17.142857143	12.437139429	0 # molecule nr 150
+Ion_Type1_102	0.758602000	17.142857143	11.428571429	0 # molecule nr 151
+Ion_Type3_48	0.000000000	17.142857143	14.789998286	0 # molecule nr 152
+Ion_Type1_103	0.758602000	17.142857143	15.294282286	0 # molecule nr 153
+Ion_Type1_104	0.758602000	17.142857143	14.285714286	0 # molecule nr 154
+Ion_Type3_49	0.000000000	17.142857143	17.647141143	0 # molecule nr 155
+Ion_Type1_105	0.758602000	17.142857143	18.151425143	0 # molecule nr 156
+Ion_Type1_106	0.758602000	17.142857143	17.142857143	0 # molecule nr 157
+Ion_Type3_50	2.857142857	0.000000000	0.504284000	0 # molecule nr 158
+Ion_Type1_107	3.615744857	0.000000000	1.008568000	0 # molecule nr 159
+Ion_Type1_108	3.615744857	0.000000000	0.000000000	0 # molecule nr 160
+Ion_Type3_51	2.857142857	0.000000000	3.361426857	0 # molecule nr 161
+Ion_Type1_109	3.615744857	0.000000000	3.865710857	0 # molecule nr 162
+Ion_Type1_110	3.615744857	0.000000000	2.857142857	0 # molecule nr 163
+Ion_Type3_52	2.857142857	0.000000000	6.218569714	0 # molecule nr 164
+Ion_Type1_111	3.615744857	0.000000000	6.722853714	0 # molecule nr 165
+Ion_Type1_112	3.615744857	0.000000000	5.714285714	0 # molecule nr 166
+Ion_Type3_53	2.857142857	0.000000000	9.075712571	0 # molecule nr 167
+Ion_Type1_113	3.615744857	0.000000000	9.579996571	0 # molecule nr 168
+Ion_Type1_114	3.615744857	0.000000000	8.571428571	0 # molecule nr 169
+Ion_Type3_54	2.857142857	0.000000000	11.932855429	0 # molecule nr 170
+Ion_Type1_115	3.615744857	0.000000000	12.437139429	0 # molecule nr 171
+Ion_Type1_116	3.615744857	0.000000000	11.428571429	0 # molecule nr 172
+Ion_Type3_55	2.857142857	0.000000000	14.789998286	0 # molecule nr 173
+Ion_Type1_117	3.615744857	0.000000000	15.294282286	0 # molecule nr 174
+Ion_Type1_118	3.615744857	0.000000000	14.285714286	0 # molecule nr 175
+Ion_Type3_56	2.857142857	0.000000000	17.647141143	0 # molecule nr 176
+Ion_Type1_119	3.615744857	0.000000000	18.151425143	0 # molecule nr 177
+Ion_Type1_120	3.615744857	0.000000000	17.142857143	0 # molecule nr 178
+Ion_Type3_57	2.857142857	2.857142857	0.504284000	0 # molecule nr 179
+Ion_Type1_121	3.615744857	2.857142857	1.008568000	0 # molecule nr 180
+Ion_Type1_122	3.615744857	2.857142857	0.000000000	0 # molecule nr 181
+Ion_Type3_58	2.857142857	2.857142857	3.361426857	0 # molecule nr 182
+Ion_Type1_123	3.615744857	2.857142857	3.865710857	0 # molecule nr 183
+Ion_Type1_124	3.615744857	2.857142857	2.857142857	0 # molecule nr 184
+Ion_Type3_59	2.857142857	2.857142857	6.218569714	0 # molecule nr 185
+Ion_Type1_125	3.615744857	2.857142857	6.722853714	0 # molecule nr 186
+Ion_Type1_126	3.615744857	2.857142857	5.714285714	0 # molecule nr 187
+Ion_Type3_60	2.857142857	2.857142857	9.075712571	0 # molecule nr 188
+Ion_Type1_127	3.615744857	2.857142857	9.579996571	0 # molecule nr 189
+Ion_Type1_128	3.615744857	2.857142857	8.571428571	0 # molecule nr 190
+Ion_Type3_61	2.857142857	2.857142857	11.932855429	0 # molecule nr 191
+Ion_Type1_129	3.615744857	2.857142857	12.437139429	0 # molecule nr 192
+Ion_Type1_130	3.615744857	2.857142857	11.428571429	0 # molecule nr 193
+Ion_Type3_62	2.857142857	2.857142857	14.789998286	0 # molecule nr 194
+Ion_Type1_131	3.615744857	2.857142857	15.294282286	0 # molecule nr 195
+Ion_Type1_132	3.615744857	2.857142857	14.285714286	0 # molecule nr 196
+Ion_Type3_63	2.857142857	2.857142857	17.647141143	0 # molecule nr 197
+Ion_Type1_133	3.615744857	2.857142857	18.151425143	0 # molecule nr 198
+Ion_Type1_134	3.615744857	2.857142857	17.142857143	0 # molecule nr 199
+Ion_Type3_64	2.857142857	5.714285714	0.504284000	0 # molecule nr 200
+Ion_Type1_135	3.615744857	5.714285714	1.008568000	0 # molecule nr 201
+Ion_Type1_136	3.615744857	5.714285714	0.000000000	0 # molecule nr 202
+Ion_Type3_65	2.857142857	5.714285714	3.361426857	0 # molecule nr 203
+Ion_Type1_137	3.615744857	5.714285714	3.865710857	0 # molecule nr 204
+Ion_Type1_138	3.615744857	5.714285714	2.857142857	0 # molecule nr 205
+Ion_Type3_66	2.857142857	5.714285714	6.218569714	0 # molecule nr 206
+Ion_Type1_139	3.615744857	5.714285714	6.722853714	0 # molecule nr 207
+Ion_Type1_140	3.615744857	5.714285714	5.714285714	0 # molecule nr 208
+Ion_Type3_67	2.857142857	5.714285714	9.075712571	0 # molecule nr 209
+Ion_Type1_141	3.615744857	5.714285714	9.579996571	0 # molecule nr 210
+Ion_Type1_142	3.615744857	5.714285714	8.571428571	0 # molecule nr 211
+Ion_Type3_68	2.857142857	5.714285714	11.932855429	0 # molecule nr 212
+Ion_Type1_143	3.615744857	5.714285714	12.437139429	0 # molecule nr 213
+Ion_Type1_144	3.615744857	5.714285714	11.428571429	0 # molecule nr 214
+Ion_Type3_69	2.857142857	5.714285714	14.789998286	0 # molecule nr 215
+Ion_Type1_145	3.615744857	5.714285714	15.294282286	0 # molecule nr 216
+Ion_Type1_146	3.615744857	5.714285714	14.285714286	0 # molecule nr 217
+Ion_Type3_70	2.857142857	5.714285714	17.647141143	0 # molecule nr 218
+Ion_Type1_147	3.615744857	5.714285714	18.151425143	0 # molecule nr 219
+Ion_Type1_148	3.615744857	5.714285714	17.142857143	0 # molecule nr 220
+Ion_Type3_71	2.857142857	8.571428571	0.504284000	0 # molecule nr 221
+Ion_Type1_149	3.615744857	8.571428571	1.008568000	0 # molecule nr 222
+Ion_Type1_150	3.615744857	8.571428571	0.000000000	0 # molecule nr 223
+Ion_Type3_72	2.857142857	8.571428571	3.361426857	0 # molecule nr 224
+Ion_Type1_151	3.615744857	8.571428571	3.865710857	0 # molecule nr 225
+Ion_Type1_152	3.615744857	8.571428571	2.857142857	0 # molecule nr 226
+Ion_Type3_73	2.857142857	8.571428571	6.218569714	0 # molecule nr 227
+Ion_Type1_153	3.615744857	8.571428571	6.722853714	0 # molecule nr 228
+Ion_Type1_154	3.615744857	8.571428571	5.714285714	0 # molecule nr 229
+Ion_Type3_74	2.857142857	8.571428571	9.075712571	0 # molecule nr 230
+Ion_Type1_155	3.615744857	8.571428571	9.579996571	0 # molecule nr 231
+Ion_Type1_156	3.615744857	8.571428571	8.571428571	0 # molecule nr 232
+Ion_Type3_75	2.857142857	8.571428571	11.932855429	0 # molecule nr 233
+Ion_Type1_157	3.615744857	8.571428571	12.437139429	0 # molecule nr 234
+Ion_Type1_158	3.615744857	8.571428571	11.428571429	0 # molecule nr 235
+Ion_Type3_76	2.857142857	8.571428571	14.789998286	0 # molecule nr 236
+Ion_Type1_159	3.615744857	8.571428571	15.294282286	0 # molecule nr 237
+Ion_Type1_160	3.615744857	8.571428571	14.285714286	0 # molecule nr 238
+Ion_Type3_77	2.857142857	8.571428571	17.647141143	0 # molecule nr 239
+Ion_Type1_161	3.615744857	8.571428571	18.151425143	0 # molecule nr 240
+Ion_Type1_162	3.615744857	8.571428571	17.142857143	0 # molecule nr 241
+Ion_Type3_78	2.857142857	11.428571429	0.504284000	0 # molecule nr 242
+Ion_Type1_163	3.615744857	11.428571429	1.008568000	0 # molecule nr 243
+Ion_Type1_164	3.615744857	11.428571429	0.000000000	0 # molecule nr 244
+Ion_Type3_79	2.857142857	11.428571429	3.361426857	0 # molecule nr 245
+Ion_Type1_165	3.615744857	11.428571429	3.865710857	0 # molecule nr 246
+Ion_Type1_166	3.615744857	11.428571429	2.857142857	0 # molecule nr 247
+Ion_Type3_80	2.857142857	11.428571429	6.218569714	0 # molecule nr 248
+Ion_Type1_167	3.615744857	11.428571429	6.722853714	0 # molecule nr 249
+Ion_Type1_168	3.615744857	11.428571429	5.714285714	0 # molecule nr 250
+Ion_Type3_81	2.857142857	11.428571429	9.075712571	0 # molecule nr 251
+Ion_Type1_169	3.615744857	11.428571429	9.579996571	0 # molecule nr 252
+Ion_Type1_170	3.615744857	11.428571429	8.571428571	0 # molecule nr 253
+Ion_Type3_82	2.857142857	11.428571429	11.932855429	0 # molecule nr 254
+Ion_Type1_171	3.615744857	11.428571429	12.437139429	0 # molecule nr 255
+Ion_Type1_172	3.615744857	11.428571429	11.428571429	0 # molecule nr 256
+Ion_Type3_83	2.857142857	11.428571429	14.789998286	0 # molecule nr 257
+Ion_Type1_173	3.615744857	11.428571429	15.294282286	0 # molecule nr 258
+Ion_Type1_174	3.615744857	11.428571429	14.285714286	0 # molecule nr 259
+Ion_Type3_84	2.857142857	11.428571429	17.647141143	0 # molecule nr 260
+Ion_Type1_175	3.615744857	11.428571429	18.151425143	0 # molecule nr 261
+Ion_Type1_176	3.615744857	11.428571429	17.142857143	0 # molecule nr 262
+Ion_Type3_85	2.857142857	14.285714286	0.504284000	0 # molecule nr 263
+Ion_Type1_177	3.615744857	14.285714286	1.008568000	0 # molecule nr 264
+Ion_Type1_178	3.615744857	14.285714286	0.000000000	0 # molecule nr 265
+Ion_Type3_86	2.857142857	14.285714286	3.361426857	0 # molecule nr 266
+Ion_Type1_179	3.615744857	14.285714286	3.865710857	0 # molecule nr 267
+Ion_Type1_180	3.615744857	14.285714286	2.857142857	0 # molecule nr 268
+Ion_Type3_87	2.857142857	14.285714286	6.218569714	0 # molecule nr 269
+Ion_Type1_181	3.615744857	14.285714286	6.722853714	0 # molecule nr 270
+Ion_Type1_182	3.615744857	14.285714286	5.714285714	0 # molecule nr 271
+Ion_Type3_88	2.857142857	14.285714286	9.075712571	0 # molecule nr 272
+Ion_Type1_183	3.615744857	14.285714286	9.579996571	0 # molecule nr 273
+Ion_Type1_184	3.615744857	14.285714286	8.571428571	0 # molecule nr 274
+Ion_Type3_89	2.857142857	14.285714286	11.932855429	0 # molecule nr 275
+Ion_Type1_185	3.615744857	14.285714286	12.437139429	0 # molecule nr 276
+Ion_Type1_186	3.615744857	14.285714286	11.428571429	0 # molecule nr 277
+Ion_Type3_90	2.857142857	14.285714286	14.789998286	0 # molecule nr 278
+Ion_Type1_187	3.615744857	14.285714286	15.294282286	0 # molecule nr 279
+Ion_Type1_188	3.615744857	14.285714286	14.285714286	0 # molecule nr 280
+Ion_Type3_91	2.857142857	14.285714286	17.647141143	0 # molecule nr 281
+Ion_Type1_189	3.615744857	14.285714286	18.151425143	0 # molecule nr 282
+Ion_Type1_190	3.615744857	14.285714286	17.142857143	0 # molecule nr 283
+Ion_Type3_92	2.857142857	17.142857143	0.504284000	0 # molecule nr 284
+Ion_Type1_191	3.615744857	17.142857143	1.008568000	0 # molecule nr 285
+Ion_Type1_192	3.615744857	17.142857143	0.000000000	0 # molecule nr 286
+Ion_Type3_93	2.857142857	17.142857143	3.361426857	0 # molecule nr 287
+Ion_Type1_193	3.615744857	17.142857143	3.865710857	0 # molecule nr 288
+Ion_Type1_194	3.615744857	17.142857143	2.857142857	0 # molecule nr 289
+Ion_Type3_94	2.857142857	17.142857143	6.218569714	0 # molecule nr 290
+Ion_Type1_195	3.615744857	17.142857143	6.722853714	0 # molecule nr 291
+Ion_Type1_196	3.615744857	17.142857143	5.714285714	0 # molecule nr 292
+Ion_Type3_95	2.857142857	17.142857143	9.075712571	0 # molecule nr 293
+Ion_Type1_197	3.615744857	17.142857143	9.579996571	0 # molecule nr 294
+Ion_Type1_198	3.615744857	17.142857143	8.571428571	0 # molecule nr 295
+Ion_Type3_96	2.857142857	17.142857143	11.932855429	0 # molecule nr 296
+Ion_Type1_199	3.615744857	17.142857143	12.437139429	0 # molecule nr 297
+Ion_Type1_200	3.615744857	17.142857143	11.428571429	0 # molecule nr 298
+Ion_Type3_97	2.857142857	17.142857143	14.789998286	0 # molecule nr 299
+Ion_Type1_201	3.615744857	17.142857143	15.294282286	0 # molecule nr 300
+Ion_Type1_202	3.615744857	17.142857143	14.285714286	0 # molecule nr 301
+Ion_Type3_98	2.857142857	17.142857143	17.647141143	0 # molecule nr 302
+Ion_Type1_203	3.615744857	17.142857143	18.151425143	0 # molecule nr 303
+Ion_Type1_204	3.615744857	17.142857143	17.142857143	0 # molecule nr 304
+Ion_Type3_99	5.714285714	0.000000000	0.504284000	0 # molecule nr 305
+Ion_Type1_205	6.472887714	0.000000000	1.008568000	0 # molecule nr 306
+Ion_Type1_206	6.472887714	0.000000000	0.000000000	0 # molecule nr 307
+Ion_Type3_100	5.714285714	0.000000000	3.361426857	0 # molecule nr 308
+Ion_Type1_207	6.472887714	0.000000000	3.865710857	0 # molecule nr 309
+Ion_Type1_208	6.472887714	0.000000000	2.857142857	0 # molecule nr 310
+Ion_Type3_101	5.714285714	0.000000000	6.218569714	0 # molecule nr 311
+Ion_Type1_209	6.472887714	0.000000000	6.722853714	0 # molecule nr 312
+Ion_Type1_210	6.472887714	0.000000000	5.714285714	0 # molecule nr 313
+Ion_Type3_102	5.714285714	0.000000000	9.075712571	0 # molecule nr 314
+Ion_Type1_211	6.472887714	0.000000000	9.579996571	0 # molecule nr 315
+Ion_Type1_212	6.472887714	0.000000000	8.571428571	0 # molecule nr 316
+Ion_Type3_103	5.714285714	0.000000000	11.932855429	0 # molecule nr 317
+Ion_Type1_213	6.472887714	0.000000000	12.437139429	0 # molecule nr 318
+Ion_Type1_214	6.472887714	0.000000000	11.428571429	0 # molecule nr 319
+Ion_Type3_104	5.714285714	0.000000000	14.789998286	0 # molecule nr 320
+Ion_Type1_215	6.472887714	0.000000000	15.294282286	0 # molecule nr 321
+Ion_Type1_216	6.472887714	0.000000000	14.285714286	0 # molecule nr 322
+Ion_Type3_105	5.714285714	0.000000000	17.647141143	0 # molecule nr 323
+Ion_Type1_217	6.472887714	0.000000000	18.151425143	0 # molecule nr 324
+Ion_Type1_218	6.472887714	0.000000000	17.142857143	0 # molecule nr 325
+Ion_Type3_106	5.714285714	2.857142857	0.504284000	0 # molecule nr 326
+Ion_Type1_219	6.472887714	2.857142857	0.000000000	0 # molecule nr 327
+Ion_Type3_107	5.714285714	2.857142857	6.218569714	0 # molecule nr 328
+Ion_Type1_220	6.472887714	2.857142857	6.722853714	0 # molecule nr 329
+Ion_Type3_108	5.714285714	2.857142857	9.075712571	0 # molecule nr 330
+Ion_Type1_221	6.472887714	2.857142857	9.579996571	0 # molecule nr 331
+Ion_Type1_222	6.472887714	2.857142857	8.571428571	0 # molecule nr 332
+Ion_Type3_109	5.714285714	2.857142857	11.932855429	0 # molecule nr 333
+Ion_Type1_223	6.472887714	2.857142857	12.437139429	0 # molecule nr 334
+Ion_Type1_224	6.472887714	2.857142857	11.428571429	0 # molecule nr 335
+Ion_Type3_110	5.714285714	2.857142857	14.789998286	0 # molecule nr 336
+Ion_Type1_225	6.472887714	2.857142857	15.294282286	0 # molecule nr 337
+Ion_Type1_226	6.472887714	2.857142857	14.285714286	0 # molecule nr 338
+Ion_Type3_111	5.714285714	2.857142857	17.647141143	0 # molecule nr 339
+Ion_Type1_227	6.472887714	2.857142857	18.151425143	0 # molecule nr 340
+Ion_Type1_228	6.472887714	2.857142857	17.142857143	0 # molecule nr 341
+Ion_Type3_112	5.714285714	5.714285714	0.504284000	0 # molecule nr 342
+Ion_Type1_229	6.472887714	5.714285714	1.008568000	0 # molecule nr 343
+Ion_Type1_230	6.472887714	5.714285714	0.000000000	0 # molecule nr 344
+Ion_Type3_113	5.714285714	5.714285714	6.218569714	0 # molecule nr 345
+Ion_Type1_231	6.472887714	5.714285714	6.722853714	0 # molecule nr 346
+Ion_Type1_232	6.472887714	5.714285714	5.714285714	0 # molecule nr 347
+Ion_Type3_114	5.714285714	5.714285714	9.075712571	0 # molecule nr 348
+Ion_Type1_233	6.472887714	5.714285714	9.579996571	0 # molecule nr 349
+Ion_Type1_234	6.472887714	5.714285714	8.571428571	0 # molecule nr 350
+Ion_Type3_115	5.714285714	5.714285714	11.932855429	0 # molecule nr 351
+Ion_Type1_235	6.472887714	5.714285714	12.437139429	0 # molecule nr 352
+Ion_Type1_236	6.472887714	5.714285714	11.428571429	0 # molecule nr 353
+Ion_Type3_116	5.714285714	5.714285714	14.789998286	0 # molecule nr 354
+Ion_Type1_237	6.472887714	5.714285714	15.294282286	0 # molecule nr 355
+Ion_Type1_238	6.472887714	5.714285714	14.285714286	0 # molecule nr 356
+Ion_Type3_117	5.714285714	5.714285714	17.647141143	0 # molecule nr 357
+Ion_Type1_239	6.472887714	5.714285714	18.151425143	0 # molecule nr 358
+Ion_Type1_240	6.472887714	5.714285714	17.142857143	0 # molecule nr 359
+Ion_Type3_118	5.714285714	8.571428571	0.504284000	0 # molecule nr 360
+Ion_Type1_241	6.472887714	8.571428571	1.008568000	0 # molecule nr 361
+Ion_Type1_242	6.472887714	8.571428571	0.000000000	0 # molecule nr 362
+Ion_Type3_119	5.714285714	8.571428571	3.361426857	0 # molecule nr 363
+Ion_Type1_243	6.472887714	8.571428571	3.865710857	0 # molecule nr 364
+Ion_Type1_244	6.472887714	8.571428571	2.857142857	0 # molecule nr 365
+Ion_Type3_120	5.714285714	8.571428571	6.218569714	0 # molecule nr 366
+Ion_Type1_245	6.472887714	8.571428571	6.722853714	0 # molecule nr 367
+Ion_Type1_246	6.472887714	8.571428571	5.714285714	0 # molecule nr 368
+Ion_Type3_121	5.714285714	8.571428571	9.075712571	0 # molecule nr 369
+Ion_Type1_247	6.472887714	8.571428571	9.579996571	0 # molecule nr 370
+Ion_Type1_248	6.472887714	8.571428571	8.571428571	0 # molecule nr 371
+Ion_Type3_122	5.714285714	8.571428571	11.932855429	0 # molecule nr 372
+Ion_Type1_249	6.472887714	8.571428571	12.437139429	0 # molecule nr 373
+Ion_Type1_250	6.472887714	8.571428571	11.428571429	0 # molecule nr 374
+Ion_Type3_123	5.714285714	8.571428571	14.789998286	0 # molecule nr 375
+Ion_Type1_251	6.472887714	8.571428571	15.294282286	0 # molecule nr 376
+Ion_Type1_252	6.472887714	8.571428571	14.285714286	0 # molecule nr 377
+Ion_Type3_124	5.714285714	8.571428571	17.647141143	0 # molecule nr 378
+Ion_Type1_253	6.472887714	8.571428571	18.151425143	0 # molecule nr 379
+Ion_Type1_254	6.472887714	8.571428571	17.142857143	0 # molecule nr 380
+Ion_Type3_125	5.714285714	11.428571429	0.504284000	0 # molecule nr 381
+Ion_Type1_255	6.472887714	11.428571429	1.008568000	0 # molecule nr 382
+Ion_Type1_256	6.472887714	11.428571429	0.000000000	0 # molecule nr 383
+Ion_Type3_126	5.714285714	11.428571429	3.361426857	0 # molecule nr 384
+Ion_Type1_257	6.472887714	11.428571429	3.865710857	0 # molecule nr 385
+Ion_Type1_258	6.472887714	11.428571429	2.857142857	0 # molecule nr 386
+Ion_Type3_127	5.714285714	11.428571429	6.218569714	0 # molecule nr 387
+Ion_Type1_259	6.472887714	11.428571429	6.722853714	0 # molecule nr 388
+Ion_Type1_260	6.472887714	11.428571429	5.714285714	0 # molecule nr 389
+Ion_Type3_128	5.714285714	11.428571429	9.075712571	0 # molecule nr 390
+Ion_Type1_261	6.472887714	11.428571429	9.579996571	0 # molecule nr 391
+Ion_Type1_262	6.472887714	11.428571429	8.571428571	0 # molecule nr 392
+Ion_Type3_129	5.714285714	11.428571429	11.932855429	0 # molecule nr 393
+Ion_Type1_263	6.472887714	11.428571429	12.437139429	0 # molecule nr 394
+Ion_Type1_264	6.472887714	11.428571429	11.428571429	0 # molecule nr 395
+Ion_Type3_130	5.714285714	11.428571429	14.789998286	0 # molecule nr 396
+Ion_Type1_265	6.472887714	11.428571429	15.294282286	0 # molecule nr 397
+Ion_Type1_266	6.472887714	11.428571429	14.285714286	0 # molecule nr 398
+Ion_Type3_131	5.714285714	11.428571429	17.647141143	0 # molecule nr 399
+Ion_Type1_267	6.472887714	11.428571429	18.151425143	0 # molecule nr 400
+Ion_Type1_268	6.472887714	11.428571429	17.142857143	0 # molecule nr 401
+Ion_Type3_132	5.714285714	14.285714286	0.504284000	0 # molecule nr 402
+Ion_Type1_269	6.472887714	14.285714286	1.008568000	0 # molecule nr 403
+Ion_Type1_270	6.472887714	14.285714286	0.000000000	0 # molecule nr 404
+Ion_Type3_133	5.714285714	14.285714286	3.361426857	0 # molecule nr 405
+Ion_Type1_271	6.472887714	14.285714286	3.865710857	0 # molecule nr 406
+Ion_Type1_272	6.472887714	14.285714286	2.857142857	0 # molecule nr 407
+Ion_Type3_134	5.714285714	14.285714286	6.218569714	0 # molecule nr 408
+Ion_Type1_273	6.472887714	14.285714286	6.722853714	0 # molecule nr 409
+Ion_Type1_274	6.472887714	14.285714286	5.714285714	0 # molecule nr 410
+Ion_Type3_135	5.714285714	14.285714286	9.075712571	0 # molecule nr 411
+Ion_Type1_275	6.472887714	14.285714286	9.579996571	0 # molecule nr 412
+Ion_Type1_276	6.472887714	14.285714286	8.571428571	0 # molecule nr 413
+Ion_Type3_136	5.714285714	14.285714286	11.932855429	0 # molecule nr 414
+Ion_Type1_277	6.472887714	14.285714286	12.437139429	0 # molecule nr 415
+Ion_Type1_278	6.472887714	14.285714286	11.428571429	0 # molecule nr 416
+Ion_Type3_137	5.714285714	14.285714286	14.789998286	0 # molecule nr 417
+Ion_Type1_279	6.472887714	14.285714286	15.294282286	0 # molecule nr 418
+Ion_Type1_280	6.472887714	14.285714286	14.285714286	0 # molecule nr 419
+Ion_Type3_138	5.714285714	14.285714286	17.647141143	0 # molecule nr 420
+Ion_Type1_281	6.472887714	14.285714286	18.151425143	0 # molecule nr 421
+Ion_Type1_282	6.472887714	14.285714286	17.142857143	0 # molecule nr 422
+Ion_Type3_139	5.714285714	17.142857143	0.504284000	0 # molecule nr 423
+Ion_Type1_283	6.472887714	17.142857143	1.008568000	0 # molecule nr 424
+Ion_Type1_284	6.472887714	17.142857143	0.000000000	0 # molecule nr 425
+Ion_Type3_140	5.714285714	17.142857143	3.361426857	0 # molecule nr 426
+Ion_Type1_285	6.472887714	17.142857143	3.865710857	0 # molecule nr 427
+Ion_Type1_286	6.472887714	17.142857143	2.857142857	0 # molecule nr 428
+Ion_Type3_141	5.714285714	17.142857143	6.218569714	0 # molecule nr 429
+Ion_Type1_287	6.472887714	17.142857143	6.722853714	0 # molecule nr 430
+Ion_Type1_288	6.472887714	17.142857143	5.714285714	0 # molecule nr 431
+Ion_Type3_142	5.714285714	17.142857143	9.075712571	0 # molecule nr 432
+Ion_Type1_289	6.472887714	17.142857143	9.579996571	0 # molecule nr 433
+Ion_Type1_290	6.472887714	17.142857143	8.571428571	0 # molecule nr 434
+Ion_Type3_143	5.714285714	17.142857143	11.932855429	0 # molecule nr 435
+Ion_Type1_291	6.472887714	17.142857143	12.437139429	0 # molecule nr 436
+Ion_Type1_292	6.472887714	17.142857143	11.428571429	0 # molecule nr 437
+Ion_Type3_144	5.714285714	17.142857143	14.789998286	0 # molecule nr 438
+Ion_Type1_293	6.472887714	17.142857143	15.294282286	0 # molecule nr 439
+Ion_Type1_294	6.472887714	17.142857143	14.285714286	0 # molecule nr 440
+Ion_Type3_145	5.714285714	17.142857143	17.647141143	0 # molecule nr 441
+Ion_Type1_295	6.472887714	17.142857143	18.151425143	0 # molecule nr 442
+Ion_Type1_296	6.472887714	17.142857143	17.142857143	0 # molecule nr 443
+Ion_Type3_146	8.571428571	0.000000000	0.504284000	0 # molecule nr 444
+Ion_Type1_297	9.330030571	0.000000000	1.008568000	0 # molecule nr 445
+Ion_Type1_298	9.330030571	0.000000000	0.000000000	0 # molecule nr 446
+Ion_Type3_147	8.571428571	0.000000000	3.361426857	0 # molecule nr 447
+Ion_Type1_299	9.330030571	0.000000000	3.865710857	0 # molecule nr 448
+Ion_Type1_300	9.330030571	0.000000000	2.857142857	0 # molecule nr 449
+Ion_Type3_148	8.571428571	0.000000000	6.218569714	0 # molecule nr 450
+Ion_Type1_301	9.330030571	0.000000000	6.722853714	0 # molecule nr 451
+Ion_Type1_302	9.330030571	0.000000000	5.714285714	0 # molecule nr 452
+Ion_Type3_149	8.571428571	0.000000000	9.075712571	0 # molecule nr 453
+Ion_Type1_303	9.330030571	0.000000000	9.579996571	0 # molecule nr 454
+Ion_Type1_304	9.330030571	0.000000000	8.571428571	0 # molecule nr 455
+Ion_Type3_150	8.571428571	0.000000000	11.932855429	0 # molecule nr 456
+Ion_Type1_305	9.330030571	0.000000000	12.437139429	0 # molecule nr 457
+Ion_Type1_306	9.330030571	0.000000000	11.428571429	0 # molecule nr 458
+Ion_Type3_151	8.571428571	0.000000000	14.789998286	0 # molecule nr 459
+Ion_Type1_307	9.330030571	0.000000000	15.294282286	0 # molecule nr 460
+Ion_Type1_308	9.330030571	0.000000000	14.285714286	0 # molecule nr 461
+Ion_Type3_152	8.571428571	0.000000000	17.647141143	0 # molecule nr 462
+Ion_Type1_309	9.330030571	0.000000000	18.151425143	0 # molecule nr 463
+Ion_Type1_310	9.330030571	0.000000000	17.142857143	0 # molecule nr 464
+Ion_Type3_153	8.571428571	2.857142857	0.504284000	0 # molecule nr 465
+Ion_Type1_311	9.330030571	2.857142857	0.000000000	0 # molecule nr 466
+Ion_Type1_312	9.330030571	2.857142857	6.722853714	0 # molecule nr 467
+Ion_Type3_154	8.571428571	2.857142857	9.075712571	0 # molecule nr 468
+Ion_Type1_313	9.330030571	2.857142857	9.579996571	0 # molecule nr 469
+Ion_Type1_314	9.330030571	2.857142857	8.571428571	0 # molecule nr 470
+Ion_Type3_155	8.571428571	2.857142857	11.932855429	0 # molecule nr 471
+Ion_Type1_315	9.330030571	2.857142857	12.437139429	0 # molecule nr 472
+Ion_Type1_316	9.330030571	2.857142857	11.428571429	0 # molecule nr 473
+Ion_Type3_156	8.571428571	2.857142857	14.789998286	0 # molecule nr 474
+Ion_Type1_317	9.330030571	2.857142857	15.294282286	0 # molecule nr 475
+Ion_Type1_318	9.330030571	2.857142857	14.285714286	0 # molecule nr 476
+Ion_Type3_157	8.571428571	2.857142857	17.647141143	0 # molecule nr 477
+Ion_Type1_319	9.330030571	2.857142857	18.151425143	0 # molecule nr 478
+Ion_Type1_320	9.330030571	2.857142857	17.142857143	0 # molecule nr 479
+Ion_Type3_158	8.571428571	5.714285714	0.504284000	0 # molecule nr 480
+Ion_Type1_321	9.330030571	5.714285714	0.000000000	0 # molecule nr 481
+Ion_Type1_322	9.330030571	5.714285714	6.722853714	0 # molecule nr 482
+Ion_Type3_159	8.571428571	5.714285714	9.075712571	0 # molecule nr 483
+Ion_Type1_323	9.330030571	5.714285714	9.579996571	0 # molecule nr 484
+Ion_Type1_324	9.330030571	5.714285714	8.571428571	0 # molecule nr 485
+Ion_Type3_160	8.571428571	5.714285714	11.932855429	0 # molecule nr 486
+Ion_Type1_325	9.330030571	5.714285714	12.437139429	0 # molecule nr 487
+Ion_Type1_326	9.330030571	5.714285714	11.428571429	0 # molecule nr 488
+Ion_Type3_161	8.571428571	5.714285714	14.789998286	0 # molecule nr 489
+Ion_Type1_327	9.330030571	5.714285714	15.294282286	0 # molecule nr 490
+Ion_Type1_328	9.330030571	5.714285714	14.285714286	0 # molecule nr 491
+Ion_Type3_162	8.571428571	5.714285714	17.647141143	0 # molecule nr 492
+Ion_Type1_329	9.330030571	5.714285714	18.151425143	0 # molecule nr 493
+Ion_Type1_330	9.330030571	5.714285714	17.142857143	0 # molecule nr 494
+Ion_Type3_163	8.571428571	8.571428571	0.504284000	0 # molecule nr 495
+Ion_Type1_331	9.330030571	8.571428571	1.008568000	0 # molecule nr 496
+Ion_Type1_332	9.330030571	8.571428571	0.000000000	0 # molecule nr 497
+Ion_Type3_164	8.571428571	8.571428571	3.361426857	0 # molecule nr 498
+Ion_Type1_333	9.330030571	8.571428571	3.865710857	0 # molecule nr 499
+Ion_Type1_334	9.330030571	8.571428571	2.857142857	0 # molecule nr 500
+Ion_Type3_165	8.571428571	8.571428571	6.218569714	0 # molecule nr 501
+Ion_Type1_335	9.330030571	8.571428571	6.722853714	0 # molecule nr 502
+Ion_Type1_336	9.330030571	8.571428571	5.714285714	0 # molecule nr 503
+Ion_Type3_166	8.571428571	8.571428571	9.075712571	0 # molecule nr 504
+Ion_Type1_337	9.330030571	8.571428571	9.579996571	0 # molecule nr 505
+Ion_Type1_338	9.330030571	8.571428571	8.571428571	0 # molecule nr 506
+Ion_Type3_167	8.571428571	8.571428571	11.932855429	0 # molecule nr 507
+Ion_Type1_339	9.330030571	8.571428571	12.437139429	0 # molecule nr 508
+Ion_Type1_340	9.330030571	8.571428571	11.428571429	0 # molecule nr 509
+Ion_Type3_168	8.571428571	8.571428571	14.789998286	0 # molecule nr 510
+Ion_Type1_341	9.330030571	8.571428571	15.294282286	0 # molecule nr 511
+Ion_Type1_342	9.330030571	8.571428571	14.285714286	0 # molecule nr 512
+Ion_Type3_169	8.571428571	8.571428571	17.647141143	0 # molecule nr 513
+Ion_Type1_343	9.330030571	8.571428571	18.151425143	0 # molecule nr 514
+Ion_Type1_344	9.330030571	8.571428571	17.142857143	0 # molecule nr 515
+Ion_Type3_170	8.571428571	11.428571429	0.504284000	0 # molecule nr 516
+Ion_Type1_345	9.330030571	11.428571429	1.008568000	0 # molecule nr 517
+Ion_Type1_346	9.330030571	11.428571429	0.000000000	0 # molecule nr 518
+Ion_Type3_171	8.571428571	11.428571429	3.361426857	0 # molecule nr 519
+Ion_Type1_347	9.330030571	11.428571429	3.865710857	0 # molecule nr 520
+Ion_Type1_348	9.330030571	11.428571429	2.857142857	0 # molecule nr 521
+Ion_Type3_172	8.571428571	11.428571429	6.218569714	0 # molecule nr 522
+Ion_Type1_349	9.330030571	11.428571429	6.722853714	0 # molecule nr 523
+Ion_Type1_350	9.330030571	11.428571429	5.714285714	0 # molecule nr 524
+Ion_Type3_173	8.571428571	11.428571429	9.075712571	0 # molecule nr 525
+Ion_Type1_351	9.330030571	11.428571429	9.579996571	0 # molecule nr 526
+Ion_Type1_352	9.330030571	11.428571429	8.571428571	0 # molecule nr 527
+Ion_Type3_174	8.571428571	11.428571429	11.932855429	0 # molecule nr 528
+Ion_Type1_353	9.330030571	11.428571429	12.437139429	0 # molecule nr 529
+Ion_Type1_354	9.330030571	11.428571429	11.428571429	0 # molecule nr 530
+Ion_Type3_175	8.571428571	11.428571429	14.789998286	0 # molecule nr 531
+Ion_Type1_355	9.330030571	11.428571429	15.294282286	0 # molecule nr 532
+Ion_Type1_356	9.330030571	11.428571429	14.285714286	0 # molecule nr 533
+Ion_Type3_176	8.571428571	11.428571429	17.647141143	0 # molecule nr 534
+Ion_Type1_357	9.330030571	11.428571429	18.151425143	0 # molecule nr 535
+Ion_Type1_358	9.330030571	11.428571429	17.142857143	0 # molecule nr 536
+Ion_Type3_177	8.571428571	14.285714286	0.504284000	0 # molecule nr 537
+Ion_Type1_359	9.330030571	14.285714286	1.008568000	0 # molecule nr 538
+Ion_Type1_360	9.330030571	14.285714286	0.000000000	0 # molecule nr 539
+Ion_Type3_178	8.571428571	14.285714286	3.361426857	0 # molecule nr 540
+Ion_Type1_361	9.330030571	14.285714286	3.865710857	0 # molecule nr 541
+Ion_Type1_362	9.330030571	14.285714286	2.857142857	0 # molecule nr 542
+Ion_Type3_179	8.571428571	14.285714286	6.218569714	0 # molecule nr 543
+Ion_Type1_363	9.330030571	14.285714286	6.722853714	0 # molecule nr 544
+Ion_Type1_364	9.330030571	14.285714286	5.714285714	0 # molecule nr 545
+Ion_Type3_180	8.571428571	14.285714286	9.075712571	0 # molecule nr 546
+Ion_Type1_365	9.330030571	14.285714286	9.579996571	0 # molecule nr 547
+Ion_Type1_366	9.330030571	14.285714286	8.571428571	0 # molecule nr 548
+Ion_Type3_181	8.571428571	14.285714286	11.932855429	0 # molecule nr 549
+Ion_Type1_367	9.330030571	14.285714286	12.437139429	0 # molecule nr 550
+Ion_Type1_368	9.330030571	14.285714286	11.428571429	0 # molecule nr 551
+Ion_Type3_182	8.571428571	14.285714286	14.789998286	0 # molecule nr 552
+Ion_Type1_369	9.330030571	14.285714286	15.294282286	0 # molecule nr 553
+Ion_Type1_370	9.330030571	14.285714286	14.285714286	0 # molecule nr 554
+Ion_Type3_183	8.571428571	14.285714286	17.647141143	0 # molecule nr 555
+Ion_Type1_371	9.330030571	14.285714286	18.151425143	0 # molecule nr 556
+Ion_Type1_372	9.330030571	14.285714286	17.142857143	0 # molecule nr 557
+Ion_Type3_184	8.571428571	17.142857143	0.504284000	0 # molecule nr 558
+Ion_Type1_373	9.330030571	17.142857143	1.008568000	0 # molecule nr 559
+Ion_Type1_374	9.330030571	17.142857143	0.000000000	0 # molecule nr 560
+Ion_Type3_185	8.571428571	17.142857143	3.361426857	0 # molecule nr 561
+Ion_Type1_375	9.330030571	17.142857143	3.865710857	0 # molecule nr 562
+Ion_Type1_376	9.330030571	17.142857143	2.857142857	0 # molecule nr 563
+Ion_Type3_186	8.571428571	17.142857143	6.218569714	0 # molecule nr 564
+Ion_Type1_377	9.330030571	17.142857143	6.722853714	0 # molecule nr 565
+Ion_Type1_378	9.330030571	17.142857143	5.714285714	0 # molecule nr 566
+Ion_Type3_187	8.571428571	17.142857143	9.075712571	0 # molecule nr 567
+Ion_Type1_379	9.330030571	17.142857143	9.579996571	0 # molecule nr 568
+Ion_Type1_380	9.330030571	17.142857143	8.571428571	0 # molecule nr 569
+Ion_Type3_188	8.571428571	17.142857143	11.932855429	0 # molecule nr 570
+Ion_Type1_381	9.330030571	17.142857143	12.437139429	0 # molecule nr 571
+Ion_Type1_382	9.330030571	17.142857143	11.428571429	0 # molecule nr 572
+Ion_Type3_189	8.571428571	17.142857143	14.789998286	0 # molecule nr 573
+Ion_Type1_383	9.330030571	17.142857143	15.294282286	0 # molecule nr 574
+Ion_Type1_384	9.330030571	17.142857143	14.285714286	0 # molecule nr 575
+Ion_Type3_190	8.571428571	17.142857143	17.647141143	0 # molecule nr 576
+Ion_Type1_385	9.330030571	17.142857143	18.151425143	0 # molecule nr 577
+Ion_Type1_386	9.330030571	17.142857143	17.142857143	0 # molecule nr 578
+Ion_Type3_191	11.428571429	0.000000000	0.504284000	0 # molecule nr 579
+Ion_Type1_387	12.187173429	0.000000000	1.008568000	0 # molecule nr 580
+Ion_Type1_388	12.187173429	0.000000000	0.000000000	0 # molecule nr 581
+Ion_Type3_192	11.428571429	0.000000000	3.361426857	0 # molecule nr 582
+Ion_Type1_389	12.187173429	0.000000000	3.865710857	0 # molecule nr 583
+Ion_Type1_390	12.187173429	0.000000000	2.857142857	0 # molecule nr 584
+Ion_Type3_193	11.428571429	0.000000000	6.218569714	0 # molecule nr 585
+Ion_Type1_391	12.187173429	0.000000000	6.722853714	0 # molecule nr 586
+Ion_Type1_392	12.187173429	0.000000000	5.714285714	0 # molecule nr 587
+Ion_Type3_194	11.428571429	0.000000000	9.075712571	0 # molecule nr 588
+Ion_Type1_393	12.187173429	0.000000000	9.579996571	0 # molecule nr 589
+Ion_Type1_394	12.187173429	0.000000000	8.571428571	0 # molecule nr 590
+Ion_Type3_195	11.428571429	0.000000000	11.932855429	0 # molecule nr 591
+Ion_Type1_395	12.187173429	0.000000000	12.437139429	0 # molecule nr 592
+Ion_Type1_396	12.187173429	0.000000000	11.428571429	0 # molecule nr 593
+Ion_Type3_196	11.428571429	0.000000000	14.789998286	0 # molecule nr 594
+Ion_Type1_397	12.187173429	0.000000000	15.294282286	0 # molecule nr 595
+Ion_Type1_398	12.187173429	0.000000000	14.285714286	0 # molecule nr 596
+Ion_Type3_197	11.428571429	0.000000000	17.647141143	0 # molecule nr 597
+Ion_Type1_399	12.187173429	0.000000000	18.151425143	0 # molecule nr 598
+Ion_Type1_400	12.187173429	0.000000000	17.142857143	0 # molecule nr 599
+Ion_Type3_198	11.428571429	2.857142857	0.504284000	0 # molecule nr 600
+Ion_Type1_401	12.187173429	2.857142857	1.008568000	0 # molecule nr 601
+Ion_Type1_402	12.187173429	2.857142857	0.000000000	0 # molecule nr 602
+Ion_Type3_199	11.428571429	2.857142857	6.218569714	0 # molecule nr 603
+Ion_Type1_403	12.187173429	2.857142857	6.722853714	0 # molecule nr 604
+Ion_Type1_404	12.187173429	2.857142857	5.714285714	0 # molecule nr 605
+Ion_Type3_200	11.428571429	2.857142857	9.075712571	0 # molecule nr 606
+Ion_Type1_405	12.187173429	2.857142857	9.579996571	0 # molecule nr 607
+Ion_Type1_406	12.187173429	2.857142857	8.571428571	0 # molecule nr 608
+Ion_Type3_201	11.428571429	2.857142857	11.932855429	0 # molecule nr 609
+Ion_Type1_407	12.187173429	2.857142857	12.437139429	0 # molecule nr 610
+Ion_Type1_408	12.187173429	2.857142857	11.428571429	0 # molecule nr 611
+Ion_Type3_202	11.428571429	2.857142857	14.789998286	0 # molecule nr 612
+Ion_Type1_409	12.187173429	2.857142857	15.294282286	0 # molecule nr 613
+Ion_Type1_410	12.187173429	2.857142857	14.285714286	0 # molecule nr 614
+Ion_Type3_203	11.428571429	2.857142857	17.647141143	0 # molecule nr 615
+Ion_Type1_411	12.187173429	2.857142857	18.151425143	0 # molecule nr 616
+Ion_Type1_412	12.187173429	2.857142857	17.142857143	0 # molecule nr 617
+Ion_Type3_204	11.428571429	5.714285714	0.504284000	0 # molecule nr 618
+Ion_Type1_413	12.187173429	5.714285714	1.008568000	0 # molecule nr 619
+Ion_Type1_414	12.187173429	5.714285714	0.000000000	0 # molecule nr 620
+Ion_Type1_415	12.187173429	5.714285714	3.865710857	0 # molecule nr 621
+Ion_Type1_416	12.187173429	5.714285714	2.857142857	0 # molecule nr 622
+Ion_Type3_205	11.428571429	5.714285714	6.218569714	0 # molecule nr 623
+Ion_Type1_417	12.187173429	5.714285714	6.722853714	0 # molecule nr 624
+Ion_Type1_418	12.187173429	5.714285714	5.714285714	0 # molecule nr 625
+Ion_Type3_206	11.428571429	5.714285714	9.075712571	0 # molecule nr 626
+Ion_Type1_419	12.187173429	5.714285714	9.579996571	0 # molecule nr 627
+Ion_Type1_420	12.187173429	5.714285714	8.571428571	0 # molecule nr 628
+Ion_Type3_207	11.428571429	5.714285714	11.932855429	0 # molecule nr 629
+Ion_Type1_421	12.187173429	5.714285714	12.437139429	0 # molecule nr 630
+Ion_Type1_422	12.187173429	5.714285714	11.428571429	0 # molecule nr 631
+Ion_Type3_208	11.428571429	5.714285714	14.789998286	0 # molecule nr 632
+Ion_Type1_423	12.187173429	5.714285714	15.294282286	0 # molecule nr 633
+Ion_Type1_424	12.187173429	5.714285714	14.285714286	0 # molecule nr 634
+Ion_Type3_209	11.428571429	5.714285714	17.647141143	0 # molecule nr 635
+Ion_Type1_425	12.187173429	5.714285714	18.151425143	0 # molecule nr 636
+Ion_Type1_426	12.187173429	5.714285714	17.142857143	0 # molecule nr 637
+Ion_Type3_210	11.428571429	8.571428571	0.504284000	0 # molecule nr 638
+Ion_Type1_427	12.187173429	8.571428571	1.008568000	0 # molecule nr 639
+Ion_Type1_428	12.187173429	8.571428571	0.000000000	0 # molecule nr 640
+Ion_Type3_211	11.428571429	8.571428571	3.361426857	0 # molecule nr 641
+Ion_Type1_429	12.187173429	8.571428571	3.865710857	0 # molecule nr 642
+Ion_Type1_430	12.187173429	8.571428571	2.857142857	0 # molecule nr 643
+Ion_Type3_212	11.428571429	8.571428571	6.218569714	0 # molecule nr 644
+Ion_Type1_431	12.187173429	8.571428571	6.722853714	0 # molecule nr 645
+Ion_Type1_432	12.187173429	8.571428571	5.714285714	0 # molecule nr 646
+Ion_Type3_213	11.428571429	8.571428571	9.075712571	0 # molecule nr 647
+Ion_Type1_433	12.187173429	8.571428571	9.579996571	0 # molecule nr 648
+Ion_Type1_434	12.187173429	8.571428571	8.571428571	0 # molecule nr 649
+Ion_Type3_214	11.428571429	8.571428571	11.932855429	0 # molecule nr 650
+Ion_Type1_435	12.187173429	8.571428571	12.437139429	0 # molecule nr 651
+Ion_Type1_436	12.187173429	8.571428571	11.428571429	0 # molecule nr 652
+Ion_Type3_215	11.428571429	8.571428571	14.789998286	0 # molecule nr 653
+Ion_Type1_437	12.187173429	8.571428571	15.294282286	0 # molecule nr 654
+Ion_Type1_438	12.187173429	8.571428571	14.285714286	0 # molecule nr 655
+Ion_Type3_216	11.428571429	8.571428571	17.647141143	0 # molecule nr 656
+Ion_Type1_439	12.187173429	8.571428571	18.151425143	0 # molecule nr 657
+Ion_Type1_440	12.187173429	8.571428571	17.142857143	0 # molecule nr 658
+Ion_Type3_217	11.428571429	11.428571429	0.504284000	0 # molecule nr 659
+Ion_Type1_441	12.187173429	11.428571429	1.008568000	0 # molecule nr 660
+Ion_Type1_442	12.187173429	11.428571429	0.000000000	0 # molecule nr 661
+Ion_Type3_218	11.428571429	11.428571429	3.361426857	0 # molecule nr 662
+Ion_Type1_443	12.187173429	11.428571429	3.865710857	0 # molecule nr 663
+Ion_Type1_444	12.187173429	11.428571429	2.857142857	0 # molecule nr 664
+Ion_Type3_219	11.428571429	11.428571429	6.218569714	0 # molecule nr 665
+Ion_Type1_445	12.187173429	11.428571429	6.722853714	0 # molecule nr 666
+Ion_Type1_446	12.187173429	11.428571429	5.714285714	0 # molecule nr 667
+Ion_Type3_220	11.428571429	11.428571429	9.075712571	0 # molecule nr 668
+Ion_Type1_447	12.187173429	11.428571429	9.579996571	0 # molecule nr 669
+Ion_Type1_448	12.187173429	11.428571429	8.571428571	0 # molecule nr 670
+Ion_Type3_221	11.428571429	11.428571429	11.932855429	0 # molecule nr 671
+Ion_Type1_449	12.187173429	11.428571429	12.437139429	0 # molecule nr 672
+Ion_Type1_450	12.187173429	11.428571429	11.428571429	0 # molecule nr 673
+Ion_Type3_222	11.428571429	11.428571429	14.789998286	0 # molecule nr 674
+Ion_Type1_451	12.187173429	11.428571429	15.294282286	0 # molecule nr 675
+Ion_Type1_452	12.187173429	11.428571429	14.285714286	0 # molecule nr 676
+Ion_Type3_223	11.428571429	11.428571429	17.647141143	0 # molecule nr 677
+Ion_Type1_453	12.187173429	11.428571429	18.151425143	0 # molecule nr 678
+Ion_Type1_454	12.187173429	11.428571429	17.142857143	0 # molecule nr 679
+Ion_Type3_224	11.428571429	14.285714286	0.504284000	0 # molecule nr 680
+Ion_Type1_455	12.187173429	14.285714286	1.008568000	0 # molecule nr 681
+Ion_Type1_456	12.187173429	14.285714286	0.000000000	0 # molecule nr 682
+Ion_Type3_225	11.428571429	14.285714286	3.361426857	0 # molecule nr 683
+Ion_Type1_457	12.187173429	14.285714286	3.865710857	0 # molecule nr 684
+Ion_Type1_458	12.187173429	14.285714286	2.857142857	0 # molecule nr 685
+Ion_Type3_226	11.428571429	14.285714286	6.218569714	0 # molecule nr 686
+Ion_Type1_459	12.187173429	14.285714286	6.722853714	0 # molecule nr 687
+Ion_Type1_460	12.187173429	14.285714286	5.714285714	0 # molecule nr 688
+Ion_Type3_227	11.428571429	14.285714286	9.075712571	0 # molecule nr 689
+Ion_Type1_461	12.187173429	14.285714286	9.579996571	0 # molecule nr 690
+Ion_Type1_462	12.187173429	14.285714286	8.571428571	0 # molecule nr 691
+Ion_Type3_228	11.428571429	14.285714286	11.932855429	0 # molecule nr 692
+Ion_Type1_463	12.187173429	14.285714286	12.437139429	0 # molecule nr 693
+Ion_Type1_464	12.187173429	14.285714286	11.428571429	0 # molecule nr 694
+Ion_Type3_229	11.428571429	14.285714286	14.789998286	0 # molecule nr 695
+Ion_Type1_465	12.187173429	14.285714286	15.294282286	0 # molecule nr 696
+Ion_Type1_466	12.187173429	14.285714286	14.285714286	0 # molecule nr 697
+Ion_Type3_230	11.428571429	14.285714286	17.647141143	0 # molecule nr 698
+Ion_Type1_467	12.187173429	14.285714286	18.151425143	0 # molecule nr 699
+Ion_Type1_468	12.187173429	14.285714286	17.142857143	0 # molecule nr 700
+Ion_Type3_231	11.428571429	17.142857143	0.504284000	0 # molecule nr 701
+Ion_Type1_469	12.187173429	17.142857143	1.008568000	0 # molecule nr 702
+Ion_Type1_470	12.187173429	17.142857143	0.000000000	0 # molecule nr 703
+Ion_Type3_232	11.428571429	17.142857143	3.361426857	0 # molecule nr 704
+Ion_Type1_471	12.187173429	17.142857143	3.865710857	0 # molecule nr 705
+Ion_Type1_472	12.187173429	17.142857143	2.857142857	0 # molecule nr 706
+Ion_Type3_233	11.428571429	17.142857143	6.218569714	0 # molecule nr 707
+Ion_Type1_473	12.187173429	17.142857143	6.722853714	0 # molecule nr 708
+Ion_Type1_474	12.187173429	17.142857143	5.714285714	0 # molecule nr 709
+Ion_Type3_234	11.428571429	17.142857143	9.075712571	0 # molecule nr 710
+Ion_Type1_475	12.187173429	17.142857143	9.579996571	0 # molecule nr 711
+Ion_Type1_476	12.187173429	17.142857143	8.571428571	0 # molecule nr 712
+Ion_Type3_235	11.428571429	17.142857143	11.932855429	0 # molecule nr 713
+Ion_Type1_477	12.187173429	17.142857143	12.437139429	0 # molecule nr 714
+Ion_Type1_478	12.187173429	17.142857143	11.428571429	0 # molecule nr 715
+Ion_Type3_236	11.428571429	17.142857143	14.789998286	0 # molecule nr 716
+Ion_Type1_479	12.187173429	17.142857143	15.294282286	0 # molecule nr 717
+Ion_Type1_480	12.187173429	17.142857143	14.285714286	0 # molecule nr 718
+Ion_Type3_237	11.428571429	17.142857143	17.647141143	0 # molecule nr 719
+Ion_Type1_481	12.187173429	17.142857143	18.151425143	0 # molecule nr 720
+Ion_Type1_482	12.187173429	17.142857143	17.142857143	0 # molecule nr 721
+Ion_Type3_238	14.285714286	0.000000000	0.504284000	0 # molecule nr 722
+Ion_Type1_483	15.044316286	0.000000000	1.008568000	0 # molecule nr 723
+Ion_Type1_484	15.044316286	0.000000000	0.000000000	0 # molecule nr 724
+Ion_Type3_239	14.285714286	0.000000000	3.361426857	0 # molecule nr 725
+Ion_Type1_485	15.044316286	0.000000000	3.865710857	0 # molecule nr 726
+Ion_Type1_486	15.044316286	0.000000000	2.857142857	0 # molecule nr 727
+Ion_Type3_240	14.285714286	0.000000000	6.218569714	0 # molecule nr 728
+Ion_Type1_487	15.044316286	0.000000000	6.722853714	0 # molecule nr 729
+Ion_Type1_488	15.044316286	0.000000000	5.714285714	0 # molecule nr 730
+Ion_Type3_241	14.285714286	0.000000000	9.075712571	0 # molecule nr 731
+Ion_Type1_489	15.044316286	0.000000000	9.579996571	0 # molecule nr 732
+Ion_Type1_490	15.044316286	0.000000000	8.571428571	0 # molecule nr 733
+Ion_Type3_242	14.285714286	0.000000000	11.932855429	0 # molecule nr 734
+Ion_Type1_491	15.044316286	0.000000000	12.437139429	0 # molecule nr 735
+Ion_Type1_492	15.044316286	0.000000000	11.428571429	0 # molecule nr 736
+Ion_Type3_243	14.285714286	0.000000000	14.789998286	0 # molecule nr 737
+Ion_Type1_493	15.044316286	0.000000000	15.294282286	0 # molecule nr 738
+Ion_Type1_494	15.044316286	0.000000000	14.285714286	0 # molecule nr 739
+Ion_Type3_244	14.285714286	0.000000000	17.647141143	0 # molecule nr 740
+Ion_Type1_495	15.044316286	0.000000000	18.151425143	0 # molecule nr 741
+Ion_Type1_496	15.044316286	0.000000000	17.142857143	0 # molecule nr 742
+Ion_Type3_245	14.285714286	2.857142857	0.504284000	0 # molecule nr 743
+Ion_Type1_497	15.044316286	2.857142857	1.008568000	0 # molecule nr 744
+Ion_Type1_498	15.044316286	2.857142857	0.000000000	0 # molecule nr 745
+Ion_Type3_246	14.285714286	2.857142857	3.361426857	0 # molecule nr 746
+Ion_Type1_499	15.044316286	2.857142857	3.865710857	0 # molecule nr 747
+Ion_Type1_500	15.044316286	2.857142857	2.857142857	0 # molecule nr 748
+Ion_Type3_247	14.285714286	2.857142857	6.218569714	0 # molecule nr 749
+Ion_Type1_501	15.044316286	2.857142857	6.722853714	0 # molecule nr 750
+Ion_Type1_502	15.044316286	2.857142857	5.714285714	0 # molecule nr 751
+Ion_Type3_248	14.285714286	2.857142857	9.075712571	0 # molecule nr 752
+Ion_Type1_503	15.044316286	2.857142857	9.579996571	0 # molecule nr 753
+Ion_Type1_504	15.044316286	2.857142857	8.571428571	0 # molecule nr 754
+Ion_Type3_249	14.285714286	2.857142857	11.932855429	0 # molecule nr 755
+Ion_Type1_505	15.044316286	2.857142857	12.437139429	0 # molecule nr 756
+Ion_Type1_506	15.044316286	2.857142857	11.428571429	0 # molecule nr 757
+Ion_Type3_250	14.285714286	2.857142857	14.789998286	0 # molecule nr 758
+Ion_Type1_507	15.044316286	2.857142857	15.294282286	0 # molecule nr 759
+Ion_Type1_508	15.044316286	2.857142857	14.285714286	0 # molecule nr 760
+Ion_Type3_251	14.285714286	2.857142857	17.647141143	0 # molecule nr 761
+Ion_Type1_509	15.044316286	2.857142857	18.151425143	0 # molecule nr 762
+Ion_Type1_510	15.044316286	2.857142857	17.142857143	0 # molecule nr 763
+Ion_Type3_252	14.285714286	5.714285714	0.504284000	0 # molecule nr 764
+Ion_Type1_511	15.044316286	5.714285714	1.008568000	0 # molecule nr 765
+Ion_Type1_512	15.044316286	5.714285714	0.000000000	0 # molecule nr 766
+Ion_Type3_253	14.285714286	5.714285714	3.361426857	0 # molecule nr 767
+Ion_Type1_513	15.044316286	5.714285714	3.865710857	0 # molecule nr 768
+Ion_Type1_514	15.044316286	5.714285714	2.857142857	0 # molecule nr 769
+Ion_Type3_254	14.285714286	5.714285714	6.218569714	0 # molecule nr 770
+Ion_Type1_515	15.044316286	5.714285714	6.722853714	0 # molecule nr 771
+Ion_Type1_516	15.044316286	5.714285714	5.714285714	0 # molecule nr 772
+Ion_Type3_255	14.285714286	5.714285714	9.075712571	0 # molecule nr 773
+Ion_Type1_517	15.044316286	5.714285714	9.579996571	0 # molecule nr 774
+Ion_Type1_518	15.044316286	5.714285714	8.571428571	0 # molecule nr 775
+Ion_Type3_256	14.285714286	5.714285714	11.932855429	0 # molecule nr 776
+Ion_Type1_519	15.044316286	5.714285714	12.437139429	0 # molecule nr 777
+Ion_Type1_520	15.044316286	5.714285714	11.428571429	0 # molecule nr 778
+Ion_Type3_257	14.285714286	5.714285714	14.789998286	0 # molecule nr 779
+Ion_Type1_521	15.044316286	5.714285714	15.294282286	0 # molecule nr 780
+Ion_Type1_522	15.044316286	5.714285714	14.285714286	0 # molecule nr 781
+Ion_Type3_258	14.285714286	5.714285714	17.647141143	0 # molecule nr 782
+Ion_Type1_523	15.044316286	5.714285714	18.151425143	0 # molecule nr 783
+Ion_Type1_524	15.044316286	5.714285714	17.142857143	0 # molecule nr 784
+Ion_Type3_259	14.285714286	8.571428571	0.504284000	0 # molecule nr 785
+Ion_Type1_525	15.044316286	8.571428571	1.008568000	0 # molecule nr 786
+Ion_Type1_526	15.044316286	8.571428571	0.000000000	0 # molecule nr 787
+Ion_Type3_260	14.285714286	8.571428571	3.361426857	0 # molecule nr 788
+Ion_Type1_527	15.044316286	8.571428571	3.865710857	0 # molecule nr 789
+Ion_Type1_528	15.044316286	8.571428571	2.857142857	0 # molecule nr 790
+Ion_Type3_261	14.285714286	8.571428571	6.218569714	0 # molecule nr 791
+Ion_Type1_529	15.044316286	8.571428571	6.722853714	0 # molecule nr 792
+Ion_Type1_530	15.044316286	8.571428571	5.714285714	0 # molecule nr 793
+Ion_Type3_262	14.285714286	8.571428571	9.075712571	0 # molecule nr 794
+Ion_Type1_531	15.044316286	8.571428571	9.579996571	0 # molecule nr 795
+Ion_Type1_532	15.044316286	8.571428571	8.571428571	0 # molecule nr 796
+Ion_Type3_263	14.285714286	8.571428571	11.932855429	0 # molecule nr 797
+Ion_Type1_533	15.044316286	8.571428571	12.437139429	0 # molecule nr 798
+Ion_Type1_534	15.044316286	8.571428571	11.428571429	0 # molecule nr 799
+Ion_Type3_264	14.285714286	8.571428571	14.789998286	0 # molecule nr 800
+Ion_Type1_535	15.044316286	8.571428571	15.294282286	0 # molecule nr 801
+Ion_Type1_536	15.044316286	8.571428571	14.285714286	0 # molecule nr 802
+Ion_Type3_265	14.285714286	8.571428571	17.647141143	0 # molecule nr 803
+Ion_Type1_537	15.044316286	8.571428571	18.151425143	0 # molecule nr 804
+Ion_Type1_538	15.044316286	8.571428571	17.142857143	0 # molecule nr 805
+Ion_Type3_266	14.285714286	11.428571429	0.504284000	0 # molecule nr 806
+Ion_Type1_539	15.044316286	11.428571429	1.008568000	0 # molecule nr 807
+Ion_Type1_540	15.044316286	11.428571429	0.000000000	0 # molecule nr 808
+Ion_Type3_267	14.285714286	11.428571429	3.361426857	0 # molecule nr 809
+Ion_Type1_541	15.044316286	11.428571429	3.865710857	0 # molecule nr 810
+Ion_Type1_542	15.044316286	11.428571429	2.857142857	0 # molecule nr 811
+Ion_Type3_268	14.285714286	11.428571429	6.218569714	0 # molecule nr 812
+Ion_Type1_543	15.044316286	11.428571429	6.722853714	0 # molecule nr 813
+Ion_Type1_544	15.044316286	11.428571429	5.714285714	0 # molecule nr 814
+Ion_Type3_269	14.285714286	11.428571429	9.075712571	0 # molecule nr 815
+Ion_Type1_545	15.044316286	11.428571429	9.579996571	0 # molecule nr 816
+Ion_Type1_546	15.044316286	11.428571429	8.571428571	0 # molecule nr 817
+Ion_Type3_270	14.285714286	11.428571429	11.932855429	0 # molecule nr 818
+Ion_Type1_547	15.044316286	11.428571429	12.437139429	0 # molecule nr 819
+Ion_Type1_548	15.044316286	11.428571429	11.428571429	0 # molecule nr 820
+Ion_Type3_271	14.285714286	11.428571429	14.789998286	0 # molecule nr 821
+Ion_Type1_549	15.044316286	11.428571429	15.294282286	0 # molecule nr 822
+Ion_Type1_550	15.044316286	11.428571429	14.285714286	0 # molecule nr 823
+Ion_Type3_272	14.285714286	11.428571429	17.647141143	0 # molecule nr 824
+Ion_Type1_551	15.044316286	11.428571429	18.151425143	0 # molecule nr 825
+Ion_Type1_552	15.044316286	11.428571429	17.142857143	0 # molecule nr 826
+Ion_Type3_273	14.285714286	14.285714286	0.504284000	0 # molecule nr 827
+Ion_Type1_553	15.044316286	14.285714286	1.008568000	0 # molecule nr 828
+Ion_Type1_554	15.044316286	14.285714286	0.000000000	0 # molecule nr 829
+Ion_Type3_274	14.285714286	14.285714286	3.361426857	0 # molecule nr 830
+Ion_Type1_555	15.044316286	14.285714286	3.865710857	0 # molecule nr 831
+Ion_Type1_556	15.044316286	14.285714286	2.857142857	0 # molecule nr 832
+Ion_Type3_275	14.285714286	14.285714286	6.218569714	0 # molecule nr 833
+Ion_Type1_557	15.044316286	14.285714286	6.722853714	0 # molecule nr 834
+Ion_Type1_558	15.044316286	14.285714286	5.714285714	0 # molecule nr 835
+Ion_Type3_276	14.285714286	14.285714286	9.075712571	0 # molecule nr 836
+Ion_Type1_559	15.044316286	14.285714286	9.579996571	0 # molecule nr 837
+Ion_Type1_560	15.044316286	14.285714286	8.571428571	0 # molecule nr 838
+Ion_Type3_277	14.285714286	14.285714286	11.932855429	0 # molecule nr 839
+Ion_Type1_561	15.044316286	14.285714286	12.437139429	0 # molecule nr 840
+Ion_Type1_562	15.044316286	14.285714286	11.428571429	0 # molecule nr 841
+Ion_Type3_278	14.285714286	14.285714286	14.789998286	0 # molecule nr 842
+Ion_Type1_563	15.044316286	14.285714286	15.294282286	0 # molecule nr 843
+Ion_Type1_564	15.044316286	14.285714286	14.285714286	0 # molecule nr 844
+Ion_Type3_279	14.285714286	14.285714286	17.647141143	0 # molecule nr 845
+Ion_Type1_565	15.044316286	14.285714286	18.151425143	0 # molecule nr 846
+Ion_Type1_566	15.044316286	14.285714286	17.142857143	0 # molecule nr 847
+Ion_Type3_280	14.285714286	17.142857143	0.504284000	0 # molecule nr 848
+Ion_Type1_567	15.044316286	17.142857143	1.008568000	0 # molecule nr 849
+Ion_Type1_568	15.044316286	17.142857143	0.000000000	0 # molecule nr 850
+Ion_Type3_281	14.285714286	17.142857143	3.361426857	0 # molecule nr 851
+Ion_Type1_569	15.044316286	17.142857143	3.865710857	0 # molecule nr 852
+Ion_Type1_570	15.044316286	17.142857143	2.857142857	0 # molecule nr 853
+Ion_Type3_282	14.285714286	17.142857143	6.218569714	0 # molecule nr 854
+Ion_Type1_571	15.044316286	17.142857143	6.722853714	0 # molecule nr 855
+Ion_Type1_572	15.044316286	17.142857143	5.714285714	0 # molecule nr 856
+Ion_Type3_283	14.285714286	17.142857143	9.075712571	0 # molecule nr 857
+Ion_Type1_573	15.044316286	17.142857143	9.579996571	0 # molecule nr 858
+Ion_Type1_574	15.044316286	17.142857143	8.571428571	0 # molecule nr 859
+Ion_Type3_284	14.285714286	17.142857143	11.932855429	0 # molecule nr 860
+Ion_Type1_575	15.044316286	17.142857143	12.437139429	0 # molecule nr 861
+Ion_Type1_576	15.044316286	17.142857143	11.428571429	0 # molecule nr 862
+Ion_Type3_285	14.285714286	17.142857143	14.789998286	0 # molecule nr 863
+Ion_Type1_577	15.044316286	17.142857143	15.294282286	0 # molecule nr 864
+Ion_Type1_578	15.044316286	17.142857143	14.285714286	0 # molecule nr 865
+Ion_Type3_286	14.285714286	17.142857143	17.647141143	0 # molecule nr 866
+Ion_Type1_579	15.044316286	17.142857143	18.151425143	0 # molecule nr 867
+Ion_Type1_580	15.044316286	17.142857143	17.142857143	0 # molecule nr 868
+Ion_Type3_287	17.142857143	0.000000000	0.504284000	0 # molecule nr 869
+Ion_Type1_581	17.901459143	0.000000000	1.008568000	0 # molecule nr 870
+Ion_Type1_582	17.901459143	0.000000000	0.000000000	0 # molecule nr 871
+Ion_Type3_288	17.142857143	0.000000000	3.361426857	0 # molecule nr 872
+Ion_Type1_583	17.901459143	0.000000000	3.865710857	0 # molecule nr 873
+Ion_Type1_584	17.901459143	0.000000000	2.857142857	0 # molecule nr 874
+Ion_Type3_289	17.142857143	0.000000000	6.218569714	0 # molecule nr 875
+Ion_Type1_585	17.901459143	0.000000000	6.722853714	0 # molecule nr 876
+Ion_Type1_586	17.901459143	0.000000000	5.714285714	0 # molecule nr 877
+Ion_Type3_290	17.142857143	0.000000000	9.075712571	0 # molecule nr 878
+Ion_Type1_587	17.901459143	0.000000000	9.579996571	0 # molecule nr 879
+Ion_Type1_588	17.901459143	0.000000000	8.571428571	0 # molecule nr 880
+Ion_Type3_291	17.142857143	0.000000000	11.932855429	0 # molecule nr 881
+Ion_Type1_589	17.901459143	0.000000000	12.437139429	0 # molecule nr 882
+Ion_Type1_590	17.901459143	0.000000000	11.428571429	0 # molecule nr 883
+Ion_Type3_292	17.142857143	0.000000000	14.789998286	0 # molecule nr 884
+Ion_Type1_591	17.901459143	0.000000000	15.294282286	0 # molecule nr 885
+Ion_Type1_592	17.901459143	0.000000000	14.285714286	0 # molecule nr 886
+Ion_Type3_293	17.142857143	0.000000000	17.647141143	0 # molecule nr 887
+Ion_Type1_593	17.901459143	0.000000000	18.151425143	0 # molecule nr 888
+Ion_Type1_594	17.901459143	0.000000000	17.142857143	0 # molecule nr 889
+Ion_Type3_294	17.142857143	2.857142857	0.504284000	0 # molecule nr 890
+Ion_Type1_595	17.901459143	2.857142857	1.008568000	0 # molecule nr 891
+Ion_Type1_596	17.901459143	2.857142857	0.000000000	0 # molecule nr 892
+Ion_Type3_295	17.142857143	2.857142857	3.361426857	0 # molecule nr 893
+Ion_Type1_597	17.901459143	2.857142857	3.865710857	0 # molecule nr 894
+Ion_Type1_598	17.901459143	2.857142857	2.857142857	0 # molecule nr 895
+Ion_Type3_296	17.142857143	2.857142857	6.218569714	0 # molecule nr 896
+Ion_Type1_599	17.901459143	2.857142857	6.722853714	0 # molecule nr 897
+Ion_Type1_600	17.901459143	2.857142857	5.714285714	0 # molecule nr 898
+Ion_Type3_297	17.142857143	2.857142857	9.075712571	0 # molecule nr 899
+Ion_Type1_601	17.901459143	2.857142857	9.579996571	0 # molecule nr 900
+Ion_Type1_602	17.901459143	2.857142857	8.571428571	0 # molecule nr 901
+Ion_Type3_298	17.142857143	2.857142857	11.932855429	0 # molecule nr 902
+Ion_Type1_603	17.901459143	2.857142857	12.437139429	0 # molecule nr 903
+Ion_Type1_604	17.901459143	2.857142857	11.428571429	0 # molecule nr 904
+Ion_Type3_299	17.142857143	2.857142857	14.789998286	0 # molecule nr 905
+Ion_Type1_605	17.901459143	2.857142857	15.294282286	0 # molecule nr 906
+Ion_Type1_606	17.901459143	2.857142857	14.285714286	0 # molecule nr 907
+Ion_Type3_300	17.142857143	2.857142857	17.647141143	0 # molecule nr 908
+Ion_Type1_607	17.901459143	2.857142857	18.151425143	0 # molecule nr 909
+Ion_Type1_608	17.901459143	2.857142857	17.142857143	0 # molecule nr 910
+Ion_Type3_301	17.142857143	5.714285714	0.504284000	0 # molecule nr 911
+Ion_Type1_609	17.901459143	5.714285714	1.008568000	0 # molecule nr 912
+Ion_Type1_610	17.901459143	5.714285714	0.000000000	0 # molecule nr 913
+Ion_Type3_302	17.142857143	5.714285714	3.361426857	0 # molecule nr 914
+Ion_Type1_611	17.901459143	5.714285714	3.865710857	0 # molecule nr 915
+Ion_Type1_612	17.901459143	5.714285714	2.857142857	0 # molecule nr 916
+Ion_Type3_303	17.142857143	5.714285714	6.218569714	0 # molecule nr 917
+Ion_Type1_613	17.901459143	5.714285714	6.722853714	0 # molecule nr 918
+Ion_Type1_614	17.901459143	5.714285714	5.714285714	0 # molecule nr 919
+Ion_Type3_304	17.142857143	5.714285714	9.075712571	0 # molecule nr 920
+Ion_Type1_615	17.901459143	5.714285714	9.579996571	0 # molecule nr 921
+Ion_Type1_616	17.901459143	5.714285714	8.571428571	0 # molecule nr 922
+Ion_Type3_305	17.142857143	5.714285714	11.932855429	0 # molecule nr 923
+Ion_Type1_617	17.901459143	5.714285714	12.437139429	0 # molecule nr 924
+Ion_Type1_618	17.901459143	5.714285714	11.428571429	0 # molecule nr 925
+Ion_Type3_306	17.142857143	5.714285714	14.789998286	0 # molecule nr 926
+Ion_Type1_619	17.901459143	5.714285714	15.294282286	0 # molecule nr 927
+Ion_Type1_620	17.901459143	5.714285714	14.285714286	0 # molecule nr 928
+Ion_Type3_307	17.142857143	5.714285714	17.647141143	0 # molecule nr 929
+Ion_Type1_621	17.901459143	5.714285714	18.151425143	0 # molecule nr 930
+Ion_Type1_622	17.901459143	5.714285714	17.142857143	0 # molecule nr 931
+Ion_Type3_308	17.142857143	8.571428571	0.504284000	0 # molecule nr 932
+Ion_Type1_623	17.901459143	8.571428571	1.008568000	0 # molecule nr 933
+Ion_Type1_624	17.901459143	8.571428571	0.000000000	0 # molecule nr 934
+Ion_Type3_309	17.142857143	8.571428571	3.361426857	0 # molecule nr 935
+Ion_Type1_625	17.901459143	8.571428571	3.865710857	0 # molecule nr 936
+Ion_Type1_626	17.901459143	8.571428571	2.857142857	0 # molecule nr 937
+Ion_Type3_310	17.142857143	8.571428571	6.218569714	0 # molecule nr 938
+Ion_Type1_627	17.901459143	8.571428571	6.722853714	0 # molecule nr 939
+Ion_Type1_628	17.901459143	8.571428571	5.714285714	0 # molecule nr 940
+Ion_Type3_311	17.142857143	8.571428571	9.075712571	0 # molecule nr 941
+Ion_Type1_629	17.901459143	8.571428571	9.579996571	0 # molecule nr 942
+Ion_Type1_630	17.901459143	8.571428571	8.571428571	0 # molecule nr 943
+Ion_Type3_312	17.142857143	8.571428571	11.932855429	0 # molecule nr 944
+Ion_Type1_631	17.901459143	8.571428571	12.437139429	0 # molecule nr 945
+Ion_Type1_632	17.901459143	8.571428571	11.428571429	0 # molecule nr 946
+Ion_Type3_313	17.142857143	8.571428571	14.789998286	0 # molecule nr 947
+Ion_Type1_633	17.901459143	8.571428571	15.294282286	0 # molecule nr 948
+Ion_Type1_634	17.901459143	8.571428571	14.285714286	0 # molecule nr 949
+Ion_Type3_314	17.142857143	8.571428571	17.647141143	0 # molecule nr 950
+Ion_Type1_635	17.901459143	8.571428571	18.151425143	0 # molecule nr 951
+Ion_Type1_636	17.901459143	8.571428571	17.142857143	0 # molecule nr 952
+Ion_Type3_315	17.142857143	11.428571429	0.504284000	0 # molecule nr 953
+Ion_Type1_637	17.901459143	11.428571429	1.008568000	0 # molecule nr 954
+Ion_Type1_638	17.901459143	11.428571429	0.000000000	0 # molecule nr 955
+Ion_Type3_316	17.142857143	11.428571429	3.361426857	0 # molecule nr 956
+Ion_Type1_639	17.901459143	11.428571429	3.865710857	0 # molecule nr 957
+Ion_Type1_640	17.901459143	11.428571429	2.857142857	0 # molecule nr 958
+Ion_Type3_317	17.142857143	11.428571429	6.218569714	0 # molecule nr 959
+Ion_Type1_641	17.901459143	11.428571429	6.722853714	0 # molecule nr 960
+Ion_Type1_642	17.901459143	11.428571429	5.714285714	0 # molecule nr 961
+Ion_Type3_318	17.142857143	11.428571429	9.075712571	0 # molecule nr 962
+Ion_Type1_643	17.901459143	11.428571429	9.579996571	0 # molecule nr 963
+Ion_Type1_644	17.901459143	11.428571429	8.571428571	0 # molecule nr 964
+Ion_Type3_319	17.142857143	11.428571429	11.932855429	0 # molecule nr 965
+Ion_Type1_645	17.901459143	11.428571429	12.437139429	0 # molecule nr 966
+Ion_Type1_646	17.901459143	11.428571429	11.428571429	0 # molecule nr 967
+Ion_Type3_320	17.142857143	11.428571429	14.789998286	0 # molecule nr 968
+Ion_Type1_647	17.901459143	11.428571429	15.294282286	0 # molecule nr 969
+Ion_Type1_648	17.901459143	11.428571429	14.285714286	0 # molecule nr 970
+Ion_Type3_321	17.142857143	11.428571429	17.647141143	0 # molecule nr 971
+Ion_Type1_649	17.901459143	11.428571429	18.151425143	0 # molecule nr 972
+Ion_Type1_650	17.901459143	11.428571429	17.142857143	0 # molecule nr 973
+Ion_Type3_322	17.142857143	14.285714286	0.504284000	0 # molecule nr 974
+Ion_Type1_651	17.901459143	14.285714286	1.008568000	0 # molecule nr 975
+Ion_Type1_652	17.901459143	14.285714286	0.000000000	0 # molecule nr 976
+Ion_Type3_323	17.142857143	14.285714286	3.361426857	0 # molecule nr 977
+Ion_Type1_653	17.901459143	14.285714286	3.865710857	0 # molecule nr 978
+Ion_Type1_654	17.901459143	14.285714286	2.857142857	0 # molecule nr 979
+Ion_Type3_324	17.142857143	14.285714286	6.218569714	0 # molecule nr 980
+Ion_Type1_655	17.901459143	14.285714286	6.722853714	0 # molecule nr 981
+Ion_Type1_656	17.901459143	14.285714286	5.714285714	0 # molecule nr 982
+Ion_Type3_325	17.142857143	14.285714286	9.075712571	0 # molecule nr 983
+Ion_Type1_657	17.901459143	14.285714286	9.579996571	0 # molecule nr 984
+Ion_Type1_658	17.901459143	14.285714286	8.571428571	0 # molecule nr 985
+Ion_Type3_326	17.142857143	14.285714286	11.932855429	0 # molecule nr 986
+Ion_Type1_659	17.901459143	14.285714286	12.437139429	0 # molecule nr 987
+Ion_Type1_660	17.901459143	14.285714286	11.428571429	0 # molecule nr 988
+Ion_Type3_327	17.142857143	14.285714286	14.789998286	0 # molecule nr 989
+Ion_Type1_661	17.901459143	14.285714286	15.294282286	0 # molecule nr 990
+Ion_Type1_662	17.901459143	14.285714286	14.285714286	0 # molecule nr 991
+Ion_Type3_328	17.142857143	14.285714286	17.647141143	0 # molecule nr 992
+Ion_Type1_663	17.901459143	14.285714286	18.151425143	0 # molecule nr 993
+Ion_Type1_664	17.901459143	14.285714286	17.142857143	0 # molecule nr 994
+Ion_Type3_329	17.142857143	17.142857143	0.504284000	0 # molecule nr 995
+Ion_Type1_665	17.901459143	17.142857143	1.008568000	0 # molecule nr 996
+Ion_Type1_666	17.901459143	17.142857143	0.000000000	0 # molecule nr 997
+Ion_Type3_330	17.142857143	17.142857143	3.361426857	0 # molecule nr 998
+Ion_Type1_667	17.901459143	17.142857143	3.865710857	0 # molecule nr 999
+Ion_Type1_668	17.901459143	17.142857143	2.857142857	0 # molecule nr 1000
+Ion_Type3_331	17.142857143	17.142857143	6.218569714	0 # molecule nr 1001
+Ion_Type1_669	17.901459143	17.142857143	6.722853714	0 # molecule nr 1002
+Ion_Type1_670	17.901459143	17.142857143	5.714285714	0 # molecule nr 1003
+Ion_Type3_332	17.142857143	17.142857143	9.075712571	0 # molecule nr 1004
+Ion_Type1_671	17.901459143	17.142857143	9.579996571	0 # molecule nr 1005
+Ion_Type1_672	17.901459143	17.142857143	8.571428571	0 # molecule nr 1006
+Ion_Type3_333	17.142857143	17.142857143	11.932855429	0 # molecule nr 1007
+Ion_Type1_673	17.901459143	17.142857143	12.437139429	0 # molecule nr 1008
+Ion_Type1_674	17.901459143	17.142857143	11.428571429	0 # molecule nr 1009
+Ion_Type3_334	17.142857143	17.142857143	14.789998286	0 # molecule nr 1010
+Ion_Type1_675	17.901459143	17.142857143	15.294282286	0 # molecule nr 1011
+Ion_Type1_676	17.901459143	17.142857143	14.285714286	0 # molecule nr 1012
+Ion_Type3_335	17.142857143	17.142857143	17.647141143	0 # molecule nr 1013
+Ion_Type1_677	17.901459143	17.142857143	18.151425143	0 # molecule nr 1014
+Ion_Type1_678	17.901459143	17.142857143	17.142857143	0 # molecule nr 1015
Index: tests/regression/Tesselation/1/post/NonConvexEnvelope.r3d
===================================================================
--- tests/regression/Tesselation/1/post/NonConvexEnvelope.r3d	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/regression/Tesselation/1/post/NonConvexEnvelope.r3d	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -3,25 +3,25 @@
 # All atoms as spheres
 2
-  1.37419 -0.26503 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.870237 -0.89 	0.1	1. 1. 1.
 2
-  0.12489 0.61837 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.870237 0.89 	0.1	1. 1. 1.
 2
-  -1.12431 -0.26503 -4.44089e-16 	0.1	1. 1. 1.
+  2.13922 0.388414 0 	0.1	1. 1. 1.
 2
-  1.37419 -0.89433 -0.89 	0.1	1. 1. 1.
+  -3.63639e-05 1.27176 -0.89 	0.1	1. 1. 1.
 2
-  1.37419 -0.89433 0.89 	0.1	1. 1. 1.
+  -3.63639e-05 1.27176 0.89 	0.1	1. 1. 1.
 2
-  2.26414 0.364321 -4.44089e-16 	0.1	1. 1. 1.
+  -2.13919 0.388414 0 	0.1	1. 1. 1.
 2
-  0.12489 1.24767 -0.89 	0.1	1. 1. 1.
+  -1.24924 -0.870237 -0.89 	0.1	1. 1. 1.
 2
-  0.12489 1.24767 0.89 	0.1	1. 1. 1.
+  -1.24924 -0.870237 0.89 	0.1	1. 1. 1.
 2
-  -2.01426 0.364321 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.240937 0 	0.1	1. 1. 1.
 2
-  -1.12431 -0.89433 -0.89 	0.1	1. 1. 1.
+  -3.63639e-05 0.642463 0 	0.1	1. 1. 1.
 2
-  -1.12431 -0.89433 0.89 	0.1	1. 1. 1.
+  -1.24924 -0.240937 0 	0.1	1. 1. 1.
 # All tesselation triangles
 8
@@ -30,27 +30,27 @@
   BACKFACE  0.3 0.3 1.0   0 0
 1
-  1.37419 -0.89433 -0.89 	2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	2.13922 0.388414 0 	-3.63639e-05 1.27176 -0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	0.12489 1.24767 -0.89 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	-3.63639e-05 1.27176 -0.89 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  0.12489 1.24767 -0.89 	-2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  -3.63639e-05 1.27176 -0.89 	-2.13919 0.388414 0 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 -0.89 	0.12489 1.24767 0.89 	1. 0. 0.
+  2.13922 0.388414 0 	-3.63639e-05 1.27176 -0.89 	-3.63639e-05 1.27176 0.89 	1. 0. 0.
 1
-  0.12489 1.24767 -0.89 	0.12489 1.24767 0.89 	-2.01426 0.364321 -4.44089e-16 	1. 0. 0.
+  -3.63639e-05 1.27176 -0.89 	-3.63639e-05 1.27176 0.89 	-2.13919 0.388414 0 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	2.13922 0.388414 0 	-3.63639e-05 1.27176 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	0.12489 1.24767 0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	-3.63639e-05 1.27176 0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  0.12489 1.24767 0.89 	-2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  -3.63639e-05 1.27176 0.89 	-2.13919 0.388414 0 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  -2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 -0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  -2.13919 0.388414 0 	-1.24924 -0.870237 -0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	-1.12431 -0.89433 -0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	-1.24924 -0.870237 -0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	1.37419 -0.89433 0.89 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	1.24926 -0.870237 0.89 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	1.37419 -0.89433 0.89 	2.26414 0.364321 -4.44089e-16 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	1.24926 -0.870237 0.89 	2.13922 0.388414 0 	1. 0. 0.
 9
 #  terminating special property
@@ -59,5 +59,5 @@
   25.0    0.6     -1.0 -1.0 -1.0     0.2        0 0 0 0
 2
-  1.67084 -0.47478 -8.88178e-16	5	1 0 0
+  1.54591 -0.450686 -4.44089e-16	5	1 0 0
 9
   terminating special property
Index: tests/regression/Tesselation/2/post/ConvexEnvelope.r3d
===================================================================
--- tests/regression/Tesselation/2/post/ConvexEnvelope.r3d	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/regression/Tesselation/2/post/ConvexEnvelope.r3d	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -3,25 +3,25 @@
 # All atoms as spheres
 2
-  1.37419 -0.26503 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.870237 -0.89 	0.1	1. 1. 1.
 2
-  0.12489 0.61837 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.870237 0.89 	0.1	1. 1. 1.
 2
-  -1.12431 -0.26503 -4.44089e-16 	0.1	1. 1. 1.
+  2.13922 0.388414 0 	0.1	1. 1. 1.
 2
-  1.37419 -0.89433 -0.89 	0.1	1. 1. 1.
+  -3.63639e-05 1.27176 -0.89 	0.1	1. 1. 1.
 2
-  1.37419 -0.89433 0.89 	0.1	1. 1. 1.
+  -3.63639e-05 1.27176 0.89 	0.1	1. 1. 1.
 2
-  2.26414 0.364321 -4.44089e-16 	0.1	1. 1. 1.
+  -2.13919 0.388414 0 	0.1	1. 1. 1.
 2
-  0.12489 1.24767 -0.89 	0.1	1. 1. 1.
+  -1.24924 -0.870237 -0.89 	0.1	1. 1. 1.
 2
-  0.12489 1.24767 0.89 	0.1	1. 1. 1.
+  -1.24924 -0.870237 0.89 	0.1	1. 1. 1.
 2
-  -2.01426 0.364321 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.240937 0 	0.1	1. 1. 1.
 2
-  -1.12431 -0.89433 -0.89 	0.1	1. 1. 1.
+  -3.63639e-05 0.642463 0 	0.1	1. 1. 1.
 2
-  -1.12431 -0.89433 0.89 	0.1	1. 1. 1.
+  -1.24924 -0.240937 0 	0.1	1. 1. 1.
 # All tesselation triangles
 8
@@ -30,27 +30,27 @@
   BACKFACE  0.3 0.3 1.0   0 0
 1
-  1.37419 -0.89433 -0.89 	2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	2.13922 0.388414 0 	-3.63639e-05 1.27176 -0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	0.12489 1.24767 -0.89 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	-3.63639e-05 1.27176 -0.89 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  0.12489 1.24767 -0.89 	-2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  -3.63639e-05 1.27176 -0.89 	-2.13919 0.388414 0 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 -0.89 	0.12489 1.24767 0.89 	1. 0. 0.
+  2.13922 0.388414 0 	-3.63639e-05 1.27176 -0.89 	-3.63639e-05 1.27176 0.89 	1. 0. 0.
 1
-  0.12489 1.24767 -0.89 	0.12489 1.24767 0.89 	-2.01426 0.364321 -4.44089e-16 	1. 0. 0.
+  -3.63639e-05 1.27176 -0.89 	-3.63639e-05 1.27176 0.89 	-2.13919 0.388414 0 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	2.13922 0.388414 0 	-3.63639e-05 1.27176 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	0.12489 1.24767 0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	-3.63639e-05 1.27176 0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  0.12489 1.24767 0.89 	-2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  -3.63639e-05 1.27176 0.89 	-2.13919 0.388414 0 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  -2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 -0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  -2.13919 0.388414 0 	-1.24924 -0.870237 -0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	-1.12431 -0.89433 -0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	-1.24924 -0.870237 -0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	1.37419 -0.89433 0.89 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	1.24926 -0.870237 0.89 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	1.37419 -0.89433 0.89 	2.26414 0.364321 -4.44089e-16 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	1.24926 -0.870237 0.89 	2.13922 0.388414 0 	1. 0. 0.
 9
 #  terminating special property
@@ -59,5 +59,5 @@
   25.0    0.6     -1.0 -1.0 -1.0     0.2        0 0 0 0
 2
-  1.67084 -0.47478 -8.88178e-16	5	1 0 0
+  1.54591 -0.450686 -4.44089e-16	5	1 0 0
 9
   terminating special property
Index: tests/regression/Tesselation/2/post/NonConvexEnvelope.r3d
===================================================================
--- tests/regression/Tesselation/2/post/NonConvexEnvelope.r3d	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/regression/Tesselation/2/post/NonConvexEnvelope.r3d	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -3,25 +3,25 @@
 # All atoms as spheres
 2
-  1.37419 -0.26503 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.870237 -0.89 	0.1	1. 1. 1.
 2
-  0.12489 0.61837 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.870237 0.89 	0.1	1. 1. 1.
 2
-  -1.12431 -0.26503 -4.44089e-16 	0.1	1. 1. 1.
+  2.13922 0.388414 0 	0.1	1. 1. 1.
 2
-  1.37419 -0.89433 -0.89 	0.1	1. 1. 1.
+  -3.63639e-05 1.27176 -0.89 	0.1	1. 1. 1.
 2
-  1.37419 -0.89433 0.89 	0.1	1. 1. 1.
+  -3.63639e-05 1.27176 0.89 	0.1	1. 1. 1.
 2
-  2.26414 0.364321 -4.44089e-16 	0.1	1. 1. 1.
+  -2.13919 0.388414 0 	0.1	1. 1. 1.
 2
-  0.12489 1.24767 -0.89 	0.1	1. 1. 1.
+  -1.24924 -0.870237 -0.89 	0.1	1. 1. 1.
 2
-  0.12489 1.24767 0.89 	0.1	1. 1. 1.
+  -1.24924 -0.870237 0.89 	0.1	1. 1. 1.
 2
-  -2.01426 0.364321 -4.44089e-16 	0.1	1. 1. 1.
+  1.24926 -0.240937 0 	0.1	1. 1. 1.
 2
-  -1.12431 -0.89433 -0.89 	0.1	1. 1. 1.
+  -3.63639e-05 0.642463 0 	0.1	1. 1. 1.
 2
-  -1.12431 -0.89433 0.89 	0.1	1. 1. 1.
+  -1.24924 -0.240937 0 	0.1	1. 1. 1.
 # All tesselation triangles
 8
@@ -30,27 +30,27 @@
   BACKFACE  0.3 0.3 1.0   0 0
 1
-  1.37419 -0.89433 -0.89 	2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	2.13922 0.388414 0 	-3.63639e-05 1.27176 -0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	0.12489 1.24767 -0.89 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	-3.63639e-05 1.27176 -0.89 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  0.12489 1.24767 -0.89 	-2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  -3.63639e-05 1.27176 -0.89 	-2.13919 0.388414 0 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 -0.89 	0.12489 1.24767 0.89 	1. 0. 0.
+  2.13922 0.388414 0 	-3.63639e-05 1.27176 -0.89 	-3.63639e-05 1.27176 0.89 	1. 0. 0.
 1
-  0.12489 1.24767 -0.89 	0.12489 1.24767 0.89 	-2.01426 0.364321 -4.44089e-16 	1. 0. 0.
+  -3.63639e-05 1.27176 -0.89 	-3.63639e-05 1.27176 0.89 	-2.13919 0.388414 0 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	2.26414 0.364321 -4.44089e-16 	0.12489 1.24767 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	2.13922 0.388414 0 	-3.63639e-05 1.27176 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	0.12489 1.24767 0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	-3.63639e-05 1.27176 0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  0.12489 1.24767 0.89 	-2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  -3.63639e-05 1.27176 0.89 	-2.13919 0.388414 0 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  -2.01426 0.364321 -4.44089e-16 	-1.12431 -0.89433 -0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  -2.13919 0.388414 0 	-1.24924 -0.870237 -0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 0.89 	-1.12431 -0.89433 -0.89 	-1.12431 -0.89433 0.89 	1. 0. 0.
+  1.24926 -0.870237 0.89 	-1.24924 -0.870237 -0.89 	-1.24924 -0.870237 0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	1.37419 -0.89433 0.89 	-1.12431 -0.89433 -0.89 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	1.24926 -0.870237 0.89 	-1.24924 -0.870237 -0.89 	1. 0. 0.
 1
-  1.37419 -0.89433 -0.89 	1.37419 -0.89433 0.89 	2.26414 0.364321 -4.44089e-16 	1. 0. 0.
+  1.24926 -0.870237 -0.89 	1.24926 -0.870237 0.89 	2.13922 0.388414 0 	1. 0. 0.
 9
 #  terminating special property
@@ -59,5 +59,5 @@
   25.0    0.6     -1.0 -1.0 -1.0     0.2        0 0 0 0
 2
-  1.67084 -0.47478 -8.88178e-16	5	1 0 0
+  1.54591 -0.450686 -4.44089e-16	5	1 0 0
 9
   terminating special property
Index: tests/regression/Tesselation/3/post/NonConvexEnvelope.dat
===================================================================
--- tests/regression/Tesselation/3/post/NonConvexEnvelope.dat	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/regression/Tesselation/3/post/NonConvexEnvelope.dat	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -2,5 +2,4 @@
 VARIABLES = "X" "Y" "Z" "U"
 ZONE T="test", N=44, E=86, DATAPACKING=POINT, ZONETYPE=FETRIANGLE
-6.9077 1.1106 0.1214 1
 0.3612 -3.628 1.323 1
 0.4884 -3.5983 -0.4521 3
@@ -46,89 +45,90 @@
 -6.8554 1.8134 -0.9499 1
 7.1391 2.0447 0.0264 0
+6.9077 1.1106 0.1214 1
 
-1 32 44
-1 32 35
-1 34 35
-23 32 35
-17 23 35
-8 17 35
-8 10 17
-3 8 10
-3 8 35
-3 4 35
-4 29 35
-29 34 35
-2 3 4
-2 4 29
-2 15 29
-15 28 29
-28 29 34
-2 7 15
-7 14 15
-14 15 28
-14 25 28
-25 28 37
-28 34 37
-1 34 37
-1 37 44
-25 26 37
-25 26 27
-26 27 33
-26 33 44
-26 37 44
-14 25 27
-14 27 30
-6 14 30
-6 24 30
-24 30 36
-30 36 39
-27 30 39
-27 30 39
-16 27 30
-16 18 30
-16 18 27
-18 27 33
-18 23 33
-6 7 24
-6 7 14
-7 11 24
-11 20 24
-20 24 41
-24 36 41
-36 41 42
-11 20 22
-5 11 22
-5 7 11
-2 5 7
-36 38 39
-36 38 42
-18 30 31
-30 31 39
-31 39 40
-9 18 31
-9 17 18
-17 18 23
-9 19 31
-9 13 19
-13 19 31
-13 21 31
-21 31 43
-31 40 43
-9 12 13
-9 10 12
-9 10 17
-12 13 21
-12 21 22
-5 12 22
-3 5 12
-2 3 5
-3 10 12
-20 21 22
-20 21 41
-21 41 43
-41 42 43
-23 32 33
-32 33 44
-40 42 43
-38 40 42
-38 39 40
+31 43 44
+31 34 44
+33 34 44
+22 31 34
+16 22 34
+7 16 34
+7 9 16
+2 7 9
+2 7 34
+2 3 34
+3 28 34
+28 33 34
+1 2 3
+1 3 28
+1 14 28
+14 27 28
+27 28 33
+1 6 14
+6 13 14
+13 14 27
+13 24 27
+24 27 36
+27 33 36
+33 36 44
+36 43 44
+24 25 36
+24 25 26
+25 26 32
+25 32 43
+25 36 43
+13 24 26
+13 26 29
+5 13 29
+5 23 29
+23 29 35
+29 35 38
+26 29 38
+26 29 38
+15 26 29
+15 17 29
+15 17 26
+17 26 32
+17 22 32
+5 6 23
+5 6 13
+6 10 23
+10 19 23
+19 23 40
+23 35 40
+35 40 41
+10 19 21
+4 10 21
+4 6 10
+1 4 6
+35 37 38
+35 37 41
+17 29 30
+29 30 38
+30 38 39
+8 17 30
+8 16 17
+16 17 22
+8 18 30
+8 12 18
+12 18 30
+12 20 30
+20 30 42
+30 39 42
+8 11 12
+8 9 11
+8 9 16
+11 12 20
+11 20 21
+4 11 21
+2 4 11
+1 2 4
+2 9 11
+19 20 21
+19 20 40
+20 40 42
+40 41 42
+22 31 32
+31 32 43
+39 41 42
+37 39 41
+37 38 39
Index: tests/regression/Tesselation/3/post/NonConvexEnvelope.r3d
===================================================================
--- tests/regression/Tesselation/3/post/NonConvexEnvelope.r3d	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ tests/regression/Tesselation/3/post/NonConvexEnvelope.r3d	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -3,151 +3,151 @@
 # All atoms as spheres
 2
-  0.952534 -3.05798 0.420171 	0.1	1. 1. 1.
-2
-  -0.139866 -1.98848 0.359771 	0.1	1. 1. 1.
-2
-  0.0788342 -1.07508 -0.875229 	0.1	1. 1. 1.
-2
-  -1.49147 -2.63828 0.0780712 	0.1	1. 1. 1.
-2
-  -0.0588658 -1.09478 1.58347 	0.1	1. 1. 1.
-2
-  1.53473 -0.644479 -0.868129 	0.1	1. 1. 1.
-2
-  -0.333166 -2.00128 -2.02443 	0.1	1. 1. 1.
-2
-  -2.62147 -1.78218 0.653571 	0.1	1. 1. 1.
-2
-  -1.60077 -2.70398 -1.46563 	0.1	1. 1. 1.
-2
-  1.37913 -0.560579 1.65607 	0.1	1. 1. 1.
-2
-  1.75933 0.205421 0.395371 	0.1	1. 1. 1.
-2
-  1.79893 0.246421 -2.08883 	0.1	1. 1. 1.
-2
-  -2.64037 -0.423279 -0.0491288 	0.1	1. 1. 1.
-2
-  -3.96017 -2.48928 0.432671 	0.1	1. 1. 1.
-2
-  3.23013 0.593821 0.484471 	0.1	1. 1. 1.
-2
-  3.14803 0.889821 -1.96833 	0.1	1. 1. 1.
-2
-  -3.79507 0.418021 0.498371 	0.1	1. 1. 1.
-2
-  3.36023 1.76962 1.45487 	0.1	1. 1. 1.
-2
-  3.78273 1.01752 -0.849429 	0.1	1. 1. 1.
-2
-  4.07093 -0.563879 1.01767 	0.1	1. 1. 1.
-2
-  -3.81397 1.77692 -0.204329 	0.1	1. 1. 1.
-2
-  5.17783 1.62112 -0.842829 	0.1	1. 1. 1.
-2
-  5.49863 -0.464179 0.482071 	0.1	1. 1. 1.
-2
-  -4.96867 2.61822 0.343171 	0.1	1. 1. 1.
-2
-  5.93083 0.990421 0.337371 	0.1	1. 1. 1.
-2
-  -4.98757 3.97722 -0.359529 	0.1	1. 1. 1.
-2
-  -6.29237 1.89422 0.0890712 	0.1	1. 1. 1.
-2
-  7.33693 1.04442 0.0886712 	0.1	1. 1. 1.
-2
-  0.790434 -3.69418 1.29027 	0.1	1. 1. 1.
-2
-  0.917634 -3.66448 -0.484829 	0.1	1. 1. 1.
-2
-  1.92773 -2.57738 0.498071 	0.1	1. 1. 1.
-2
-  -0.574266 -0.203779 -0.824729 	0.1	1. 1. 1.
-2
-  -1.52417 -3.64138 0.503471 	0.1	1. 1. 1.
-2
-  -0.759066 -0.265179 1.48487 	0.1	1. 1. 1.
-2
-  -0.287266 -1.67078 2.48017 	0.1	1. 1. 1.
-2
-  2.19193 -1.51408 -0.867629 	0.1	1. 1. 1.
-2
-  -0.573766 -1.42458 -2.91753 	0.1	1. 1. 1.
-2
-  0.450934 -2.72908 -2.23353 	0.1	1. 1. 1.
-2
-  -2.45927 -1.63678 1.72157 	0.1	1. 1. 1.
-2
-  -1.62867 -3.74268 -1.79493 	0.1	1. 1. 1.
-2
-  -2.49667 -2.18078 -1.79993 	0.1	1. 1. 1.
-2
-  1.46453 0.112321 2.50927 	0.1	1. 1. 1.
-2
-  2.06173 -1.39848 1.79787 	0.1	1. 1. 1.
-2
-  1.15633 1.11082 0.326671 	0.1	1. 1. 1.
-2
-  1.76663 -0.360379 -2.99373 	0.1	1. 1. 1.
-2
-  1.03283 1.01972 -2.14533 	0.1	1. 1. 1.
-2
-  -1.69727 0.0925205 0.131971 	0.1	1. 1. 1.
-2
-  -2.77417 -0.570279 -1.12083 	0.1	1. 1. 1.
-2
-  -4.75167 -1.93408 0.935971 	0.1	1. 1. 1.
-2
-  -4.17327 -2.53828 -0.635229 	0.1	1. 1. 1.
-2
-  -3.90927 -3.49908 0.839771 	0.1	1. 1. 1.
-2
-  3.62023 1.25552 -2.86813 	0.1	1. 1. 1.
-2
-  -4.73807 -0.0977795 0.317371 	0.1	1. 1. 1.
-2
-  -3.66127 0.565021 1.57007 	0.1	1. 1. 1.
-2
-  3.24233 1.41142 2.47757 	0.1	1. 1. 1.
-2
-  4.34293 2.22742 1.34117 	0.1	1. 1. 1.
-2
-  2.58823 2.50762 1.23707 	0.1	1. 1. 1.
-2
-  4.08983 -0.525479 2.10687 	0.1	1. 1. 1.
-2
-  3.62993 -1.50808 0.698371 	0.1	1. 1. 1.
-2
-  -2.87097 2.29272 -0.0233288 	0.1	1. 1. 1.
-2
-  -3.94777 1.63002 -1.27603 	0.1	1. 1. 1.
-2
-  5.68853 1.38852 -1.77723 	0.1	1. 1. 1.
-2
-  5.11553 2.70122 -0.710229 	0.1	1. 1. 1.
-2
-  6.17523 -0.969279 1.17127 	0.1	1. 1. 1.
-2
-  5.55043 -0.952879 -0.490929 	0.1	1. 1. 1.
-2
-  -4.83487 2.76522 1.41487 	0.1	1. 1. 1.
-2
-  5.70193 1.54062 1.25007 	0.1	1. 1. 1.
-2
-  -5.81017 4.57652 0.0304712 	0.1	1. 1. 1.
-2
-  -4.04457 4.49292 -0.178529 	0.1	1. 1. 1.
-2
-  -5.12137 3.83022 -1.43123 	0.1	1. 1. 1.
-2
-  -6.27887 0.926121 0.589671 	0.1	1. 1. 1.
-2
-  -7.11497 2.49352 0.479071 	0.1	1. 1. 1.
-2
-  -6.42617 1.74722 -0.982629 	0.1	1. 1. 1.
-2
-  7.56833 1.97852 -0.00632877 	0.1	1. 1. 1.
+  0.777562 -3.65286 1.28459 	0.1	1. 1. 1.
+2
+  0.904762 -3.62316 -0.490507 	0.1	1. 1. 1.
+2
+  1.91486 -2.53606 0.492393 	0.1	1. 1. 1.
+2
+  -0.587138 -0.162455 -0.830407 	0.1	1. 1. 1.
+2
+  -1.53704 -3.60006 0.497793 	0.1	1. 1. 1.
+2
+  -0.771938 -0.223855 1.47919 	0.1	1. 1. 1.
+2
+  -0.300138 -1.62946 2.47449 	0.1	1. 1. 1.
+2
+  2.17906 -1.47276 -0.873307 	0.1	1. 1. 1.
+2
+  -0.586638 -1.38326 -2.92321 	0.1	1. 1. 1.
+2
+  0.438062 -2.68776 -2.23921 	0.1	1. 1. 1.
+2
+  -2.47214 -1.59546 1.71589 	0.1	1. 1. 1.
+2
+  -1.64154 -3.70136 -1.80061 	0.1	1. 1. 1.
+2
+  -2.50954 -2.13946 -1.80561 	0.1	1. 1. 1.
+2
+  1.45166 0.153645 2.50359 	0.1	1. 1. 1.
+2
+  2.04886 -1.35716 1.79219 	0.1	1. 1. 1.
+2
+  1.14346 1.15214 0.320993 	0.1	1. 1. 1.
+2
+  1.75376 -0.319055 -2.99941 	0.1	1. 1. 1.
+2
+  1.01996 1.06104 -2.15101 	0.1	1. 1. 1.
+2
+  -1.71014 0.133845 0.126293 	0.1	1. 1. 1.
+2
+  -2.78704 -0.528955 -1.12651 	0.1	1. 1. 1.
+2
+  -4.76454 -1.89276 0.930293 	0.1	1. 1. 1.
+2
+  -4.18614 -2.49696 -0.640907 	0.1	1. 1. 1.
+2
+  -3.92214 -3.45776 0.834093 	0.1	1. 1. 1.
+2
+  3.60736 1.29684 -2.87381 	0.1	1. 1. 1.
+2
+  -4.75094 -0.0564554 0.311693 	0.1	1. 1. 1.
+2
+  -3.67414 0.606345 1.56439 	0.1	1. 1. 1.
+2
+  3.22946 1.45274 2.47189 	0.1	1. 1. 1.
+2
+  4.33006 2.26874 1.33549 	0.1	1. 1. 1.
+2
+  2.57536 2.54894 1.23139 	0.1	1. 1. 1.
+2
+  4.07696 -0.484155 2.10119 	0.1	1. 1. 1.
+2
+  3.61706 -1.46676 0.692693 	0.1	1. 1. 1.
+2
+  -2.88384 2.33404 -0.0290068 	0.1	1. 1. 1.
+2
+  -3.96064 1.67134 -1.28171 	0.1	1. 1. 1.
+2
+  5.67566 1.42984 -1.78291 	0.1	1. 1. 1.
+2
+  5.10266 2.74254 -0.715907 	0.1	1. 1. 1.
+2
+  6.16236 -0.927955 1.16559 	0.1	1. 1. 1.
+2
+  5.53756 -0.911555 -0.496607 	0.1	1. 1. 1.
+2
+  -4.84774 2.80654 1.40919 	0.1	1. 1. 1.
+2
+  5.68906 1.58194 1.24439 	0.1	1. 1. 1.
+2
+  -5.82304 4.61784 0.0247932 	0.1	1. 1. 1.
+2
+  -4.05744 4.53424 -0.184207 	0.1	1. 1. 1.
+2
+  -5.13424 3.87154 -1.43691 	0.1	1. 1. 1.
+2
+  -6.29174 0.967445 0.583993 	0.1	1. 1. 1.
+2
+  -7.12784 2.53484 0.473393 	0.1	1. 1. 1.
+2
+  -6.43904 1.78854 -0.988307 	0.1	1. 1. 1.
+2
+  7.55546 2.01984 -0.0120068 	0.1	1. 1. 1.
+2
+  0.939662 -3.01666 0.414493 	0.1	1. 1. 1.
+2
+  -0.152738 -1.94716 0.354093 	0.1	1. 1. 1.
+2
+  0.0659622 -1.03376 -0.880907 	0.1	1. 1. 1.
+2
+  -1.50434 -2.59696 0.0723932 	0.1	1. 1. 1.
+2
+  -0.0717378 -1.05346 1.57779 	0.1	1. 1. 1.
+2
+  1.52186 -0.603155 -0.873807 	0.1	1. 1. 1.
+2
+  -0.346038 -1.95996 -2.03011 	0.1	1. 1. 1.
+2
+  -2.63434 -1.74086 0.647893 	0.1	1. 1. 1.
+2
+  -1.61364 -2.66266 -1.47131 	0.1	1. 1. 1.
+2
+  1.36626 -0.519255 1.65039 	0.1	1. 1. 1.
+2
+  1.74646 0.246745 0.389693 	0.1	1. 1. 1.
+2
+  1.78606 0.287745 -2.09451 	0.1	1. 1. 1.
+2
+  -2.65324 -0.381955 -0.0548068 	0.1	1. 1. 1.
+2
+  -3.97304 -2.44796 0.426993 	0.1	1. 1. 1.
+2
+  3.21726 0.635145 0.478793 	0.1	1. 1. 1.
+2
+  3.13516 0.931145 -1.97401 	0.1	1. 1. 1.
+2
+  -3.80794 0.459345 0.492693 	0.1	1. 1. 1.
+2
+  3.34736 1.81094 1.44919 	0.1	1. 1. 1.
+2
+  3.76986 1.05884 -0.855107 	0.1	1. 1. 1.
+2
+  4.05806 -0.522555 1.01199 	0.1	1. 1. 1.
+2
+  -3.82684 1.81824 -0.210007 	0.1	1. 1. 1.
+2
+  5.16496 1.66244 -0.848507 	0.1	1. 1. 1.
+2
+  5.48576 -0.422855 0.476393 	0.1	1. 1. 1.
+2
+  -4.98154 2.65954 0.337493 	0.1	1. 1. 1.
+2
+  5.91796 1.03174 0.331693 	0.1	1. 1. 1.
+2
+  -5.00044 4.01854 -0.365207 	0.1	1. 1. 1.
+2
+  -6.30524 1.93554 0.0833932 	0.1	1. 1. 1.
+2
+  7.32406 1.08574 0.0829932 	0.1	1. 1. 1.
 # All tesselation triangles
 8
@@ -156,175 +156,175 @@
   BACKFACE  0.3 0.3 1.0   0 0
 1
-  7.33693 1.04442 0.0886712 	5.68853 1.38852 -1.77723 	7.56833 1.97852 -0.00632877 	1. 0. 0.
-1
-  7.33693 1.04442 0.0886712 	5.68853 1.38852 -1.77723 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  7.33693 1.04442 0.0886712 	6.17523 -0.969279 1.17127 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  3.62023 1.25552 -2.86813 	5.68853 1.38852 -1.77723 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  1.76663 -0.360379 -2.99373 	3.62023 1.25552 -2.86813 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  2.19193 -1.51408 -0.867629 	1.76663 -0.360379 -2.99373 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  2.19193 -1.51408 -0.867629 	0.450934 -2.72908 -2.23353 	1.76663 -0.360379 -2.99373 	1. 0. 0.
-1
-  0.917634 -3.66448 -0.484829 	2.19193 -1.51408 -0.867629 	0.450934 -2.72908 -2.23353 	1. 0. 0.
-1
-  0.917634 -3.66448 -0.484829 	2.19193 -1.51408 -0.867629 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  0.917634 -3.66448 -0.484829 	1.92773 -2.57738 0.498071 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  1.92773 -2.57738 0.498071 	3.62993 -1.50808 0.698371 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  3.62993 -1.50808 0.698371 	6.17523 -0.969279 1.17127 	5.55043 -0.952879 -0.490929 	1. 0. 0.
-1
-  0.790434 -3.69418 1.29027 	0.917634 -3.66448 -0.484829 	1.92773 -2.57738 0.498071 	1. 0. 0.
-1
-  0.790434 -3.69418 1.29027 	1.92773 -2.57738 0.498071 	3.62993 -1.50808 0.698371 	1. 0. 0.
-1
-  0.790434 -3.69418 1.29027 	2.06173 -1.39848 1.79787 	3.62993 -1.50808 0.698371 	1. 0. 0.
-1
-  2.06173 -1.39848 1.79787 	4.08983 -0.525479 2.10687 	3.62993 -1.50808 0.698371 	1. 0. 0.
-1
-  4.08983 -0.525479 2.10687 	3.62993 -1.50808 0.698371 	6.17523 -0.969279 1.17127 	1. 0. 0.
-1
-  0.790434 -3.69418 1.29027 	-0.287266 -1.67078 2.48017 	2.06173 -1.39848 1.79787 	1. 0. 0.
-1
-  -0.287266 -1.67078 2.48017 	1.46453 0.112321 2.50927 	2.06173 -1.39848 1.79787 	1. 0. 0.
-1
-  1.46453 0.112321 2.50927 	2.06173 -1.39848 1.79787 	4.08983 -0.525479 2.10687 	1. 0. 0.
-1
-  1.46453 0.112321 2.50927 	3.24233 1.41142 2.47757 	4.08983 -0.525479 2.10687 	1. 0. 0.
-1
-  3.24233 1.41142 2.47757 	4.08983 -0.525479 2.10687 	5.70193 1.54062 1.25007 	1. 0. 0.
-1
-  4.08983 -0.525479 2.10687 	6.17523 -0.969279 1.17127 	5.70193 1.54062 1.25007 	1. 0. 0.
-1
-  7.33693 1.04442 0.0886712 	6.17523 -0.969279 1.17127 	5.70193 1.54062 1.25007 	1. 0. 0.
-1
-  7.33693 1.04442 0.0886712 	5.70193 1.54062 1.25007 	7.56833 1.97852 -0.00632877 	1. 0. 0.
-1
-  3.24233 1.41142 2.47757 	4.34293 2.22742 1.34117 	5.70193 1.54062 1.25007 	1. 0. 0.
-1
-  3.24233 1.41142 2.47757 	4.34293 2.22742 1.34117 	2.58823 2.50762 1.23707 	1. 0. 0.
-1
-  4.34293 2.22742 1.34117 	2.58823 2.50762 1.23707 	5.11553 2.70122 -0.710229 	1. 0. 0.
-1
-  4.34293 2.22742 1.34117 	5.11553 2.70122 -0.710229 	7.56833 1.97852 -0.00632877 	1. 0. 0.
-1
-  4.34293 2.22742 1.34117 	5.70193 1.54062 1.25007 	7.56833 1.97852 -0.00632877 	1. 0. 0.
-1
-  1.46453 0.112321 2.50927 	3.24233 1.41142 2.47757 	2.58823 2.50762 1.23707 	1. 0. 0.
-1
-  1.46453 0.112321 2.50927 	2.58823 2.50762 1.23707 	-2.87097 2.29272 -0.0233288 	1. 0. 0.
-1
-  -0.759066 -0.265179 1.48487 	1.46453 0.112321 2.50927 	-2.87097 2.29272 -0.0233288 	1. 0. 0.
-1
-  -0.759066 -0.265179 1.48487 	-3.66127 0.565021 1.57007 	-2.87097 2.29272 -0.0233288 	1. 0. 0.
-1
-  -3.66127 0.565021 1.57007 	-2.87097 2.29272 -0.0233288 	-4.83487 2.76522 1.41487 	1. 0. 0.
-1
-  -2.87097 2.29272 -0.0233288 	-4.83487 2.76522 1.41487 	-4.04457 4.49292 -0.178529 	1. 0. 0.
-1
-  2.58823 2.50762 1.23707 	-2.87097 2.29272 -0.0233288 	-4.04457 4.49292 -0.178529 	1. 0. 0.
-1
-  2.58823 2.50762 1.23707 	-2.87097 2.29272 -0.0233288 	-4.04457 4.49292 -0.178529 	1. 0. 0.
-1
-  1.15633 1.11082 0.326671 	2.58823 2.50762 1.23707 	-2.87097 2.29272 -0.0233288 	1. 0. 0.
-1
-  1.15633 1.11082 0.326671 	1.03283 1.01972 -2.14533 	-2.87097 2.29272 -0.0233288 	1. 0. 0.
-1
-  1.15633 1.11082 0.326671 	1.03283 1.01972 -2.14533 	2.58823 2.50762 1.23707 	1. 0. 0.
-1
-  1.03283 1.01972 -2.14533 	2.58823 2.50762 1.23707 	5.11553 2.70122 -0.710229 	1. 0. 0.
-1
-  1.03283 1.01972 -2.14533 	3.62023 1.25552 -2.86813 	5.11553 2.70122 -0.710229 	1. 0. 0.
-1
-  -0.759066 -0.265179 1.48487 	-0.287266 -1.67078 2.48017 	-3.66127 0.565021 1.57007 	1. 0. 0.
-1
-  -0.759066 -0.265179 1.48487 	-0.287266 -1.67078 2.48017 	1.46453 0.112321 2.50927 	1. 0. 0.
-1
-  -0.287266 -1.67078 2.48017 	-2.45927 -1.63678 1.72157 	-3.66127 0.565021 1.57007 	1. 0. 0.
-1
-  -2.45927 -1.63678 1.72157 	-4.75167 -1.93408 0.935971 	-3.66127 0.565021 1.57007 	1. 0. 0.
-1
-  -4.75167 -1.93408 0.935971 	-3.66127 0.565021 1.57007 	-6.27887 0.926121 0.589671 	1. 0. 0.
-1
-  -3.66127 0.565021 1.57007 	-4.83487 2.76522 1.41487 	-6.27887 0.926121 0.589671 	1. 0. 0.
-1
-  -4.83487 2.76522 1.41487 	-6.27887 0.926121 0.589671 	-7.11497 2.49352 0.479071 	1. 0. 0.
-1
-  -2.45927 -1.63678 1.72157 	-4.75167 -1.93408 0.935971 	-3.90927 -3.49908 0.839771 	1. 0. 0.
-1
-  -1.52417 -3.64138 0.503471 	-2.45927 -1.63678 1.72157 	-3.90927 -3.49908 0.839771 	1. 0. 0.
-1
-  -1.52417 -3.64138 0.503471 	-0.287266 -1.67078 2.48017 	-2.45927 -1.63678 1.72157 	1. 0. 0.
-1
-  0.790434 -3.69418 1.29027 	-1.52417 -3.64138 0.503471 	-0.287266 -1.67078 2.48017 	1. 0. 0.
-1
-  -4.83487 2.76522 1.41487 	-5.81017 4.57652 0.0304712 	-4.04457 4.49292 -0.178529 	1. 0. 0.
-1
-  -4.83487 2.76522 1.41487 	-5.81017 4.57652 0.0304712 	-7.11497 2.49352 0.479071 	1. 0. 0.
-1
-  1.03283 1.01972 -2.14533 	-2.87097 2.29272 -0.0233288 	-3.94777 1.63002 -1.27603 	1. 0. 0.
-1
-  -2.87097 2.29272 -0.0233288 	-3.94777 1.63002 -1.27603 	-4.04457 4.49292 -0.178529 	1. 0. 0.
-1
-  -3.94777 1.63002 -1.27603 	-4.04457 4.49292 -0.178529 	-5.12137 3.83022 -1.43123 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	1.03283 1.01972 -2.14533 	-3.94777 1.63002 -1.27603 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	1.76663 -0.360379 -2.99373 	1.03283 1.01972 -2.14533 	1. 0. 0.
-1
-  1.76663 -0.360379 -2.99373 	1.03283 1.01972 -2.14533 	3.62023 1.25552 -2.86813 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	-2.77417 -0.570279 -1.12083 	-3.94777 1.63002 -1.27603 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	-2.49667 -2.18078 -1.79993 	-2.77417 -0.570279 -1.12083 	1. 0. 0.
-1
-  -2.49667 -2.18078 -1.79993 	-2.77417 -0.570279 -1.12083 	-3.94777 1.63002 -1.27603 	1. 0. 0.
-1
-  -2.49667 -2.18078 -1.79993 	-4.17327 -2.53828 -0.635229 	-3.94777 1.63002 -1.27603 	1. 0. 0.
-1
-  -4.17327 -2.53828 -0.635229 	-3.94777 1.63002 -1.27603 	-6.42617 1.74722 -0.982629 	1. 0. 0.
-1
-  -3.94777 1.63002 -1.27603 	-5.12137 3.83022 -1.43123 	-6.42617 1.74722 -0.982629 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	-1.62867 -3.74268 -1.79493 	-2.49667 -2.18078 -1.79993 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	0.450934 -2.72908 -2.23353 	-1.62867 -3.74268 -1.79493 	1. 0. 0.
-1
-  -0.573766 -1.42458 -2.91753 	0.450934 -2.72908 -2.23353 	1.76663 -0.360379 -2.99373 	1. 0. 0.
-1
-  -1.62867 -3.74268 -1.79493 	-2.49667 -2.18078 -1.79993 	-4.17327 -2.53828 -0.635229 	1. 0. 0.
-1
-  -1.62867 -3.74268 -1.79493 	-4.17327 -2.53828 -0.635229 	-3.90927 -3.49908 0.839771 	1. 0. 0.
-1
-  -1.52417 -3.64138 0.503471 	-1.62867 -3.74268 -1.79493 	-3.90927 -3.49908 0.839771 	1. 0. 0.
-1
-  0.917634 -3.66448 -0.484829 	-1.52417 -3.64138 0.503471 	-1.62867 -3.74268 -1.79493 	1. 0. 0.
-1
-  0.790434 -3.69418 1.29027 	0.917634 -3.66448 -0.484829 	-1.52417 -3.64138 0.503471 	1. 0. 0.
-1
-  0.917634 -3.66448 -0.484829 	0.450934 -2.72908 -2.23353 	-1.62867 -3.74268 -1.79493 	1. 0. 0.
-1
-  -4.75167 -1.93408 0.935971 	-4.17327 -2.53828 -0.635229 	-3.90927 -3.49908 0.839771 	1. 0. 0.
-1
-  -4.75167 -1.93408 0.935971 	-4.17327 -2.53828 -0.635229 	-6.27887 0.926121 0.589671 	1. 0. 0.
-1
-  -4.17327 -2.53828 -0.635229 	-6.27887 0.926121 0.589671 	-6.42617 1.74722 -0.982629 	1. 0. 0.
-1
-  -6.27887 0.926121 0.589671 	-7.11497 2.49352 0.479071 	-6.42617 1.74722 -0.982629 	1. 0. 0.
-1
-  3.62023 1.25552 -2.86813 	5.68853 1.38852 -1.77723 	5.11553 2.70122 -0.710229 	1. 0. 0.
-1
-  5.68853 1.38852 -1.77723 	5.11553 2.70122 -0.710229 	7.56833 1.97852 -0.00632877 	1. 0. 0.
-1
-  -5.12137 3.83022 -1.43123 	-7.11497 2.49352 0.479071 	-6.42617 1.74722 -0.982629 	1. 0. 0.
-1
-  -5.81017 4.57652 0.0304712 	-5.12137 3.83022 -1.43123 	-7.11497 2.49352 0.479071 	1. 0. 0.
-1
-  -5.81017 4.57652 0.0304712 	-4.04457 4.49292 -0.178529 	-5.12137 3.83022 -1.43123 	1. 0. 0.
+  5.67566 1.42984 -1.78291 	7.55546 2.01984 -0.0120068 	7.32406 1.08574 0.0829932 	1. 0. 0.
+1
+  5.67566 1.42984 -1.78291 	5.53756 -0.911555 -0.496607 	7.32406 1.08574 0.0829932 	1. 0. 0.
+1
+  6.16236 -0.927955 1.16559 	5.53756 -0.911555 -0.496607 	7.32406 1.08574 0.0829932 	1. 0. 0.
+1
+  3.60736 1.29684 -2.87381 	5.67566 1.42984 -1.78291 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  1.75376 -0.319055 -2.99941 	3.60736 1.29684 -2.87381 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  2.17906 -1.47276 -0.873307 	1.75376 -0.319055 -2.99941 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  2.17906 -1.47276 -0.873307 	0.438062 -2.68776 -2.23921 	1.75376 -0.319055 -2.99941 	1. 0. 0.
+1
+  0.904762 -3.62316 -0.490507 	2.17906 -1.47276 -0.873307 	0.438062 -2.68776 -2.23921 	1. 0. 0.
+1
+  0.904762 -3.62316 -0.490507 	2.17906 -1.47276 -0.873307 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  0.904762 -3.62316 -0.490507 	1.91486 -2.53606 0.492393 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  1.91486 -2.53606 0.492393 	3.61706 -1.46676 0.692693 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  3.61706 -1.46676 0.692693 	6.16236 -0.927955 1.16559 	5.53756 -0.911555 -0.496607 	1. 0. 0.
+1
+  0.777562 -3.65286 1.28459 	0.904762 -3.62316 -0.490507 	1.91486 -2.53606 0.492393 	1. 0. 0.
+1
+  0.777562 -3.65286 1.28459 	1.91486 -2.53606 0.492393 	3.61706 -1.46676 0.692693 	1. 0. 0.
+1
+  0.777562 -3.65286 1.28459 	2.04886 -1.35716 1.79219 	3.61706 -1.46676 0.692693 	1. 0. 0.
+1
+  2.04886 -1.35716 1.79219 	4.07696 -0.484155 2.10119 	3.61706 -1.46676 0.692693 	1. 0. 0.
+1
+  4.07696 -0.484155 2.10119 	3.61706 -1.46676 0.692693 	6.16236 -0.927955 1.16559 	1. 0. 0.
+1
+  0.777562 -3.65286 1.28459 	-0.300138 -1.62946 2.47449 	2.04886 -1.35716 1.79219 	1. 0. 0.
+1
+  -0.300138 -1.62946 2.47449 	1.45166 0.153645 2.50359 	2.04886 -1.35716 1.79219 	1. 0. 0.
+1
+  1.45166 0.153645 2.50359 	2.04886 -1.35716 1.79219 	4.07696 -0.484155 2.10119 	1. 0. 0.
+1
+  1.45166 0.153645 2.50359 	3.22946 1.45274 2.47189 	4.07696 -0.484155 2.10119 	1. 0. 0.
+1
+  3.22946 1.45274 2.47189 	4.07696 -0.484155 2.10119 	5.68906 1.58194 1.24439 	1. 0. 0.
+1
+  4.07696 -0.484155 2.10119 	6.16236 -0.927955 1.16559 	5.68906 1.58194 1.24439 	1. 0. 0.
+1
+  6.16236 -0.927955 1.16559 	5.68906 1.58194 1.24439 	7.32406 1.08574 0.0829932 	1. 0. 0.
+1
+  5.68906 1.58194 1.24439 	7.55546 2.01984 -0.0120068 	7.32406 1.08574 0.0829932 	1. 0. 0.
+1
+  3.22946 1.45274 2.47189 	4.33006 2.26874 1.33549 	5.68906 1.58194 1.24439 	1. 0. 0.
+1
+  3.22946 1.45274 2.47189 	4.33006 2.26874 1.33549 	2.57536 2.54894 1.23139 	1. 0. 0.
+1
+  4.33006 2.26874 1.33549 	2.57536 2.54894 1.23139 	5.10266 2.74254 -0.715907 	1. 0. 0.
+1
+  4.33006 2.26874 1.33549 	5.10266 2.74254 -0.715907 	7.55546 2.01984 -0.0120068 	1. 0. 0.
+1
+  4.33006 2.26874 1.33549 	5.68906 1.58194 1.24439 	7.55546 2.01984 -0.0120068 	1. 0. 0.
+1
+  1.45166 0.153645 2.50359 	3.22946 1.45274 2.47189 	2.57536 2.54894 1.23139 	1. 0. 0.
+1
+  1.45166 0.153645 2.50359 	2.57536 2.54894 1.23139 	-2.88384 2.33404 -0.0290068 	1. 0. 0.
+1
+  -0.771938 -0.223855 1.47919 	1.45166 0.153645 2.50359 	-2.88384 2.33404 -0.0290068 	1. 0. 0.
+1
+  -0.771938 -0.223855 1.47919 	-3.67414 0.606345 1.56439 	-2.88384 2.33404 -0.0290068 	1. 0. 0.
+1
+  -3.67414 0.606345 1.56439 	-2.88384 2.33404 -0.0290068 	-4.84774 2.80654 1.40919 	1. 0. 0.
+1
+  -2.88384 2.33404 -0.0290068 	-4.84774 2.80654 1.40919 	-4.05744 4.53424 -0.184207 	1. 0. 0.
+1
+  2.57536 2.54894 1.23139 	-2.88384 2.33404 -0.0290068 	-4.05744 4.53424 -0.184207 	1. 0. 0.
+1
+  2.57536 2.54894 1.23139 	-2.88384 2.33404 -0.0290068 	-4.05744 4.53424 -0.184207 	1. 0. 0.
+1
+  1.14346 1.15214 0.320993 	2.57536 2.54894 1.23139 	-2.88384 2.33404 -0.0290068 	1. 0. 0.
+1
+  1.14346 1.15214 0.320993 	1.01996 1.06104 -2.15101 	-2.88384 2.33404 -0.0290068 	1. 0. 0.
+1
+  1.14346 1.15214 0.320993 	1.01996 1.06104 -2.15101 	2.57536 2.54894 1.23139 	1. 0. 0.
+1
+  1.01996 1.06104 -2.15101 	2.57536 2.54894 1.23139 	5.10266 2.74254 -0.715907 	1. 0. 0.
+1
+  1.01996 1.06104 -2.15101 	3.60736 1.29684 -2.87381 	5.10266 2.74254 -0.715907 	1. 0. 0.
+1
+  -0.771938 -0.223855 1.47919 	-0.300138 -1.62946 2.47449 	-3.67414 0.606345 1.56439 	1. 0. 0.
+1
+  -0.771938 -0.223855 1.47919 	-0.300138 -1.62946 2.47449 	1.45166 0.153645 2.50359 	1. 0. 0.
+1
+  -0.300138 -1.62946 2.47449 	-2.47214 -1.59546 1.71589 	-3.67414 0.606345 1.56439 	1. 0. 0.
+1
+  -2.47214 -1.59546 1.71589 	-4.76454 -1.89276 0.930293 	-3.67414 0.606345 1.56439 	1. 0. 0.
+1
+  -4.76454 -1.89276 0.930293 	-3.67414 0.606345 1.56439 	-6.29174 0.967445 0.583993 	1. 0. 0.
+1
+  -3.67414 0.606345 1.56439 	-4.84774 2.80654 1.40919 	-6.29174 0.967445 0.583993 	1. 0. 0.
+1
+  -4.84774 2.80654 1.40919 	-6.29174 0.967445 0.583993 	-7.12784 2.53484 0.473393 	1. 0. 0.
+1
+  -2.47214 -1.59546 1.71589 	-4.76454 -1.89276 0.930293 	-3.92214 -3.45776 0.834093 	1. 0. 0.
+1
+  -1.53704 -3.60006 0.497793 	-2.47214 -1.59546 1.71589 	-3.92214 -3.45776 0.834093 	1. 0. 0.
+1
+  -1.53704 -3.60006 0.497793 	-0.300138 -1.62946 2.47449 	-2.47214 -1.59546 1.71589 	1. 0. 0.
+1
+  0.777562 -3.65286 1.28459 	-1.53704 -3.60006 0.497793 	-0.300138 -1.62946 2.47449 	1. 0. 0.
+1
+  -4.84774 2.80654 1.40919 	-5.82304 4.61784 0.0247932 	-4.05744 4.53424 -0.184207 	1. 0. 0.
+1
+  -4.84774 2.80654 1.40919 	-5.82304 4.61784 0.0247932 	-7.12784 2.53484 0.473393 	1. 0. 0.
+1
+  1.01996 1.06104 -2.15101 	-2.88384 2.33404 -0.0290068 	-3.96064 1.67134 -1.28171 	1. 0. 0.
+1
+  -2.88384 2.33404 -0.0290068 	-3.96064 1.67134 -1.28171 	-4.05744 4.53424 -0.184207 	1. 0. 0.
+1
+  -3.96064 1.67134 -1.28171 	-4.05744 4.53424 -0.184207 	-5.13424 3.87154 -1.43691 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	1.01996 1.06104 -2.15101 	-3.96064 1.67134 -1.28171 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	1.75376 -0.319055 -2.99941 	1.01996 1.06104 -2.15101 	1. 0. 0.
+1
+  1.75376 -0.319055 -2.99941 	1.01996 1.06104 -2.15101 	3.60736 1.29684 -2.87381 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	-2.78704 -0.528955 -1.12651 	-3.96064 1.67134 -1.28171 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	-2.50954 -2.13946 -1.80561 	-2.78704 -0.528955 -1.12651 	1. 0. 0.
+1
+  -2.50954 -2.13946 -1.80561 	-2.78704 -0.528955 -1.12651 	-3.96064 1.67134 -1.28171 	1. 0. 0.
+1
+  -2.50954 -2.13946 -1.80561 	-4.18614 -2.49696 -0.640907 	-3.96064 1.67134 -1.28171 	1. 0. 0.
+1
+  -4.18614 -2.49696 -0.640907 	-3.96064 1.67134 -1.28171 	-6.43904 1.78854 -0.988307 	1. 0. 0.
+1
+  -3.96064 1.67134 -1.28171 	-5.13424 3.87154 -1.43691 	-6.43904 1.78854 -0.988307 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	-1.64154 -3.70136 -1.80061 	-2.50954 -2.13946 -1.80561 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	0.438062 -2.68776 -2.23921 	-1.64154 -3.70136 -1.80061 	1. 0. 0.
+1
+  -0.586638 -1.38326 -2.92321 	0.438062 -2.68776 -2.23921 	1.75376 -0.319055 -2.99941 	1. 0. 0.
+1
+  -1.64154 -3.70136 -1.80061 	-2.50954 -2.13946 -1.80561 	-4.18614 -2.49696 -0.640907 	1. 0. 0.
+1
+  -1.64154 -3.70136 -1.80061 	-4.18614 -2.49696 -0.640907 	-3.92214 -3.45776 0.834093 	1. 0. 0.
+1
+  -1.53704 -3.60006 0.497793 	-1.64154 -3.70136 -1.80061 	-3.92214 -3.45776 0.834093 	1. 0. 0.
+1
+  0.904762 -3.62316 -0.490507 	-1.53704 -3.60006 0.497793 	-1.64154 -3.70136 -1.80061 	1. 0. 0.
+1
+  0.777562 -3.65286 1.28459 	0.904762 -3.62316 -0.490507 	-1.53704 -3.60006 0.497793 	1. 0. 0.
+1
+  0.904762 -3.62316 -0.490507 	0.438062 -2.68776 -2.23921 	-1.64154 -3.70136 -1.80061 	1. 0. 0.
+1
+  -4.76454 -1.89276 0.930293 	-4.18614 -2.49696 -0.640907 	-3.92214 -3.45776 0.834093 	1. 0. 0.
+1
+  -4.76454 -1.89276 0.930293 	-4.18614 -2.49696 -0.640907 	-6.29174 0.967445 0.583993 	1. 0. 0.
+1
+  -4.18614 -2.49696 -0.640907 	-6.29174 0.967445 0.583993 	-6.43904 1.78854 -0.988307 	1. 0. 0.
+1
+  -6.29174 0.967445 0.583993 	-7.12784 2.53484 0.473393 	-6.43904 1.78854 -0.988307 	1. 0. 0.
+1
+  3.60736 1.29684 -2.87381 	5.67566 1.42984 -1.78291 	5.10266 2.74254 -0.715907 	1. 0. 0.
+1
+  5.67566 1.42984 -1.78291 	5.10266 2.74254 -0.715907 	7.55546 2.01984 -0.0120068 	1. 0. 0.
+1
+  -5.13424 3.87154 -1.43691 	-7.12784 2.53484 0.473393 	-6.43904 1.78854 -0.988307 	1. 0. 0.
+1
+  -5.82304 4.61784 0.0247932 	-5.13424 3.87154 -1.43691 	-7.12784 2.53484 0.473393 	1. 0. 0.
+1
+  -5.82304 4.61784 0.0247932 	-4.05744 4.53424 -0.184207 	-5.13424 3.87154 -1.43691 	1. 0. 0.
 9
 #  terminating special property
@@ -333,5 +333,5 @@
   25.0    0.6     -1.0 -1.0 -1.0     0.2        0 0 0 0
 2
-  -4.99203 4.29989 -0.526429	5	1 0 0
+  -5.0049 4.34121 -0.532107	5	1 0 0
 9
   terminating special property
Index: tests/regression/atlocal.in
===================================================================
--- tests/regression/atlocal.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/atlocal.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,4 @@
+prefix='@prefix@'
+exec_prefix='@prefix@'
+topdir='@topdir@'
+bindir='@bindir@'
Index: tests/regression/molecuilder.in
===================================================================
--- tests/regression/molecuilder.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/molecuilder.in	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# wrapper for testing molecuilder
+
+. ../../atconfig
+
+"${abs_top_builddir}/src/molecuilder" \
+	${1+"$@"}
+status=$?
+
+exit $status
Index: tests/regression/testsuite-analysis.at
===================================================================
--- tests/regression/testsuite-analysis.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-analysis.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,55 @@
+AT_BANNER([MoleCuilder - Analysis])
+# 1. pair correlation analysis
+AT_SETUP([Analysis - pair correlation])
+AT_KEYWORDS([analysis])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/1/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -C E 1 8 output.csv bin_output.csv 0 20], 0, [stdout], [stderr])
+AT_CHECK([fgrep "Begin of PairCorrelation" stdout], 0, [ignore], [ignore])
+#AT_CHECK([file=output.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/1/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=bin_output.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/1/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. pair correlation analysis - range test
+AT_SETUP([Analysis - pair correlation range test])
+AT_KEYWORDS([analysis])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -C E 1 8 output-5.csv bin_output-5.csv 0 5], 0, [stdout], [stderr])
+#AT_CHECK([file=output-5.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=bin_output-5.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -C E 1 8 output-10.csv bin_output-10.csv 5 10], 0, [stdout], [stderr])
+#AT_CHECK([file=output-10.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=bin_output-10.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -C E 1 8 output-20.csv bin_output-20.csv 10 20], 0, [stdout], [stderr])
+#AT_CHECK([file=output-20.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=bin_output-20.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/2/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 3. pair correlation analysis to point
+AT_SETUP([Analysis - point correlation])
+AT_KEYWORDS([analysis])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/3/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -C P 1 10. 10. 10. output.csv bin_output.csv 0 20], 0, [stdout], [stderr])
+AT_CHECK([fgrep "Begin of CorrelationToPoint" stdout], 0, [ignore], [ignore])
+#AT_CHECK([file=output.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/3/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=bin_output.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/3/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 4. pair correlation analysis to surface
+AT_SETUP([Analysis - surface correlation])
+AT_KEYWORDS([analysis])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/4/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -I -C S 1 output.csv bin_output.csv 1. 0 20], 0, [stdout], [stderr])
+AT_CHECK([fgrep "Begin of CorrelationToSurface" stdout], 0, [ignore], [ignore])
+#AT_CHECK([file=output.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/4/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=bin_output.csv; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/4/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 4. principal axis system
+AT_SETUP([Analysis - principal axis system])
+AT_KEYWORDS([analysis])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Analysis/5/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -m 0], 0, [stdout], [stderr])
+AT_CHECK([fgrep "eigenvalue = 4382.53," stdout], 0, [ignore], [ignore])
+AT_CHECK([fgrep "eigenvalue = 4369.24," stdout], 0, [ignore], [ignore])
+AT_CHECK([fgrep "eigenvalue = 28.9359," stdout], 0, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/testsuite-domain.at
===================================================================
--- tests/regression/testsuite-domain.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-domain.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,66 @@
+AT_BANNER([MoleCuilder - simulation domain])
+# 1. define box setting
+AT_SETUP([Domain - defining simulation domain])
+AT_KEYWORDS([domain])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -B 10 0 10 0 0 10], 0, [stdout], [stderr])
+AT_CHECK([fgrep "BoxLength" test.conf], 0, [stdout], [stderr])
+AT_CHECK([diff test.conf ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/1/post/test.conf], 0, [stdout], [stderr])
+AT_CLEANUP
+
+# 2. center atoms in defined domain
+AT_SETUP([Domain - setting and centering in domain])
+AT_KEYWORDS([domain])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/2/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -b 15 0 15 0 0 15], 0, [stdout], [stderr])
+AT_CHECK([diff test.conf ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/2/post/test.conf], 0, [stdout], [stderr])
+AT_CLEANUP
+
+# 3. center atoms with defined boundary
+AT_SETUP([Domain - centering with defined boundary])
+AT_KEYWORDS([domain])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/3/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -c 5 10 15], 0, [stdout], [stderr])
+AT_CHECK([diff test.conf ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/3/post/test.conf], 0, [stdout], [stderr])
+AT_CLEANUP
+
+# 4. center atoms and adjusting boundary
+AT_SETUP([Domain - centering and setting domain])
+AT_KEYWORDS([domain])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/4/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -O], 0, [stdout], [stderr])
+AT_CHECK([diff test.conf ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/4/post/test.conf], 0, [stdout], [stderr])
+AT_CLEANUP
+
+# 5. scaling box
+AT_SETUP([Domain - scaling box])
+AT_KEYWORDS([domain])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/5/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -s 0.5 1. 0.9], 0, [stdout], [stderr])
+AT_CHECK([diff test.conf ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/5/post/test.conf], 0, [stdout], [stderr])
+AT_CLEANUP
+
+# 6. duplicating box
+AT_SETUP([Domain - duplicating box])
+AT_KEYWORDS([domain])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -d 1 1 1], 0, [stdout], [stderr])
+AT_CHECK([file=test.conf.xyz;sort -n $file | grep -v "Created by" >$file-sorted], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.xyz;sort -n ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/post/$file  | grep -v "Created by" >$file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.xyz; diff $file-sorted $file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/pre/test.conf test-x.conf], 0)
+AT_CHECK([../../molecuilder test-x.conf -e ${abs_top_srcdir}/src/ -d 2 1 1], 0, [stdout], [stderr])
+AT_CHECK([file=test-x.conf.xyz;sort -n $file | grep -v "Created by" >$file-sorted], 0, [ignore], [ignore])
+AT_CHECK([file=test-x.conf.xyz;sort -n ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/post/$file  | grep -v "Created by" >$file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([file=test-x.conf.xyz; diff $file-sorted $file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/pre/test.conf test-y.conf], 0)
+AT_CHECK([../../molecuilder test-y.conf -e ${abs_top_srcdir}/src/ -d 1 2 1], 0, [stdout], [stderr])
+AT_CHECK([file=test-y.conf.xyz;sort -n $file | grep -v "Created by" >$file-sorted], 0, [ignore], [ignore])
+AT_CHECK([file=test-y.conf.xyz;sort -n ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/post/$file  | grep -v "Created by" >$file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([file=test-y.conf.xyz; diff $file-sorted $file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/pre/test.conf test-z.conf], 0)
+AT_CHECK([../../molecuilder test-z.conf -e ${abs_top_srcdir}/src/ -d 1 1 2], 0, [stdout], [stderr])
+AT_CHECK([file=test-z.conf.xyz;sort -n $file | grep -v "Created by" >$file-sorted], 0, [ignore], [ignore])
+AT_CHECK([file=test-z.conf.xyz;sort -n ${abs_top_srcdir}/${AUTOTEST_PATH}/Domain/6/post/$file  | grep -v "Created by" >$file-sorted2], 0, [ignore], [ignore])
+AT_CHECK([file=test-z.conf.xyz; diff $file-sorted $file-sorted2], 0, [ignore], [ignore])
+#AT_CHECK([/bin/false], 12, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/testsuite-filling.at
===================================================================
--- tests/regression/testsuite-filling.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-filling.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,23 @@
+AT_BANNER([MoleCuilder - Filling in molecules])
+# 1. filling box
+AT_SETUP([Filling - filling empty box])
+AT_KEYWORDS([filling])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Filling/1/pre/test.conf .], 0)
+AT_DATA([water.xyz], [[3
+ # test configuration, created by molecuilder test suite
+O       0.      0.      0.
+H       0.758602 0.     0.504284 
+H       0.758602 0.     -0.504284 
+]])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -F water.xyz --MaxDistance -1 --distances 3.1 3.1 3.1  --lengths 2.1 0. 0. --DoRotate 0], 0, [stdout], [stderr])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Filling/1/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. suspend in water with certain density
+AT_SETUP([Filling - BROKEN: suspend in water])
+AT_KEYWORDS([filling])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Filling/2/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -u 1.3], 0, [stdout], [stderr])
+#AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Filling/2/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
Index: tests/regression/testsuite-fragmentation.at
===================================================================
--- tests/regression/testsuite-fragmentation.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-fragmentation.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,24 @@
+AT_BANNER([MoleCuilder - Fragmentation and Re-fragmentation test])
+# 1. check config
+AT_SETUP([Fragmentation - Checking present config])
+AT_KEYWORDS([fragmentation])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Fragmentation/1/pre/test.conf .], 0)
+AT_CHECK([fgrep "Ion_Type1_4" test.conf], 0, [Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
+], [ignore])
+AT_CHECK([fgrep "Ion_Type2_4" test.conf], 1, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. fragment the molecule and check the number of configs
+AT_SETUP([Fragmentation - Fragmentation])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Fragmentation/2/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -f 1.55 2], 0, [ignore], [ignore])
+AT_CHECK([ls -l BondFragment*.conf | wc -l], 0, [5
+], [ignore])
+AT_CLEANUP
+
+# 3. check whether parsing of BondFragment files and re-rwriting config files is working (exit code is 2 as we don't need to continue wrt to ...OrderAtSite)
+AT_SETUP([Fragmentation - Fragmentation is at MaxOrder])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Fragmentation/3/pre/* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -f 1.55 2], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -f 1.55 2], 2, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/testsuite-graph.at
===================================================================
--- tests/regression/testsuite-graph.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-graph.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,17 @@
+AT_BANNER([MoleCuilder - Graph routines test])
+# 1. DFS analysis
+AT_SETUP([Graph - DFS analysis])
+AT_KEYWORDS([graph])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Graph/1/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -D 2.], 0, [stdout], [stderr])
+AT_CHECK([fgrep -c "No rings were detected in the molecular structure." stdout], 0, [1
+], [ignore])
+AT_CLEANUP
+
+AT_SETUP([Graph - subgraph dissection])
+AT_KEYWORDS([graph])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Graph/2/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 3 -I], 0, [stdout], [stderr])
+AT_CHECK([fgrep "I scanned 31 molecules." stdout], 0, [ignore], [ignore])
+AT_CLEANUP
+
Index: tests/regression/testsuite-molecules.at
===================================================================
--- tests/regression/testsuite-molecules.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-molecules.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,66 @@
+AT_BANNER([MoleCuilder - Molecules])
+# 1. Bonds from file
+AT_SETUP([Molecules - Bonds from file])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/1/pre/test.* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 4 -A test.dbond], 0, [stdout], [stderr])
+AT_CHECK([fgrep "Looking for atoms 2 and 9." stdout], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. Storing adjacency info
+AT_SETUP([Molecules - Storing bond info])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/2/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 1 -j test.dbond], 0, [stdout], [stderr])
+AT_CHECK([file=test.dbond; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -v 1 -J test.adj], 0, [stdout], [stderr])
+AT_CHECK([file=test.adj; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/2/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 3. Storing temperature
+AT_SETUP([Molecules - Storing temperature])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/3/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -S test.ekin], 0, [stdout], [stderr])
+AT_CHECK([file=test.ekin; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/3/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 4. linear interpolation
+AT_SETUP([Molecules - BROKEN: Linear interpolation])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/4/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -L 0 1 teststep 1], 0, [stdout], [stderr])
+AT_CLEANUP
+
+# 5. Verlet force integration
+AT_SETUP([Molecules - BROKEN: Verlet force integration])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/5/pre/test.* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -P test.forces], 134, [stdout], [stderr])
+#AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/5/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 6. Translation
+AT_SETUP([Molecules - Translation])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/6/pre/test.* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -t 1. 1. 1.], 0, [stdout], [stderr])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/6/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 7. Periodic translation
+AT_SETUP([Molecules - Periodic translation])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/7/pre/test.* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -T 12. 12. 12.], 0, [stdout], [stderr])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/7/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 8. Periodic translation
+AT_SETUP([Molecules - BROKEN: Rotate to PAS])
+AT_KEYWORDS([Molecules])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/8/pre/test.* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -m 1], 0, [stdout], [stderr])
+#AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Molecules/8/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
Index: tests/regression/testsuite-simple_configuration.at
===================================================================
--- tests/regression/testsuite-simple_configuration.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-simple_configuration.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,93 @@
+AT_BANNER([MoleCuilder - molecular config creation from xyz file and atom adding])
+# 1. create some simplest molecular geometry
+AT_SETUP([Simple configuration - xyz file generation])
+AT_KEYWORDS([configuration])
+AT_DATA([test.xyz], [[1
+ # test configuration, created by molecuilder test suite
+H	10.	10.	10.
+]])
+AT_CHECK([file=test.xyz; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/1/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. parsing an xyz
+AT_SETUP([Simple configuration - parsing xyz file])
+AT_KEYWORDS([configuration])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/2/pre/test.xyz .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -p test.xyz], 0, [ignore], [ignore])
+AT_CHECK([fgrep "Ion_Type1_1" test.conf], 0, [Ion_Type1_1	10.000000000	10.000000000	10.000000000	0 # molecule nr 0
+], [ignore])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/2/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 3. add atom
+AT_SETUP([Simple configuration - adding atom])
+AT_KEYWORDS([configuration])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -a 1 10. 10. 10.], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/3/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 4. change the element
+AT_SETUP([Simple configuration - Changing element])
+AT_KEYWORDS([configuration])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/pre/test.conf test.conf], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -E 0 6], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/4/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 5. remove atom
+AT_SETUP([Simple configuration - Atom removal])
+AT_KEYWORDS([configuration])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -r 0], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/5/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 6. test some more configuration that all desire parameters and count how many complain
+AT_SETUP([Simple configuration - invalid commands on empty configs])
+AT_KEYWORDS([configuration])
+AT_CHECK([../../molecuilder empty.conf -e ${abs_top_srcdir}/src/ -t -s -b -E -c -b -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "Not enough or invalid" stderr], 0, [1
+], [ignore])
+AT_CLEANUP
+
+# 7. test some more configuration that all need parameters and count how many complain
+AT_SETUP([Simple configuration - invalid commands on present configs])
+AT_KEYWORDS([configuration])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/7/pre/test.conf .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -t], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -s -b -E -c -b -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -b -E -c -b -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -E -c -b -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -c -b -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -b -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -a -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -U -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -T -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -u], 255, [ignore], [stderr])
+AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 8. Removing sphere of atoms
+AT_SETUP([Simple configuration - Removing sphere of atoms])
+AT_KEYWORDS([configuration])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/pre/test.* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -R 7.283585982 3.275186040 3.535886037 7.], 0, [stdout], [stderr])
+AT_CHECK([sort -n test.conf.xyz | grep -v "Created by" >test.conf.xyz-sorted], 0, [ignore], [ignore])
+AT_CHECK([sort -n ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/test.conf.xyz  | grep -v "Created by" >${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/test.conf.xyz-sorted], 0, [ignore], [ignore])
+AT_CHECK([file=test.conf.xyz-sorted; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Simple_configuration/8/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/testsuite-specifics.at
===================================================================
--- tests/regression/testsuite-specifics.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-specifics.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,8 @@
+AT_BANNER([MoleCuilder - Specifics])
+# 1. MPQC basis
+AT_SETUP([Specifics - MPQC basis])
+AT_KEYWORDS([options])
+AT_CHECK([pwd],[ignore],[ignore])
+AT_CHECK([../../molecuilder test.conf -v 1 -M test], 0, [stdout], [ignore])
+AT_CHECK([fgrep "Setting MPQC basis to test." stdout], 0, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/testsuite-standard_options.at
===================================================================
--- tests/regression/testsuite-standard_options.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-standard_options.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,62 @@
+AT_BANNER([MoleCuilder - standard options])
+# 1. verbosity
+AT_SETUP([Standard Options - verbosity])
+AT_KEYWORDS([options])
+AT_CHECK([pwd],[ignore],[ignore])
+AT_CHECK([../../molecuilder -v 1], 0, [stdout], [ignore])
+AT_CHECK([fgrep olecuilder stdout], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. help screen
+AT_SETUP([Standard Options - help screen])
+AT_KEYWORDS([options])
+AT_CHECK([../../molecuilder -h], 0, [stdout], [ignore])
+AT_CHECK([fgrep "Give this help screen" stdout], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 3. no element database
+AT_SETUP([Standard Options - no element database])
+AT_KEYWORDS([options])
+AT_CHECK([../../molecuilder -e], 255, [ignore], [stderr])
+AT_CHECK([fgrep "Not enough or invalid arguments" stderr], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 4. element database
+AT_SETUP([Standard Options - element database])
+AT_KEYWORDS([options])
+AT_DATA([elements.db], [[#	Covalent	radius	of	each	element	in	Angstroem	from	CSD	(binding	is:	[Rcov(A)+Rcov(B)-t,Rcov(A)+Rcov(B)+t]	with	t	=	0.4A
+#Element	Name	Symbol	Period	Group	Block	Atomic	Number	AtomicWeight	Covalent	Radius	vdW	Radius
+Hydrogen	H	1	1	s	1	1.008	0.23	1.09
+Helium	He	1	18	p	2	4.003	1.5	1.4
+]])
+AT_CHECK([../../molecuilder test.conf -e ./], 0, [stdout], [stderr])
+AT_CHECK([grep -E "Using.*as elements database." stdout], 0, [ignore], [ignore])
+AT_CHECK([fgrep "Element list loaded successfully." stdout], 0, [ignore], [ignore])
+AT_CHECK([fgrep "Something went wrong while parsing the other databases!" stderr], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 5. bond length database
+AT_SETUP([Standard Options - bond length table])
+AT_KEYWORDS([options])
+AT_DATA([bondlength.db], [[# bond length database
+	1	2
+1	1.	0.
+2	0.	0.
+]])
+AT_CHECK([../../molecuilder test.conf -g bondlength.db], 0, [stdout], [stderr])
+AT_CHECK([grep -E "Using.*as bond length table." stdout], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 6. fast trajectories
+AT_SETUP([Standard Options - fast trajectories])
+AT_KEYWORDS([options])
+AT_CHECK([../../molecuilder test.conf -n], 0, [stdout], [stderr])
+AT_CHECK([fgrep "I won't parse trajectories" stdout], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 7. molecule default name
+AT_SETUP([Standard Options - molecule default name])
+AT_KEYWORDS([options])
+AT_CHECK([../../molecuilder test.conf -X test], 0, [stdout], [stderr])
+AT_CHECK([fgrep "Default name of new molecules set to test." stdout], 0, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/testsuite-tesselation.at
===================================================================
--- tests/regression/testsuite-tesselation.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite-tesselation.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,36 @@
+AT_BANNER([MoleCuilder - Tesselation test])
+# 1. Non convex tesselation
+AT_SETUP([Tesselation - Non-Convex Envelope])
+AT_KEYWORDS([Tesselation])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/1/pre/* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -N 4. NonConvexEnvelope], 0, [stdout], [stderr])
+AT_CHECK([file=NonConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/1/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=NonConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/1/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 2. convex tesselation (where the non-convex is already convex)
+AT_SETUP([Tesselation - Convex Envelope])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/2/pre/* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -o ConvexEnvelope NonConvexEnvelope], 0, [stdout], [stderr])
+AT_CHECK([file=ConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=ConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/2/post/$file], 0, [ignore], [ignore])
+AT_CHECK([fgrep "tesselated volume area is 16.4016 angstrom^3" stdout], 0, [ignore], [ignore])
+AT_CHECK([diff ConvexEnvelope.dat NonConvexEnvelope.dat], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 3. Big Non convex tesselation
+AT_SETUP([Tesselation - Big non-Convex Envelope])
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/3/pre/* .], 0)
+AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -N 4. NonConvexEnvelope], 0, [stdout], [stderr])
+AT_CHECK([file=NonConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/3/post/$file], 0, [ignore], [ignore])
+AT_CHECK([file=NonConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/3/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+# 4. Big convex tesselation - is not working yet 
+#AT_SETUP([Tesselation - big convex Envelope])
+#AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/4/pre/* .], 0)
+#AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -o ConvexEnvelope NonConvexEnvelope], 0, [stdout], [stderr])
+#AT_CHECK([file=ConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/4/post/$file], 0, [ignore], [ignore])
+#AT_CHECK([file=ConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Tesselation/4/post/$file], 0, [ignore], [ignore])
+#AT_CHECK([fgrep "tesselated volume area is 16.4016 angstrom^3" stdout], 0, [ignore], [ignore])
+#AT_CLEANUP
Index: tests/regression/testsuite.at
===================================================================
--- tests/regression/testsuite.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
+++ tests/regression/testsuite.at	(revision 4ed18b5079e3f4ea8a189543a78e279bb579b049)
@@ -0,0 +1,28 @@
+# Process with autom4te to create an -*- Autotest -*- test suite.
+#
+# see regression/... subdirs wherein for each of the cases and each check (enumerated) is a pre and post dir. 
+# In pre initial files are placed, in post results can be found to be checked by diff in this testsuite.
+
+AT_INIT([Molecular Builder])
+AT_TESTED(diff fgrep grep)
+
+
+m4_include(testsuite-standard_options.at)
+
+m4_include(testsuite-specifics.at)
+
+m4_include(testsuite-simple_configuration.at)
+
+m4_include(testsuite-domain.at)
+
+m4_include(testsuite-graph.at)
+
+m4_include(testsuite-molecules.at)
+
+m4_include(testsuite-fragmentation.at)
+
+m4_include(testsuite-tesselation.at)
+
+m4_include(testsuite-filling.at)
+
+m4_include(testsuite-analysis.at)
Index: sts/testsuite.at
===================================================================
--- tests/testsuite.at	(revision b0e9c9b269a10c150b013b7fb592c9bf4771717b)
+++ 	(revision )
@@ -1,171 +1,0 @@
-# Process with autom4te to create an -*- Autotest -*- test suite.
-#
-# see regression/... subdirs wherein for each of the cases and each check (enumerated) is a pre and post dir. 
-# In pre initial files are placed, in post results can be found to be checked by diff in this testsuite.
-
-AT_INIT([Molecular Builder])
-
-# Checking if command line options are parsed correctly
-AT_BANNER([MoleCuilder - standard options])
-AT_SETUP([Standard Options])
-AT_KEYWORDS([options])
-AT_CHECK([pwd],[ignore],[ignore])
-AT_CHECK([../../molecuilder -v], 0, [stdout], [ignore])
-AT_CHECK([fgrep olecuilder stdout], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder -h], 0, [stdout], [ignore])
-AT_CHECK([fgrep "Give this help screen" stdout], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder -e], 134, [ignore], [stderr])
-AT_CHECK([fgrep "Not enough or invalid arguments" stderr], 0, [ignore], [ignore])
-AT_CLEANUP
-
-
-AT_BANNER([MoleCuilder - molecular config creation from xyz file and atom adding])
-# 1. create some simplest molecular geometry
-AT_SETUP([Simple configuration - xyz file generation])
-AT_KEYWORDS([Atom handling])
-AT_DATA([test.xyz], [[1
- # test configuration, created by molecuilder test suite
-H	10.	10.	10.
-]])
-AT_CHECK([file=test.xyz; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/1/post/$file], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 2. parsing an xyz
-AT_SETUP([Simple configuration - parsing xyz file])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/2/pre/test.xyz .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -p test.xyz], 0, [ignore], [ignore])
-AT_CHECK([fgrep "Ion_Type1_1" test.conf], 0, [Ion_Type1_1	10.000000000	10.000000000	10.000000000	0 # molecule nr 0
-], [ignore])
-AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/2/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/2/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/2/post/$file], 0, [ignore], [ignore])
-
-# 3. add atom
-AT_CLEANUP
-AT_SETUP([Simple configuration - adding atom])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -a 1 10. 10. 10.], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/3/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/3/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/3/post/$file], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 4. change the element
-AT_SETUP([Simple configuration - Changing element])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/4/pre/test.conf test.conf], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -E 0 6], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/4/post/$file], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 5. remove atom
-AT_SETUP([Simple configuration - Atom removal])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/5/pre/test.conf .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -r 0], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/5/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf.in; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/5/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=test.conf.xyz; diff -I '.*Created by molecuilder.*' $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/5/post/$file], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 6. test some more configuration that all desire parameters and count how many complain
-AT_SETUP([Simple configuration - invalid commands on empty configs])
-AT_CHECK([../../molecuilder empty.conf -e ${abs_top_srcdir}/src/ -t -s -b -E -c -b -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "Not enough or invalid" stderr], 0, [1
-], [ignore])
-AT_CLEANUP
-
-# 7. test some more configuration that all need parameters and count how many complain
-AT_SETUP([Simple configuration - invalid commands on present configs])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Simple_configuration/7/pre/test.conf .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -t], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -s -b -E -c -b -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -b -E -c -b -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -E -c -b -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -c -b -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -b -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -a -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -U -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -T -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -u], 255, [ignore], [stderr])
-AT_CHECK([fgrep -c "CRITICAL: Not enough or invalid" stderr], 0, [ignore], [ignore])
-AT_CLEANUP
-
-
-AT_BANNER([MoleCuilder - Graph routines test])
-AT_SETUP([Graph - DFS analysis])
-AT_KEYWORDS([graph])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Graph/1/pre/test.conf .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -vvv -D 2.], 0, [stdout], [stderr])
-AT_CHECK([fgrep -c "No rings were detected in the molecular structure." stdout], 0, [1
-], [ignore])
-AT_CLEANUP
-
-AT_BANNER([MoleCuilder - Fragmentation and Re-fragmentation test])
-# 1. check config
-AT_SETUP([Fragmentation - Checking present config])
-AT_KEYWORDS([fragmentation])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Fragmentation/1/pre/test.conf .], 0)
-AT_CHECK([fgrep "Ion_Type1_4" test.conf], 0, [Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 # molecule nr 6
-], [ignore])
-AT_CHECK([fgrep "Ion_Type2_4" test.conf], 1, [ignore], [ignore])
-AT_CLEANUP
-# 2. fragment the molecule and check the number of configs
-AT_SETUP([Fragmentation - Fragmentation])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Fragmentation/2/pre/test.conf .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -f 1.55 2], 0, [ignore], [ignore], [mkdir std; mv BondFragment*.conf* std/])
-AT_CHECK([mkdir std; mv BondFragment*.conf* std/], 0)
-AT_CHECK([ls -l std/BondFragment*.conf | wc -l], 0, [5
-], [ignore])
-AT_CLEANUP
-# 3. check whether parsing of BondFragment files and re-rwriting config files is working (exit code is 2 as we don't need to continue wrt to ...OrderAtSite)
-AT_SETUP([Fragmentation - Fragmentation is at MaxOrder])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Fragmentation/3/pre/* .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -f 1.55 2], 2, [ignore], [ignore], [mkdir new; mv BondFragment*.conf* new/])
-AT_CHECK([mkdir new; mv BondFragment*.conf* new/], 0)
-AT_CLEANUP
-
-
-AT_BANNER([MoleCuilder - Tesselation test])
-# 1. Non convex tesselation
-AT_SETUP([Tesselation - Non-Convex Envelope])
-AT_KEYWORDS([Tesselation])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/1/pre/* .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -N 4. NonConvexEnvelope], 0, [stdout], [stderr])
-AT_CHECK([file=NonConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/1/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=NonConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/1/post/$file], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 2. convex tesselation (where the non-convex is already convex)
-AT_SETUP([Tesselation - Convex Envelope])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/2/pre/* .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -o ConvexEnvelope NonConvexEnvelope], 0, [stdout], [stderr])
-AT_CHECK([file=ConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/2/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=ConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/2/post/$file], 0, [ignore], [ignore])
-AT_CHECK([fgrep "tesselated volume area is 16.4016 angstrom^3" stdout], 0, [ignore], [ignore])
-AT_CHECK([diff ConvexEnvelope.dat NonConvexEnvelope.dat], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 3. Big Non convex tesselation
-AT_SETUP([Tesselation - Big non-Convex Envelope])
-AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/3/pre/* .], 0)
-AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -N 4. NonConvexEnvelope], 0, [stdout], [stderr])
-AT_CHECK([file=NonConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/3/post/$file], 0, [ignore], [ignore])
-AT_CHECK([file=NonConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/3/post/$file], 0, [ignore], [ignore])
-AT_CLEANUP
-
-# 4. Big convex tesselation - is not working yet 
-#AT_SETUP([Tesselation - big convex Envelope])
-#AT_CHECK([/bin/cp -f ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/4/pre/* .], 0)
-#AT_CHECK([../../molecuilder test.conf -e ${abs_top_srcdir}/src/ -o ConvexEnvelope NonConvexEnvelope], 0, [stdout], [stderr])
-#AT_CHECK([file=ConvexEnvelope.dat; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/4/post/$file], 0, [ignore], [ignore])
-#AT_CHECK([file=ConvexEnvelope.r3d; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/regression/Tesselation/4/post/$file], 0, [ignore], [ignore])
-#AT_CHECK([fgrep "tesselated volume area is 16.4016 angstrom^3" stdout], 0, [ignore], [ignore])
-#AT_CLEANUP
-
