Index: src/Atom/AtomicInfo.cpp
===================================================================
--- src/Atom/AtomicInfo.cpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/AtomicInfo.cpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -61,4 +61,5 @@
     charge(_atom.getCharge()),
     Velocity(_atom.getAtomicVelocity()),
+    Force(_atom.getAtomicForce()),
     FatherId(_atom.father->getId()),
     MolId(0),
@@ -82,4 +83,5 @@
   _atom.setCharge(charge);
   _atom.setAtomicVelocity(Velocity);
+  _atom.setAtomicForce(Force);
 
   // set old id
@@ -117,4 +119,5 @@
   MolId = AI.MolId;
   Velocity = AI.Velocity;
+  Force = AI.Force;
   Id = AI.Id;
   Nr = AI.Nr;
Index: src/Atom/AtomicInfo.hpp
===================================================================
--- src/Atom/AtomicInfo.hpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/AtomicInfo.hpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -40,4 +40,5 @@
   double charge;
   Vector Velocity;
+  Vector Force;
   atomId_t FatherId;
   moleculeId_t MolId;
Index: src/Atom/TesselPoint.cpp
===================================================================
--- src/Atom/TesselPoint.cpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/TesselPoint.cpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -58,4 +58,10 @@
 };
 
+void TesselPoint::removeSteps()
+{
+  ASSERT(0, "TesselPoint::removeSteps() should never be called, TesselPoints don't have trajectories.");
+  AtomInfo::removeTrajectoryStep();
+};
+
 TesselPoint * TesselPoint::getTesselPoint()
 {
Index: src/Atom/TesselPoint.hpp
===================================================================
--- src/Atom/TesselPoint.hpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/TesselPoint.hpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -39,4 +39,12 @@
   virtual void UpdateSteps();
 
+  /** Pops the last step in all trajectory vectors.
+   *
+   * This allows to decrease all trajectories contained in different classes
+   * by one consistently. This is implemented by the topmost class which calls
+   * the real functions, \sa removeTrajectoryStep(), by all necessary subclasses.
+   */
+  virtual void removeSteps();
+
   /** Getter for this.
    *
Index: src/Atom/atom.cpp
===================================================================
--- src/Atom/atom.cpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/atom.cpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -100,4 +100,13 @@
   // append to ListOfBonds vector
   BondedParticleInfo::AppendTrajectoryStep();
+}
+
+void atom::removeSteps()
+{
+  LOG(4,"atom::removeSteps() called.");
+  // append to position, velocity and force vector
+  AtomInfo::removeTrajectoryStep();
+  // append to ListOfBonds vector
+  BondedParticleInfo::removeTrajectoryStep();
 }
 
Index: src/Atom/atom.hpp
===================================================================
--- src/Atom/atom.hpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/atom.hpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -66,4 +66,12 @@
    */
   virtual void UpdateSteps();
+
+  /** Pops the last step in all trajectory vectors.
+   *
+   * This allows to decrease all trajectories contained in different classes
+   * by one consistently. This is implemented by the topmost class which calls
+   * the real functions, \sa removeTrajectoryStep(), by all necessary subclasses.
+   */
+  virtual void removeSteps();
 
   /** Output of a single atom with given numbering.
Index: src/Atom/atom_atominfo.cpp
===================================================================
--- src/Atom/atom_atominfo.cpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/atom_atominfo.cpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -105,4 +105,16 @@
   AtomicForce.push_back(zeroVec);
   LOG(5,"AtomInfo::AppendTrajectoryStep() called, size is ("
+      << AtomicPosition.size() << ","
+      << AtomicVelocity.size() << ","
+      << AtomicForce.size() << ")");
+}
+
+void AtomInfo::removeTrajectoryStep()
+{
+  NOTIFY(TrajectoryChanged);
+  AtomicPosition.pop_back();
+  AtomicVelocity.pop_back();
+  AtomicForce.pop_back();
+  LOG(5,"AtomInfo::removeTrajectoryStep() called, size is ("
       << AtomicPosition.size() << ","
       << AtomicVelocity.size() << ","
Index: src/Atom/atom_atominfo.hpp
===================================================================
--- src/Atom/atom_atominfo.hpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/atom_atominfo.hpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -36,4 +36,8 @@
 class RealSpaceMatrix;
 
+namespace MoleCuilder {
+  void removeLastStep(const std::vector<atomId_t> &atoms);
+};
+
 /********************************************** declarations *******************************/
 
@@ -53,4 +57,12 @@
    */
   virtual void UpdateSteps()=0;
+
+  /** Pops the last step in all trajectory vectors.
+   *
+   * This allows to decrease all trajectories contained in different classes
+   * by one consistently. This is implemented by the topmost class which calls
+   * the real functions, \sa removeTrajectoryStep(), by all necessary subclasses.
+   */
+  virtual void removeSteps()=0;
 
   /** DEPRECATED: Getter for element indicated by AtomicElement.
@@ -287,4 +299,9 @@
   void AppendTrajectoryStep();
 
+  /** Function used by this and inheriting classes to decrease the trajectory
+   * vectors by one.
+   */
+  void removeTrajectoryStep();
+
   // make these protected only such that deriving atom class still has full
   // access needed for clone and alike
Index: src/Atom/atom_bondedparticleinfo.cpp
===================================================================
--- src/Atom/atom_bondedparticleinfo.cpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/atom_bondedparticleinfo.cpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -63,4 +63,10 @@
 }
 
+void BondedParticleInfo::removeTrajectoryStep()
+{
+  ListOfBonds.pop_back();
+  LOG(5,"BondedParticleInfo::removeTrajectoryStep() called, size is " << ListOfBonds.size());
+}
+
 const BondList& BondedParticleInfo::getListOfBonds() const
 {
Index: src/Atom/atom_bondedparticleinfo.hpp
===================================================================
--- src/Atom/atom_bondedparticleinfo.hpp	(revision 9e3fca9793f8283b21549888452621aad9772a63)
+++ src/Atom/atom_bondedparticleinfo.hpp	(revision 7e51e12e82c5637d2660d794f1e024fda52a5aa6)
@@ -89,4 +89,9 @@
   void AppendTrajectoryStep();
 
+  /** Function used by this and inheriting classes to reduce the ListOfBonds
+   * vector by one.
+   */
+  void removeTrajectoryStep();
+
   std::vector<BondList> ListOfBonds; //!< list of all bonds
   static BondList emptyList;  //!< empty list to return when step is not present
