Index: src/periodentafel.cpp
===================================================================
--- src/periodentafel.cpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
+++ src/periodentafel.cpp	(revision 61745ccc38dc041f5dfcbdd3771f3ac5c9c786cf)
@@ -70,7 +70,7 @@
  * \param *pointer element to be removed
  */
-void periodentafel::RemoveElement(element * const pointer)
-{
-  RemoveElement(pointer->getNumber());
+size_t periodentafel::RemoveElement(element * const pointer)
+{
+  return RemoveElement(pointer->getNumber());
 };
 
@@ -78,7 +78,7 @@
  * \param Z element to be removed
  */
-void periodentafel::RemoveElement(atomicNumber_t Z)
-{
-  elements.erase(Z);
+size_t periodentafel::RemoveElement(atomicNumber_t Z)
+{
+  return elements.erase(Z);
 };
 
@@ -233,5 +233,9 @@
   strncat(filename, STANDARDELEMENTSDB, MAXSTRINGSIZE-strlen(filename));
   input.open(filename);
+  if (!input.fail())
+    DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as elements database." << endl);
   status = status && LoadElementsDatabase(&input);
+  input.close();
+  input.clear();
 
   // fill valence DB per element
@@ -240,5 +244,9 @@
   strncat(filename, STANDARDVALENCEDB, MAXSTRINGSIZE-strlen(filename));
   input.open(filename);
+  if (!input.fail())
+    DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as valence database." << endl);
   otherstatus = otherstatus && LoadValenceDatabase(&input);
+  input.close();
+  input.clear();
 
   // fill orbitals DB per element
@@ -247,5 +255,9 @@
   strncat(filename, STANDARDORBITALDB, MAXSTRINGSIZE-strlen(filename));
   input.open(filename);
+  if (!input.fail())
+    DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as orbitals database." << endl);
   otherstatus = otherstatus && LoadOrbitalsDatabase(&input);
+  input.close();
+  input.clear();
 
   // fill H-BondAngle DB per element
@@ -254,5 +266,9 @@
   strncat(filename, STANDARDHBONDANGLEDB, MAXSTRINGSIZE-strlen(filename));
   input.open(filename);
+  if (!input.fail())
+    DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as H bond angle database." << endl);
   otherstatus = otherstatus && LoadHBondAngleDatabase(&input);
+  input.close();
+  input.clear();
 
   // fill H-BondDistance DB per element
@@ -261,5 +277,9 @@
   strncat(filename, STANDARDHBONDDISTANCEDB, MAXSTRINGSIZE-strlen(filename));
   input.open(filename);
+  if (!input.fail())
+    DoLog(0) && (Log() << Verbose(0) << "Using " << filename << " as H bond length database." << endl);
   otherstatus = otherstatus && LoadHBondLengthsDatabase(&input);
+  input.close();
+  input.clear();
 
   if (!otherstatus){
@@ -278,4 +298,5 @@
   bool status = true;
   int counter = 0;
+  pair< std::map<atomicNumber_t,element*>::iterator, bool > InserterTest;
   if (!(*input).fail()) {
     (*input).getline(header1, MAXSTRINGSIZE);
@@ -303,14 +324,16 @@
       //(*input) >> ws;
       (*input) >> ws;
-      if (elements.count(neues->Z)) {// if element already present, remove and delete it
-        element * const Elemental = FindElement(neues->Z);
-        ASSERT(Elemental != NULL, "element should be present but is not??");
-        RemoveElement(Elemental);
-        delete(Elemental);
-      }
       //neues->Output((ofstream *)&cout);
-      if ((neues->Z > 0) && (neues->Z < MAX_ELEMENTS)) {
-        DoLog(0) && (Log() << Verbose(0) << " " << neues->symbol);
-        elements[neues->getNumber()] = neues;
+      if ((neues->getNumber() > 0) && (neues->getNumber() < MAX_ELEMENTS)) {
+        if (elements.count(neues->getNumber())) {// if element already present, remove and delete old one (i.e. replace it)
+          //cout << neues->symbol << " is present already." << endl;
+          element * const Elemental = FindElement(neues->getNumber());
+          ASSERT(Elemental != NULL, "element should be present but is not??");
+          *Elemental = *neues;
+        } else {
+          InserterTest = elements.insert(pair <atomicNumber_t,element*> (neues->getNumber(), neues));
+          ASSERT(InserterTest.second, "Could not insert new element into periodentafel on LoadElementsDatabase().");
+        }
+        DoLog(0) && (Log() << Verbose(0) << " " << elements[neues->getNumber()]->symbol);
         counter++;
       } else {
@@ -321,6 +344,8 @@
     }
     DoLog(0) && (Log() << Verbose(0) << endl);
-  } else
+  } else {
+    DoeLog(1) && (eLog() << Verbose(1) << "Could not open the database." << endl);
     status = false;
+  }
 
   if (counter == 0)
Index: src/periodentafel.hpp
===================================================================
--- src/periodentafel.hpp	(revision 7e6b008345766c6fe1944b6cb57c2847aa592191)
+++ src/periodentafel.hpp	(revision 61745ccc38dc041f5dfcbdd3771f3ac5c9c786cf)
@@ -44,6 +44,6 @@
 
   iterator AddElement(element * const pointer);
-  void RemoveElement(element * const pointer);
-  void RemoveElement(atomicNumber_t);
+  size_t RemoveElement(element * const pointer);
+  size_t RemoveElement(atomicNumber_t);
   void CleanupPeriodtable();
   element * const FindElement(atomicNumber_t) const;
