Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/Actions/MapOfActions.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -123,7 +123,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
Index: src/Helpers/MemDebug.cpp
===================================================================
--- src/Helpers/MemDebug.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/Helpers/MemDebug.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -153,4 +153,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;
Index: src/UIElements/CommandLineUI/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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/analysis_bonds.cpp
===================================================================
--- src/analysis_bonds.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/analysis_bonds.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -181,5 +181,5 @@
                     // 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);
+                      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;
Index: src/atom.cpp
===================================================================
--- src/atom.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/atom.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -40,5 +40,5 @@
 
 atom *atom::clone(){
-  atom *res = new atom();
+  atom *res = new atom(this);
   res->previous=0;
   res->next=0;
Index: src/atom_bondedparticle.cpp
===================================================================
--- src/atom_bondedparticle.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/atom_bondedparticle.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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 f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/atom_graphnode.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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_particleinfo.cpp
===================================================================
--- src/atom_particleinfo.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/atom_particleinfo.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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 f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/atom_particleinfo.hpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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/bond.cpp
===================================================================
--- src/bond.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/bond.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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/builder.cpp
===================================================================
--- src/builder.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/builder.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -53,4 +53,5 @@
 
 #include <cstring>
+#include <cstdlib>
 
 #include "analysis_bonds.hpp"
@@ -1529,11 +1530,12 @@
             break;
           case 'v':
+            setVerbosity(atoi(argv[argptr]));
             ArgcList.insert(argptr-1);
-            return(1);
+            ArgcList.insert(argptr);
+            argptr++;
             break;
           case 'V':
             ArgcList.insert(argptr-1);
-            ArgcList.insert(argptr);
-            argptr++;
+            return(1);
             break;
           case 'B':
@@ -2488,4 +2490,5 @@
   ActionRegistry::purgeInstance();
   ActionHistory::purgeInstance();
+  Memory::getState();
 }
 
@@ -2499,4 +2502,5 @@
     char **Arguments = NULL;
     int ArgcSize = 0;
+    int ExitFlag = 0;
     bool ArgumentsCopied = false;
 
@@ -2505,4 +2509,6 @@
     if (argc < 2) {
       cout << "Obtain help with " << argv[0] << " -h." << endl;
+      cleanUp();
+      Memory::getState();
       return(1);
     }
@@ -2512,4 +2518,8 @@
     // need to init the history before any action is created
     ActionHistory::init();
+
+    // 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
@@ -2520,5 +2530,5 @@
       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(), (char *&)ConfigFileName, ArgcList);
       // copy all remaining arguments to a new argv
       Arguments = Malloc<char *>(ArgcList.size(), "main - **Arguments");
@@ -2563,7 +2573,5 @@
   }
 
-  cleanUp();
-  Memory::getState();
-  return (0);
+  return (ExitFlag == 1 ? 0 : ExitFlag);
 }
 
Index: src/config.cpp
===================================================================
--- src/config.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/config.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -1680,5 +1680,5 @@
     Walker = Walker->next;
     *output << Walker->nr << "\t";
-    *output << Walker->Name << "\t";
+    *output << Walker->getName() << "\t";
     *output << mol->name << "\t";
     *output << 0 << "\t";
@@ -1756,5 +1756,5 @@
         Walker = Walker->next;
         *output << AtomNo+1 << "\t";
-        *output << Walker->Name << "\t";
+        *output << Walker->getName() << "\t";
         *output << (*MolWalker)->name << "\t";
         *output << MolCounter+1 << "\t";
Index: src/helpers.cpp
===================================================================
--- src/helpers.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/helpers.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -209,8 +209,8 @@
  */
 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));
-  }
+//  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/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/molecule.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -135,8 +135,8 @@
       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);
+      if(pointer->getName() == "Unknown"){
+        stringstream sstr;
+        sstr << pointer->type->symbol << pointer->nr+1;
+        pointer->setName(sstr.str());
       }
     }
@@ -157,6 +157,7 @@
   if (pointer != NULL) {
     atom *walker = pointer->clone();
-    walker->Name = Malloc<char>(strlen(pointer->Name) + 1, "atom::atom: *Name");
-    strcpy (walker->Name, pointer->Name);
+    stringstream sstr;
+    sstr << pointer->getName();
+    walker->setName(sstr.str());
     walker->nr = last_atom++;  // increase number within molecule
     add(walker, end);
@@ -252,5 +253,5 @@
   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 +276,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 +296,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 +340,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;
@@ -616,5 +617,5 @@
     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);
+    DoeLog(1) && (eLog()<< Verbose(1) << "Could not add bond between " << atom1->getName() << " and " << atom2->getName() << " as one or both are not present in the molecule." << endl);
   }
   return Binder;
@@ -695,5 +696,5 @@
     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--;
@@ -713,5 +714,5 @@
     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--;
@@ -915,8 +916,8 @@
         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);
+        stringstream sstr;
+        sstr << Walker->type->symbol << Walker->nr+1;
+        Walker->setName(sstr.str());
+        DoLog(3) && (Log() << Verbose(3) << "Naming atom nr. " << Walker->nr << " " << Walker->getName() << "." << endl);
         i++;
       }
Index: src/molecule_fragmentation.cpp
===================================================================
--- src/molecule_fragmentation.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/molecule_fragmentation.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -722,5 +722,5 @@
     // free memory for bond part
     DoLog(1) && (Log() << Verbose(1) << "Freeing bond memory" << endl);
