Index: src/Parser/TremoloParser.cpp
===================================================================
--- src/Parser/TremoloParser.cpp	(revision 3d0892b89b1f6f981cce9898d7abd17bfafd158f)
+++ src/Parser/TremoloParser.cpp	(revision 2034f3c5f9db8e8024a0f4db0cd3d1231e98ac24)
@@ -41,4 +41,5 @@
 
 #include <algorithm>
+#include <boost/lexical_cast.hpp>
 #include <boost/tokenizer.hpp>
 #include <iostream>
@@ -308,4 +309,22 @@
         *file << "\t";
         break;
+      case TremoloKey::charge :
+        if (currentAtom->getCharge() == 0.) {
+          if (additionalAtomData.count(currentAtom->getId())) {
+            LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << additionalAtomData[currentAtom->getId()].get(currentField));
+            *file << additionalAtomData[currentAtom->getId()].get(currentField);
+          } else if (additionalAtomData.count(currentAtom->GetTrueFather()->getId())) {
+            LOG(3, "Writing for type " << knownKeyNames[currentField] << " stuff from father: " << additionalAtomData[currentAtom->GetTrueFather()->getId()].get(currentField));
+            *file << additionalAtomData[currentAtom->GetTrueFather()->getId()].get(currentField);
+          } else {
+            LOG(3, "Writing for type " << knownKeyNames[currentField] << " AtomInfo::charge : " << currentAtom->getCharge());
+            *file << currentAtom->getCharge();
+          }
+        } else {
+          LOG(3, "Writing for type " << knownKeyNames[currentField] << " AtomInfo::charge : " << currentAtom->getCharge());
+          *file << currentAtom->getCharge();
+        }
+        *file << "\t";
+        break;
       default :
         if (additionalAtomData.count(currentAtom->getId())) {
@@ -482,4 +501,11 @@
             atoi(it->substr(it->find("=") + 1, 1).c_str()), atomid);
         break;
+      case TremoloKey::charge :
+        ASSERT(tok_iter != tokens.end(), "FormatParser< tremolo >::readAtomDataLine() - no value for "+keyName+"!");
+        LOG(4, "INFO: Parsing key " << keyName << " with next token " << *tok_iter);
+        atomInfo->set(currentField, *tok_iter);
+        newAtom->setCharge(boost::lexical_cast<double>(*tok_iter));
+        tok_iter++;
+        break;
       default :
         ASSERT(tok_iter != tokens.end(), "FormatParser< tremolo >::readAtomDataLine() - no value for "+keyName+"!");
Index: src/Parser/XmlParser.cpp
===================================================================
--- src/Parser/XmlParser.cpp	(revision 3d0892b89b1f6f981cce9898d7abd17bfafd158f)
+++ src/Parser/XmlParser.cpp	(revision 2034f3c5f9db8e8024a0f4db0cd3d1231e98ac24)
@@ -164,4 +164,5 @@
     newAtom->setType(World::getInstance().getPeriode()->FindElement((atomicNumber_t)1));
     newAtom->setPosition(p.position);
+    newAtom->setCharge(p.q);
     newmol->AddAtom(newAtom);
     additionalAtomInfo atomInfo(p.q, p.potential, p.field);
@@ -201,5 +202,5 @@
     const additionalAtomInfo &atomInfo = getAtomData(*(*it));
     p.position = (*it)->getPosition();
-    p.q = atomInfo.charge;
+    p.q = (*it)->getCharge();
     p.potential = atomInfo.potential;
     p.field = atomInfo.field;
Index: src/Parser/unittests/Makefile.am
===================================================================
--- src/Parser/unittests/Makefile.am	(revision 3d0892b89b1f6f981cce9898d7abd17bfafd158f)
+++ src/Parser/unittests/Makefile.am	(revision 2034f3c5f9db8e8024a0f4db0cd3d1231e98ac24)
@@ -33,7 +33,4 @@
   ParserXmlUnitTest \
   ParserXyzUnitTest
-
-XFAIL_TESTS += \
-	ParserXmlUnitTest 
 
 TESTS += $(PARSERTESTS)
Index: src/Parser/unittests/ParserXmlUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserXmlUnitTest.cpp	(revision 3d0892b89b1f6f981cce9898d7abd17bfafd158f)
+++ src/Parser/unittests/ParserXmlUnitTest.cpp	(revision 2034f3c5f9db8e8024a0f4db0cd3d1231e98ac24)
@@ -104,13 +104,4 @@
     CPPUNIT_ASSERT( parser->data == parser_control->data );
     delete parser_control;
-//    // check for non-empty streams
-//    input.peek();
-//    output.peek();
-//    CPPUNIT_ASSERT(input.good() && output.good());
-//    // check equality of streams per line (for debugging)
-//    for (; std::getline(input, first) && std::getline(output, second); ) {
-//      std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl;
-//      CPPUNIT_ASSERT(first == second);
-//    }
   }
 }
