Index: src/Fragmentation/Exporters/SaturatedFragment.cpp
===================================================================
--- src/Fragmentation/Exporters/SaturatedFragment.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Fragmentation/Exporters/SaturatedFragment.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -340,9 +340,10 @@
 {
   // gather all atoms in a vector
-  std::vector<atom *> atoms;
+  std::vector<const atom *> atoms;
   for (KeySet::const_iterator iter = FullMolecule.begin();
       iter != FullMolecule.end();
       ++iter) {
-    atom * const Walker = World::getInstance().getAtom(AtomById(*iter));
+    const atom * const Walker = const_cast<const World &>(World::getInstance()).
+        getAtom(AtomById(*iter));
     ASSERT( Walker != NULL,
         "SaturatedFragment::OutputConfig() - id "
@@ -364,5 +365,5 @@
     std::stringstream output;
     output << "INFO: Contained atoms: ";
-    for (std::vector<atom *>::const_iterator iter = atoms.begin();
+    for (std::vector<const atom *>::const_iterator iter = atoms.begin();
         iter != atoms.end(); ++iter) {
       output << (*iter)->getName() << " ";
Index: src/Parser/FormatParser.hpp
===================================================================
--- src/Parser/FormatParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/FormatParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -76,5 +76,5 @@
     ASSERT(0, "FormatParser<>::load() - unspecialized function cannot be called."); 
   }
-  void save(std::ostream *file, const std::vector<atom *> &atoms)
+  void save(std::ostream *file, const std::vector<const atom *> &atoms)
   {
     ASSERT(0, "FormatParser<>::save() - unspecialized function cannot be called."); 
Index: src/Parser/FormatParserInterface.hpp
===================================================================
--- src/Parser/FormatParserInterface.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/FormatParserInterface.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -34,5 +34,5 @@
   FormatParserInterface() {}
   virtual ~FormatParserInterface() {}
-  virtual void save(std::ostream* file, const std::vector<atom *> &atoms)=0;
+  virtual void save(std::ostream* file, const std::vector<const atom *> &atoms)=0;
   virtual void load(std::istream* file)=0;
   virtual void setOstream(std::ostream* file)=0;
Index: src/Parser/FormatParserStorage.cpp
===================================================================
--- src/Parser/FormatParserStorage.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/FormatParserStorage.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -317,5 +317,6 @@
 bool FormatParserStorage::saveSelectedAtoms(std::ostream &output, std::string suffix)
 {
-  std::vector<atom *> atoms = World::getInstance().getSelectedAtoms();
+  const std::vector<const atom *> atoms =
+      const_cast<const World &>(World::getInstance()).getSelectedAtoms();
   return save(output, suffix, atoms);
 }
@@ -333,10 +334,11 @@
 bool FormatParserStorage::saveSelectedMolecules(std::ostream &output, std::string suffix)
 {
-  std::vector<molecule *> molecules = World::getInstance().getSelectedMolecules();
-  std::map<size_t, atom *> IdAtoms;
-  for (std::vector<molecule *>::const_iterator MolIter = molecules.begin();
+  const std::vector<const molecule *> molecules =
+      const_cast<const World &>(World::getInstance()).getSelectedMolecules();
+  std::map<size_t, const atom *> IdAtoms;
+  for (std::vector<const molecule *>::const_iterator MolIter = molecules.begin();
       MolIter != molecules.end();
       ++MolIter) {
-    for(molecule::iterator AtomIter = (*MolIter)->begin();
+    for(molecule::const_iterator AtomIter = (*MolIter)->begin();
         AtomIter != (*MolIter)->end();
         ++AtomIter) {
@@ -344,7 +346,7 @@
     }
   }
-  std::vector<atom *> atoms;
+  std::vector<const atom *> atoms;
   atoms.reserve(IdAtoms.size());
-  for (std::map<size_t, atom *>::const_iterator iter = IdAtoms.begin();
+  for (std::map<size_t, const atom *>::const_iterator iter = IdAtoms.begin();
       iter != IdAtoms.end();
       ++iter) {
@@ -361,5 +363,6 @@
 bool FormatParserStorage::saveWorld(std::ostream &output, std::string suffix)
 {
-  std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+  const std::vector<const atom *> atoms =
+      const_cast<const World &>(World::getInstance()).getAllAtoms();
   return save(output, suffix, atoms);
 }
@@ -370,5 +373,8 @@
  * \return true - storing ok, false - suffix unknown
  */
-bool FormatParserStorage::save(std::ostream &output, std::string suffix, const std::vector<atom *> &atoms)
+bool FormatParserStorage::save(
+    std::ostream &output,
+    std::string suffix,
+    const std::vector<const atom *> &atoms)
 {
   enum ParserTypes type = getTypeFromSuffix(suffix);
Index: src/Parser/FormatParserStorage.hpp
===================================================================
--- src/Parser/FormatParserStorage.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/FormatParserStorage.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -40,5 +40,5 @@
   bool load(std::string &filename);
   bool load(std::istream &input, std::string &suffix);
-  bool save(std::ostream &output, std::string suffix, const std::vector<atom *> &atoms);
+  bool save(std::ostream &output, std::string suffix, const std::vector<const atom *> &atoms);
   bool saveSelectedAtoms(std::ostream &output, std::string suffix);
   bool saveSelectedMolecules(std::ostream &output, std::string suffix);
Index: src/Parser/FormatParser_common.cpp
===================================================================
--- src/Parser/FormatParser_common.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/FormatParser_common.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -84,5 +84,6 @@
 void FormatParser_common::update(Observable *publisher) {
   if (saveStream != NULL) { // only store when a saveStream is given
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     save(saveStream, atoms);
   }
Index: src/Parser/MpqcParser.cpp
===================================================================
--- src/Parser/MpqcParser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/MpqcParser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -291,5 +291,5 @@
  * \param atoms atoms to store
  */
-void FormatParser< mpqc >::save(ostream *file, const std::vector<atom *> &atoms)
+void FormatParser< mpqc >::save(ostream *file, const std::vector<const atom *> &atoms)
 {
   Vector center;
Index: src/Parser/MpqcParser.hpp
===================================================================
--- src/Parser/MpqcParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/MpqcParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -52,5 +52,5 @@
 
   void load(std::istream *file);
-  void save(std::ostream *file, const std::vector<atom *> &atoms); 
+  void save(std::ostream *file, const std::vector<const atom *> &atoms);
 
   /** Getter for parameter set.
Index: src/Parser/PcpParser.cpp
===================================================================
--- src/Parser/PcpParser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/PcpParser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -402,5 +402,5 @@
  * \param atoms atoms to store
  */
-void FormatParser< pcp >::save(std::ostream* file, const std::vector<atom *> &atoms)
+void FormatParser< pcp >::save(std::ostream* file, const std::vector<const atom *> &atoms)
 {
   LOG(2, "DEBUG: Saving changes to pcp.");
@@ -509,8 +509,8 @@
  * \param &allatoms all atoms to store away
  */
-void FormatParser< pcp >::CalculateOrbitals(const std::vector<atom *> &allatoms)
+void FormatParser< pcp >::CalculateOrbitals(const std::vector<const atom *> &allatoms)
 {
   PlaneWaveSpecifics.MaxPsiDouble = PlaneWaveSpecifics.PsiMaxNoDown = PlaneWaveSpecifics.PsiMaxNoUp = PlaneWaveSpecifics.PsiType = 0;
-  for (vector<atom *>::const_iterator runner = allatoms.begin(); runner != allatoms.end(); ++runner) {
+  for (vector<const atom *>::const_iterator runner = allatoms.begin(); runner != allatoms.end(); ++runner) {
     PlaneWaveSpecifics.MaxPsiDouble += (*runner)->getType()->getNoValenceOrbitals();
   }
@@ -542,10 +542,13 @@
  * \param &ZtoIndexMap map of which atoms belong to which ion number
  */
-void FormatParser< pcp >::OutputElements(ostream *file, const std::vector<atom *> &allatoms, map<int, int> &ZtoIndexMap)
+void FormatParser< pcp >::OutputElements(
+    ostream *file,
+    const std::vector<const atom *> &allatoms,
+    map<int, int> &ZtoIndexMap)
 {
   map<int, int> PresentElements;
   pair <   map<int, int>::iterator, bool > Inserter;
   // insert all found elements into the map
-  for (vector<atom *>::const_iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
+  for (vector<const atom *>::const_iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
     Inserter = PresentElements.insert(pair<int, int>((*AtomRunner)->getType()->getAtomicNumber(), 1));
     if (!Inserter.second) // increase if present
@@ -572,9 +575,12 @@
  * \param &ZtoIndexMap map of which atoms belong to which ion number
  */
-void FormatParser< pcp >::OutputAtoms(ostream *file, const std::vector<atom *> &allatoms, map<int, int> &ZtoIndexMap)
+void FormatParser< pcp >::OutputAtoms(
+    ostream *file,
+    const std::vector<const atom *> &allatoms,
+    map<int, int> &ZtoIndexMap)
 {
   *file << "#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)" << endl;
   map<int, int> ZtoCountMap;
-  map<atom *, int> AtomtoCountMap;
+  map<const atom *, int> AtomtoCountMap;
   pair <   map<int, int>::iterator, bool > Inserter;
   bool ContinueStatus = true;
@@ -584,5 +590,5 @@
     int nr = 0;
     ContinueStatus = false;
-    for (vector<atom *>::const_iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
+    for (vector<const atom *>::const_iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
       if ((*AtomRunner)->getTrajectorySize() > step) {
         if (step == 0) {  // fill list only on first step
Index: src/Parser/PcpParser.hpp
===================================================================
--- src/Parser/PcpParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/PcpParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -49,5 +49,5 @@
   virtual ~FormatParser();
   void load(std::istream* file);
-  void save(std::ostream* file, const std::vector<atom *> &atoms);
+  void save(std::ostream* file, const std::vector<const atom *> &atoms);
 
   bool operator==(const FormatParser< pcp >& b) const;
@@ -56,7 +56,14 @@
 
   void ParseThermostats(class ConfigFileBuffer * const fb);
-  void OutputAtoms(std::ostream *file, const std::vector<atom *> &allatoms, std::map<int, int> &ZtoIndexMap);
-  void OutputElements(std::ostream *file, const std::vector<atom *> &allatoms, std::map<int, int> &ZtoIndexMap);
-  void CalculateOrbitals(const std::vector<atom *> &allatoms);
+  void OutputAtoms(
+      std::ostream *file,
+      const std::vector<const atom *> &allatoms,
+      std::map<int, int> &ZtoIndexMap);
+  void OutputElements(
+      std::ostream *file,
+      const std::vector<const atom *> &allatoms,
+      std::map<int, int> &ZtoIndexMap);
+  void CalculateOrbitals(
+      const std::vector<const atom *> &allatoms);
 
   class StructParallelization {
Index: src/Parser/PdbParser.cpp
===================================================================
--- src/Parser/PdbParser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/PdbParser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -194,5 +194,7 @@
  * \param atoms atoms to store
  */
-void FormatParser< pdb >::save(ostream* file, const std::vector<atom *> &AtomList)
+void FormatParser< pdb >::save(
+    ostream* file,
+    const std::vector<const atom *> &AtomList)
 {
   LOG(2, "DEBUG: Saving changes to pdb.");
@@ -211,5 +213,5 @@
   // (new atoms might have been added)
   int AtomNo = 1; // serial number starts at 1 in pdb
-  for (vector<atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
+  for (vector<const atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
     PdbAtomInfoContainer &atomInfo = getadditionalAtomData(*atomIt);
     associateLocaltoGlobalId(AtomNo, (*atomIt)->getId());
@@ -238,5 +240,5 @@
       std::map<size_t,size_t> MolIdMap;
       size_t MolNo = 1;  // residue number starts at 1 in pdb
-      for (vector<atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
+      for (vector<const atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
         const molecule *mol = (*atomIt)->getMolecule();
         if ((mol != NULL) && (MolIdMap.find(mol->getId()) == MolIdMap.end())) {
@@ -254,5 +256,5 @@
 
       // write ATOMs
-      for (vector<atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
+      for (vector<const atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
         PdbAtomInfoContainer &atomInfo = getadditionalAtomData(*atomIt);
         // gather info about residue
@@ -298,5 +300,5 @@
 
       // write CONECTs
-      for (vector<atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
+      for (vector<const atom *>::const_iterator atomIt = AtomList.begin(); atomIt != AtomList.end(); atomIt++) {
         writeNeighbors(file, 4, *atomIt);
       }
@@ -357,5 +359,5 @@
  * @return
  */
-PdbAtomInfoContainer& FormatParser< pdb >::getadditionalAtomData(atom *_atom)
+PdbAtomInfoContainer& FormatParser< pdb >::getadditionalAtomData(const atom * const _atom)
 {
   if (additionalAtomData.find(_atom->getId()) != additionalAtomData.end()) {
@@ -498,5 +500,8 @@
  * \param *currentAtom to the atom of which to take the neighbor information
  */
-void FormatParser< pdb >::writeNeighbors(ostream* file, int MaxnumberOfNeighbors, atom* currentAtom) {
+void FormatParser< pdb >::writeNeighbors(
+    ostream* file,
+    int MaxnumberOfNeighbors,
+    const atom * const currentAtom) {
   int MaxNo = MaxnumberOfNeighbors;
   int charsleft = 80;
Index: src/Parser/PdbParser.hpp
===================================================================
--- src/Parser/PdbParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/PdbParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -53,8 +53,8 @@
   virtual ~FormatParser();
   void load(std::istream* file);
-  void save(std::ostream* file, const std::vector<atom *> &atoms);
+  void save(std::ostream* file, const std::vector<const atom *> &atoms);
 
   bool operator==(const FormatParser< pdb>& b) const;
-  void printAtomInfo(const atom *newAtom) const;
+  void printAtomInfo(const atom * const newAtom) const;
 
 protected:
@@ -71,10 +71,10 @@
 //  std::string adaptIdDependentDataString(std::string data);
   bool isUsedField(std::string fieldName);
-  void writeNeighbors(std::ostream* file, int numberOfNeighbors, atom* currentAtom);
+  void writeNeighbors(std::ostream* file, int numberOfNeighbors, const atom* currentAtom);
   void saveLine(std::ostream* file, const PdbAtomInfoContainer &atomInfo);
 
   // internal getter and setter
   bool isPresentadditionalAtomData(const atomId_t _id) const;
-  PdbAtomInfoContainer& getadditionalAtomData(atom *_atom);
+  PdbAtomInfoContainer& getadditionalAtomData(const atom *_atom);
 
   // internal helper functions
Index: src/Parser/Psi3Parser.cpp
===================================================================
--- src/Parser/Psi3Parser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/Psi3Parser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -183,5 +183,5 @@
  * \param atoms atoms to store
  */
-void FormatParser< psi3 >::save(ostream *file, const std::vector<atom *> &atoms)
+void FormatParser< psi3 >::save(ostream *file, const std::vector<const atom *> &atoms)
 {
   Vector center;
@@ -189,5 +189,5 @@
 
   // calculate center
-  for (std::vector<atom *>::const_iterator runner = atoms.begin();runner != atoms.end(); ++runner)
+  for (std::vector<const atom *>::const_iterator runner = atoms.begin();runner != atoms.end(); ++runner)
     center += (*runner)->getPosition();
   center.Scale(1./(double)atoms.size());
@@ -258,9 +258,10 @@
 }
 
-unsigned int FormatParser< psi3 >::calculateMultiplicity(const std::vector<atom *> &atoms) const
+unsigned int FormatParser< psi3 >::calculateMultiplicity(
+    const std::vector<const atom *> &atoms) const
 {
   // add up the number of electrons
   double valencies = 0.;
-  BOOST_FOREACH(atom *_atom, atoms) {
+  BOOST_FOREACH(const atom *_atom, atoms) {
     valencies += _atom->getType()->getAtomicNumber();
   }
@@ -268,5 +269,5 @@
   // add doubly up all bond degrees (two electrons per bond)
   unsigned int degrees = 0;
-  BOOST_FOREACH(atom *_atom, atoms) {
+  BOOST_FOREACH(const atom *_atom, atoms) {
     BOOST_FOREACH(bond::ptr _bond, _atom->getListOfBonds()) {
       degrees += 2*_bond->getDegree();
Index: src/Parser/Psi3Parser.hpp
===================================================================
--- src/Parser/Psi3Parser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/Psi3Parser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -52,5 +52,5 @@
 
   void load(std::istream *file);
-  void save(std::ostream *file, const std::vector<atom *> &atoms); 
+  void save(std::ostream *file, const std::vector<const atom *> &atoms);
 
   /** Getter for parameter set.
@@ -74,5 +74,5 @@
    * \return mulitplicity
    */
-  unsigned int calculateMultiplicity(const std::vector<atom *> &atoms) const;
+  unsigned int calculateMultiplicity(const std::vector<const atom *> &atoms) const;
 
   static ConvertTo<bool> Converter;
Index: src/Parser/TremoloParser.cpp
===================================================================
--- src/Parser/TremoloParser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/TremoloParser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -178,5 +178,7 @@
  * \param atoms atoms to store
  */
-void FormatParser< tremolo >::save(std::ostream* file, const std::vector<atom *> &AtomList) {
+void FormatParser< tremolo >::save(
+    std::ostream* file,
+    const std::vector<const atom *> &AtomList) {
   LOG(2, "DEBUG: Saving changes to tremolo.");
 
@@ -203,5 +205,5 @@
 
   // store particles
-  for (std::vector<atom*>::const_iterator  atomIt = AtomList.begin();
+  for (std::vector<const atom*>::const_iterator  atomIt = AtomList.begin();
       atomIt != AtomList.end(); ++atomIt)
     saveLine(file, *atomIt);
@@ -297,9 +299,10 @@
  * \param atoms atoms to store
  */
-void FormatParser< tremolo >::distributeContinuousIds(const std::vector<atom *> &AtomList)
+void FormatParser< tremolo >::distributeContinuousIds(
+    const std::vector<const atom *> &AtomList)
 {
   resetIdAssociations();
   atomId_t lastid = 0;
-  for (std::vector<atom*>::const_iterator atomIt = AtomList.begin();
+  for (std::vector<const atom*>::const_iterator atomIt = AtomList.begin();
       atomIt != AtomList.end(); ++atomIt)
     associateLocaltoGlobalId(++lastid, (*atomIt)->getId());
@@ -368,5 +371,7 @@
  * \param reference to the atom of which information should be written
  */
-void FormatParser< tremolo >::saveLine(std::ostream* file, const atom* currentAtom)
+void FormatParser< tremolo >::saveLine(
+    std::ostream* file,
+    const atom * const currentAtom)
 {
   TremoloKey::atomDataKey currentField;
@@ -495,5 +500,8 @@
  * \param reference to the atom of which to take the neighbor information
  */
-void FormatParser< tremolo >::writeNeighbors(std::ostream* file, const int numberOfNeighbors, const atom* currentAtom) {
+void FormatParser< tremolo >::writeNeighbors(
+    std::ostream* file,
+    const int numberOfNeighbors,
+    const atom * const currentAtom) {
   const BondList& ListOfBonds = currentAtom->getListOfBonds();
   // sort bonded indices
@@ -752,5 +760,8 @@
  * \param atomid world id of the atom the information belongs to
  */
-void FormatParser< tremolo >::readNeighbors(std::stringstream* line, const int numberOfNeighbors, const int atomId) {
+void FormatParser< tremolo >::readNeighbors(
+    std::stringstream* line,
+    const int numberOfNeighbors,
+    const int atomId) {
   int neighborId = 0;
   for (int i = 0; i < numberOfNeighbors; i++) {
@@ -772,5 +783,7 @@
  * \return true if the field name is used
  */
-bool FormatParser< tremolo >::isUsedField(const usedFields_t &fields, const std::string &fieldName) const
+bool FormatParser< tremolo >::isUsedField(
+    const usedFields_t &fields,
+    const std::string &fieldName) const
 {
   bool fieldNameExists = false;
@@ -792,5 +805,6 @@
  * @param atoms vector with all newly added (global) atomic ids
  */
-void FormatParser< tremolo >::processNeighborInformation(const std::vector<atomId_t> &atoms) {
+void FormatParser< tremolo >::processNeighborInformation(
+    const std::vector<atomId_t> &atoms) {
   if (!isUsedField(usedFields_load, "neighbors")) {
     return;
Index: src/Parser/TremoloParser.hpp
===================================================================
--- src/Parser/TremoloParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/TremoloParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -53,5 +53,5 @@
   virtual ~FormatParser();
   void load(std::istream* file);
-  void save(std::ostream* file, const std::vector<atom *> &atoms);
+  void save(std::ostream* file, const std::vector<const atom *> &atoms);
   std::string getAtomData() const;
   void setAtomData(const std::string &atomdata_string);
@@ -107,9 +107,9 @@
   std::string adaptIdDependentDataString(const std::string &data, const boost::function<int (const int)> &idgetter);
   bool isUsedField(const usedFields_t &fields, const std::string &fieldName) const;
-  void writeNeighbors(std::ostream* file, const int numberOfNeighbors, const atom* currentAtom);
-  void saveLine(std::ostream* file, const atom* currentAtom);
+  void writeNeighbors(std::ostream* file, const int numberOfNeighbors, const atom* const currentAtom);
+  void saveLine(std::ostream* file, const atom* const currentAtom);
   void save_AtomDataLine(std::ostream* file) const;
   void save_BoxLine(std::ostream* file) const;
-  void distributeContinuousIds(const std::vector<atom *> &AtomList);
+  void distributeContinuousIds(const std::vector<const atom *> &AtomList);
   void makeUsedFieldsUnique(usedFields_t &fields) const;
 
Index: src/Parser/XmlParser.cpp
===================================================================
--- src/Parser/XmlParser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/XmlParser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -215,5 +215,7 @@
  * \param atoms atoms to store
  */
-void FormatParser< xml >::save(std::ostream* file, const std::vector<atom *> &atoms) {
+void FormatParser< xml >::save(
+    std::ostream* file,
+    const std::vector<const atom *> &atoms) {
   LOG(2, "DEBUG: Saving changes to xml.");
 
@@ -224,5 +226,5 @@
     data.config.periodicity[i] = domain.getCondition(i) == BoundaryConditions::Wrap;
   data.config.p.clear();
-  for(std::vector<atom*>::const_iterator it = atoms.begin(); it != atoms.end(); it++) {
+  for(std::vector<const atom*>::const_iterator it = atoms.begin(); it != atoms.end(); it++) {
     struct scafacos::configuration::particle p;
     const additionalAtomInfo &atomInfo = getAtomData(*(*it));
@@ -301,5 +303,6 @@
 }
 
-const FormatParser< xml >::additionalAtomInfo& FormatParser< xml >::getAtomData(const atom &_atom) const
+const FormatParser< xml >::additionalAtomInfo&
+FormatParser< xml >::getAtomData(const atom &_atom) const
 {
   {
Index: src/Parser/XmlParser.hpp
===================================================================
--- src/Parser/XmlParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/XmlParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -54,5 +54,5 @@
   virtual ~FormatParser();
   void load(std::istream* file);
-  void save(std::ostream* file, const std::vector<atom *> &atoms);
+  void save(std::ostream* file, const std::vector<const atom *> &atoms);
 
 protected:
Index: src/Parser/XyzParser.cpp
===================================================================
--- src/Parser/XyzParser.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/XyzParser.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -166,5 +166,7 @@
  * \param atoms atoms to store
  */
-void FormatParser< xyz >::save(ostream* file, const std::vector<atom *> &atoms) {
+void FormatParser< xyz >::save(
+    ostream* file,
+    const std::vector<const atom *> &atoms) {
   LOG(2, "DEBUG: Saving changes to xyz.");
 
@@ -172,5 +174,5 @@
   size_t min_trajectories = std::numeric_limits<size_t>::max();
   size_t max_trajectories = std::numeric_limits<size_t>::min();
-  for (std::vector<atom *>::const_iterator iter = atoms.begin();
+  for (std::vector<const atom *>::const_iterator iter = atoms.begin();
       iter != atoms.end();
       ++iter) {
@@ -206,5 +208,5 @@
     *file << atoms.size() << endl << "\t" << comment << endl;
 
-    for(vector<atom*>::const_iterator it = atoms.begin(); it != atoms.end(); it++) {
+    for(vector<const atom*>::const_iterator it = atoms.begin(); it != atoms.end(); it++) {
       *file << (*it)->getType()->getSymbol();
       *file << "\t" << printCoordinate((*it)->atStep(0, step));
Index: src/Parser/XyzParser.hpp
===================================================================
--- src/Parser/XyzParser.hpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/XyzParser.hpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -45,5 +45,5 @@
   virtual ~FormatParser();
   void load(std::istream* file);
-  void save(std::ostream* file, const std::vector<atom *> &atoms);
+  void save(std::ostream* file, const std::vector<const atom *> &atoms);
 
 private:
Index: src/Parser/unittests/ParserMpqcUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserMpqcUnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserMpqcUnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -296,5 +296,6 @@
   // create two stringstreams, one stored, one created
 
-  std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+  std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+      getAllAtoms();
   {
     // compare both configs for CLHF
Index: src/Parser/unittests/ParserPcpUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserPcpUnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserPcpUnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -161,5 +161,5 @@
   input.clear();
 
-  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
+  CPPUNIT_ASSERT_EQUAL(3, const_cast<const World &>(World::getInstance()).numAtoms());
 
   // check that equality function is ok
@@ -167,5 +167,6 @@
 
   stringstream output;
-  std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+  std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+      getAllAtoms();
   parser->save(&output, atoms);
 
Index: src/Parser/unittests/ParserPdbUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserPdbUnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserPdbUnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -106,8 +106,9 @@
   input.clear();
 
-  CPPUNIT_ASSERT_EQUAL(6, World::getInstance().numAtoms());
+  CPPUNIT_ASSERT_EQUAL(6, const_cast<const World &>(World::getInstance()).numAtoms());
 
   stringstream output;
-  std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+  std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+      getAllAtoms();
   parser->save(&output, atoms);
 
Index: src/Parser/unittests/ParserPsi3UnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserPsi3UnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserPsi3UnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -340,5 +340,6 @@
 
   // create two stringstreams, one stored, one created
-  std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+  std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+      getAllAtoms();
   {
     // compare both configs for RHF
Index: src/Parser/unittests/ParserTremoloUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserTremoloUnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserTremoloUnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -136,5 +136,6 @@
     input << Tremolo_Atomdata1;
     parser->load(&input);
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     parser->save(&output, atoms);
 //    std::cout << output.str() << std::endl;
@@ -149,5 +150,6 @@
     input << Tremolo_Atomdata2;
     parser->load(&input);
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     parser->save(&output, atoms);
 //    std::cout << output.str() << std::endl;
@@ -227,7 +229,8 @@
     input << Tremolo_improper;
     parser->load(&input);
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
-    parser->save(&output, atoms);
-    CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
+    parser->save(&output, atoms);
+    CPPUNIT_ASSERT_EQUAL(3, const_cast<const World &>(World::getInstance()).numAtoms());
 //    std::cout << output.str() << std::endl;
     CPPUNIT_ASSERT(output.str().find("3-1,1-3") != string::npos);
@@ -244,7 +247,8 @@
     input << Tremolo_torsion;
     parser->load(&input);
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
-    parser->save(&output, atoms);
-    CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
+    parser->save(&output, atoms);
+    CPPUNIT_ASSERT_EQUAL(3, const_cast<const World &>(World::getInstance()).numAtoms());
 //    std::cout << output.str() << std::endl;
     CPPUNIT_ASSERT(output.str().find("3-1,1-3") != string::npos);
@@ -262,5 +266,6 @@
     newAtom->setType(1);
     parser->setAtomData("x=3 u=3 F=3 stress Id neighbors=5 imprData GroupMeasureTypeNo type extType name resName chainID resSeq occupancy tempFactor segID Charge charge GrpTypeNo torsion");
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     parser->save(&output, atoms);
 //    std::cout << output.str() << std::endl;
Index: src/Parser/unittests/ParserXmlUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserXmlUnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserXmlUnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -100,5 +100,5 @@
   input.clear();
 
-  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
+  CPPUNIT_ASSERT_EQUAL(3, const_cast<const World &>(World::getInstance()).numAtoms());
 
   // store and parse in again
@@ -107,5 +107,6 @@
 //    std::string second;
     std::stringstream output;
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     parser->save(&output, atoms);
     std::cout << output.str();
Index: src/Parser/unittests/ParserXyzUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserXyzUnitTest.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/Parser/unittests/ParserXyzUnitTest.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -106,10 +106,11 @@
   input.clear();
 
-  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
+  CPPUNIT_ASSERT_EQUAL(3, const_cast<const World &>(World::getInstance()).numAtoms());
 
   // store and parse in again
   {
     stringstream output;
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     parser->save(&output, atoms);
     input << output.str();
@@ -157,10 +158,11 @@
 
   // 3 not 6 atoms!
-  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
+  CPPUNIT_ASSERT_EQUAL(3, const_cast<const World &>(World::getInstance()).numAtoms());
 
   // store and parse in again
   {
     stringstream output;
-    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
+    std::vector<const atom *> atoms = const_cast<const World &>(World::getInstance()).
+        getAllAtoms();
     parser->save(&output, atoms);
     input << output.str();
Index: src/moleculelist.cpp
===================================================================
--- src/moleculelist.cpp	(revision 99db9baca1782e208fb17d2cc6ace3f4cadb568b)
+++ src/moleculelist.cpp	(revision fac58f919238a82bc5d6cab2eb5c9621c85c941c)
@@ -595,8 +595,8 @@
 
       // output file
-      std::vector<atom *> atoms;
-      // TODO: Convert iterator to const_iterator when FormatParserStorage::save() has vector<const atom *>
-      // We need iterator here because FormatParserStorage::save() need vector<atom *> not const refs.
-      for (molecule::iterator iter = (*ListRunner)->begin(); iter != (*ListRunner)->end(); ++iter) {
+      std::vector<const atom *> atoms;
+      for (molecule::const_iterator iter = const_cast<const molecule *>(*ListRunner)->begin();
+          iter != const_cast<const molecule *>(*ListRunner)->end();
+          ++iter) {
         atoms.push_back(*iter);
       }