-    delete(FragmentList); // remove bond molecule from memory
+    Free(&FragmentList); // remove bond molecule from memory
     Free(&SortIndex);
   } else {
@@ -907,5 +907,5 @@
       }
     } else {
-      DoeLog(1) && (eLog()<< Verbose(1) << "Son " << Runner->Name << " has father " << FatherOfRunner->Name << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl);
+      DoeLog(1) && (eLog()<< Verbose(1) << "Son " << Runner->getName() << " has father " << FatherOfRunner->getName() << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl);
     }
     if ((LonelyFlag) && (Leaf->AtomCount > 1)) {
Index: src/molecule_geometry.cpp
===================================================================
--- src/molecule_geometry.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/molecule_geometry.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -282,5 +282,5 @@
               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 " << Walker->getName() << " in bond " << *(*Runner) << " has to be shifted due to " << tmp << "." << endl);
                 if (tmp > 0)
                   Translationvector[j] -= 1.;
Index: src/molecule_graph.cpp
===================================================================
--- src/molecule_graph.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/molecule_graph.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -317,5 +317,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 +348,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 +354,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 +360,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 +382,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 +389,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 +431,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 +445,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);
@@ -692,5 +692,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 +698,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 +719,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 +770,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;
@@ -1233,14 +1233,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);
@@ -1322,10 +1322,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 +1336,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);
@@ -1403,5 +1403,5 @@
           OtherAtom = (*Runner)->GetOtherAtom(Walker);
           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);
+            DoLog(4) && (Log() << Verbose(4) << "Endpoints of Bond " << (*Runner) << " are both present: " << ParentList[Walker->nr]->getName() << " and " << ParentList[OtherAtom->nr]->getName() << "." << endl);
             mol->AddBond(ParentList[Walker->nr], ParentList[OtherAtom->nr], (*Runner)->BondDegree);
           }
Index: src/moleculelist.cpp
===================================================================
--- src/moleculelist.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/moleculelist.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -677,5 +677,5 @@
     while (Walker->next != (*ListRunner)->end) {
       Walker = Walker->next;
-      DoLog(0) && (Log() << Verbose(0) << Walker->Name << " ");
+      DoLog(0) && (Log() << Verbose(0) << Walker->getName() << " ");
     }
     DoLog(0) && (Log() << Verbose(0) << endl);
Index: src/parser.cpp
===================================================================
--- src/parser.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/parser.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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;
   }
@@ -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;
@@ -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;
   }
@@ -477,5 +477,5 @@
     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 +507,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;
@@ -621,5 +621,5 @@
   //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;
   }
@@ -700,5 +700,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;
     }
@@ -759,5 +759,5 @@
   //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;
   }
@@ -930,5 +930,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;
     }
@@ -1014,5 +1014,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 << "KeySetsContainer::ParseKeySets: Unable to open " << file.str() << ", is the directory correct?" << endl);
     return false;
   }
Index: src/tesselation.cpp
===================================================================
--- src/tesselation.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/tesselation.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -83,5 +83,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 +321,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;
 }
@@ -688,5 +688,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.endpoints[0]->node->getName() << "," << a.endpoints[1]->node->getName() << "," << a.endpoints[2]->node->getName() << "]";
   //  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 +948,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 +967,4 @@
   node = NULL;
   nr = -1;
-  Name = NULL;
 }
 ;
@@ -983,5 +982,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 +1134,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.";
@@ -1348,13 +1347,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;
       }
@@ -4292,5 +4291,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 +4713,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 +4798,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->endpoints[0]->node->getName() << "_" << LastTriangle->endpoints[1]->node->getName() << "_" << LastTriangle->endpoints[2]->node->getName();
+    NumberName = sstr.str();
     if (DoTecplotOutput) {
       string NameofTempFile(filename);
Index: src/tesselationhelpers.cpp
===================================================================
--- src/tesselationhelpers.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/tesselationhelpers.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -829,5 +829,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";
@@ -852,5 +852,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/LinkedCellUnitTest.cpp
===================================================================
--- src/unittests/LinkedCellUnitTest.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/unittests/LinkedCellUnitTest.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -196,6 +196,5 @@
   // 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->setName("test");
   Walker->x= Vector(1,1,1);
   CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(Walker) );
@@ -204,6 +203,5 @@
   // check out of bounds vectors
   Walker = World::getInstance().createAtom();
-  Walker->Name = Malloc<char>(6, "LinkedCellTest::SetIndexToNodeTest - Walker");
-  strcpy(Walker->Name, "test");
+  Walker->setName("test");
   Walker->x = Vector(0,-1,0);
   CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(Walker) );
Index: src/unittests/tesselation_boundarytriangleunittest.cpp
===================================================================
--- src/unittests/tesselation_boundarytriangleunittest.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/unittests/tesselation_boundarytriangleunittest.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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] );
 
Index: src/unittests/tesselation_insideoutsideunittest.cpp
===================================================================
--- src/unittests/tesselation_insideoutsideunittest.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/unittests/tesselation_insideoutsideunittest.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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);
Index: src/unittests/tesselationunittest.cpp
===================================================================
--- src/unittests/tesselationunittest.cpp	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ src/unittests/tesselationunittest.cpp	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -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);
Index: tests/testsuite.at
===================================================================
--- tests/testsuite.at	(revision f37746b3594740cf70d4b40cfba179f483b06139)
+++ tests/testsuite.at	(revision d8c0edb40a1eb91db8b50b37f1515e671fca963f)
@@ -11,9 +11,9 @@
 AT_KEYWORDS([options])
 AT_CHECK([pwd],[ignore],[ignore])
-AT_CHECK([../../molecuilder -v], 0, [stdout], [ignore])
+AT_CHECK([../../molecuilder -v 1], 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([../../molecuilder -e], 255, [ignore], [stderr])
 AT_CHECK([fgrep "Not enough or invalid arguments" stderr], 0, [ignore], [ignore])
 AT_CLEANUP
@@ -103,5 +103,5 @@
 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([../../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])
