Index: src/unittests/ListOfBondsUnitTest.cpp
===================================================================
--- src/unittests/ListOfBondsUnitTest.cpp	(revision af897f5c8ae6115ef8c2ea41ec18740adb18eaf0)
+++ src/unittests/ListOfBondsUnitTest.cpp	(revision 8aba3cf36e533e8aa7e73d15c6c4a093625770cf)
@@ -34,4 +34,5 @@
 #include "periodentafel.hpp"
 #include "World.hpp"
+#include "WorldTime.hpp"
 
 #include "ListOfBondsUnitTest.hpp"
@@ -314,4 +315,5 @@
   CPPUNIT_ASSERT( Binder != NULL );
 
+  // access test via CurrentTime
   {
     const BondList& ListOfBonds = atom1->getListOfBonds();
@@ -328,5 +330,5 @@
   World::getInstance().destroyAtom(atom2);
 
-  // check bond if removed from other atom
+  // check bond if removed from other atom for all time steps
   {
     const BondList& ListOfBonds = atom1->getListOfBonds();
@@ -337,2 +339,96 @@
   CPPUNIT_ASSERT_EQUAL( false, TestMolecule->hasBondStructure() );
 };
+
+/** Unit test on ListOfBonds at multiple time steps.
+ *
+ */
+void ListOfBondsTest::MultipleTimeStepTest()
+{
+  atom *atom1 = NULL;
+  atom *atom2 = NULL;
+  bond *Binder = NULL;
+  {
+    molecule::iterator iter = TestMolecule->begin();
+    atom1 = *iter;
+    iter++;
+    atom2 = *iter;
+  }
+  CPPUNIT_ASSERT( atom1 != NULL );
+  CPPUNIT_ASSERT( atom2 != NULL );
+
+  // add bond
+  WorldTime::setTime(0);
+  Binder = TestMolecule->AddBond(atom1, atom2, 1);
+  CPPUNIT_ASSERT( Binder != NULL );
+  WorldTime::setTime(1);
+  Binder = TestMolecule->AddBond(atom1, atom2, 1);
+  CPPUNIT_ASSERT( Binder != NULL );
+
+  // access test via CurrentTime
+  { // time step 0
+    WorldTime::setTime(0);
+    {
+      const BondList& ListOfBonds = atom1->getListOfBonds();
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+    {
+      const BondList& ListOfBonds = atom2->getListOfBonds();
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+    CPPUNIT_ASSERT_EQUAL( true, TestMolecule->hasBondStructure() );
+  }
+  { // time step 1
+    WorldTime::setTime(1);
+    {
+      const BondList& ListOfBonds = atom1->getListOfBonds();
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+    {
+      const BondList& ListOfBonds = atom2->getListOfBonds();
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+    CPPUNIT_ASSERT_EQUAL( true, TestMolecule->hasBondStructure() );
+    WorldTime::setTime(0);
+  }
+
+  // access time step directly.
+  { // time step 0
+    {
+      const BondList& ListOfBonds = atom1->getListOfBondsAtStep(0);
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+    {
+      const BondList& ListOfBonds = atom2->getListOfBondsAtStep(0);
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+  }
+  { // time step 1
+    {
+      const BondList& ListOfBonds = atom1->getListOfBondsAtStep(1);
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+    {
+      const BondList& ListOfBonds = atom1->getListOfBondsAtStep(1);
+      CPPUNIT_ASSERT_EQUAL( (size_t) 1, ListOfBonds.size() );
+    }
+  }
+
+  // remove atom2
+  World::getInstance().destroyAtom(atom2);
+
+  // check bond if removed from other atom for all time steps
+  {
+    WorldTime::setTime(0);
+    const BondList& ListOfBonds = atom1->getListOfBonds();
+    CPPUNIT_ASSERT_EQUAL( (size_t) 0, ListOfBonds.size() );
+    CPPUNIT_ASSERT_EQUAL( false, TestMolecule->hasBondStructure() );
+  }
+  {
+    WorldTime::setTime(1);
+    const BondList& ListOfBonds = atom1->getListOfBonds();
+    CPPUNIT_ASSERT_EQUAL( (size_t) 0, ListOfBonds.size() );
+    CPPUNIT_ASSERT_EQUAL( false, TestMolecule->hasBondStructure() );
+    WorldTime::setTime(0);
+  }
+
+}
Index: src/unittests/ListOfBondsUnitTest.hpp
===================================================================
--- src/unittests/ListOfBondsUnitTest.hpp	(revision af897f5c8ae6115ef8c2ea41ec18740adb18eaf0)
+++ src/unittests/ListOfBondsUnitTest.hpp	(revision 8aba3cf36e533e8aa7e73d15c6c4a093625770cf)
@@ -33,4 +33,5 @@
     CPPUNIT_TEST ( DeleteBondTest );
     CPPUNIT_TEST ( DeleteAtomTest );
+    CPPUNIT_TEST ( MultipleTimeStepTest );
     CPPUNIT_TEST_SUITE_END();
 
@@ -45,4 +46,5 @@
       void DeleteBondTest();
       void DeleteAtomTest();
+      void MultipleTimeStepTest();
 
 private:
