Index: src/Parser/TremoloParser.cpp
===================================================================
--- src/Parser/TremoloParser.cpp	(revision 812155f3a4f2a57f31b9d8b82748c71eae962ddd)
+++ src/Parser/TremoloParser.cpp	(revision 9f8b0194b9ab5a952b72799ceaf29042e6fd1c9c)
@@ -38,4 +38,5 @@
 
 
+#include <algorithm>
 #include <boost/tokenizer.hpp>
 #include <iostream>
@@ -136,10 +137,11 @@
     }
   }
+  LOG(3, "usedFields after load contains: " << usedFields);
+
   // refresh atom::nr and atom::name
-  newmol->getAtomCount();
-
-  LOG(3, "usedFields after load contains: " << usedFields);
-
-  processNeighborInformation();
+  std::vector<atomId_t> atoms(newmol->getAtomCount());
+  std::transform(newmol->begin(), newmol->end(), atoms.begin(),
+      boost::bind(&atom::getId, _1));
+  processNeighborInformation(atoms);
   adaptImprData();
   adaptTorsion();
@@ -515,29 +517,34 @@
  * are found by their current ID and mapped to the corresponding atoms with the
  * Id found in the parsed file.
- */
-void FormatParser< tremolo >::processNeighborInformation() {
+ *
+ * @param atoms vector with all newly added (global) atomic ids
+ */
+void FormatParser< tremolo >::processNeighborInformation(const std::vector<atomId_t> &atoms) {
   if (!isUsedField("neighbors")) {
     return;
   }
 
-  for(std::map<const atomId_t, TremoloAtomInfoContainer>::iterator currentInfo = additionalAtomData.begin();
-    currentInfo != additionalAtomData.end(); currentInfo++
-  ) {
-    if (!currentInfo->second.neighbors_processed) {
-      for(std::vector<int>::iterator neighbor = currentInfo->second.neighbors.begin();
-        neighbor != currentInfo->second.neighbors.end(); neighbor++
-      ) {
-        LOG(3, "INFO: Creating bond between ("
-            << currentInfo->first
-            << ") and ("
-            << getGlobalId(*neighbor) << "|" << *neighbor << ")");
-        ASSERT(getGlobalId(*neighbor) != -1,
-            "FormatParser< tremolo >::processNeighborInformation() - global id to local id "
-            +toString(*neighbor)+" is unknown.");
-        World::getInstance().getAtom(AtomById(currentInfo->first))
-            ->addBond(WorldTime::getTime(), World::getInstance().getAtom(AtomById(getGlobalId(*neighbor))));
-      }
-      currentInfo->second.neighbors_processed = true;
-    }
+  for (std::vector<atomId_t>::const_iterator iter = atoms.begin(); iter != atoms.end(); ++iter) {
+    ASSERT(additionalAtomData.count(*iter) != 0,
+        "FormatParser< tremolo >::processNeighborInformation() - global id "
+        +toString(*iter)+" unknown in additionalAtomData.");
+    TremoloAtomInfoContainer &currentInfo = additionalAtomData[*iter];
+    ASSERT (!currentInfo.neighbors_processed,
+        "FormatParser< tremolo >::processNeighborInformation() - neighbors of new atom "
+        +toString(*iter)+" are already processed.");
+    for(std::vector<int>::const_iterator neighbor = currentInfo.neighbors.begin();
+      neighbor != currentInfo.neighbors.end(); neighbor++
+    ) {
+      LOG(3, "INFO: Creating bond between ("
+          << *iter
+          << ") and ("
+          << getGlobalId(*neighbor) << "|" << *neighbor << ")");
+      ASSERT(getGlobalId(*neighbor) != -1,
+          "FormatParser< tremolo >::processNeighborInformation() - global id to local id "
+          +toString(*neighbor)+" is unknown.");
+      World::getInstance().getAtom(AtomById(*iter))
+          ->addBond(WorldTime::getTime(), World::getInstance().getAtom(AtomById(getGlobalId(*neighbor))));
+    }
+    currentInfo.neighbors_processed = true;
   }
 }
Index: src/Parser/TremoloParser.hpp
===================================================================
--- src/Parser/TremoloParser.hpp	(revision 812155f3a4f2a57f31b9d8b82748c71eae962ddd)
+++ src/Parser/TremoloParser.hpp	(revision 9f8b0194b9ab5a952b72799ceaf29042e6fd1c9c)
@@ -65,5 +65,5 @@
   void parseAtomDataKeysLine(std::string line, int offset);
   void readNeighbors(std::stringstream* line, int numberOfNeighbors, int atomId);
-  void processNeighborInformation();
+  void processNeighborInformation(const std::vector<atomId_t> &atoms);
   void adaptImprData();
   void adaptTorsion();
