Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp	(revision 5aaa431c127bd1ea184be89ef28adcd229f6d96c)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp	(revision 89b992fa98bcc9ed385d092a07b3c218334d009f)
@@ -51,4 +51,5 @@
 #include "GLMoleculeObject_bond.hpp"
 #include "World.hpp"
+#include "WorldTime.hpp"
 
 GLMoleculeObject_atom::GLMoleculeObject_atom(QGLSceneNode *mesh[], QObject *parent, const atom *atomref) :
@@ -63,4 +64,5 @@
   atomref->signOn(this, AtomObservable::BondsAdded);
   World::getInstance().signOn(this, World::SelectionChanged);
+  WorldTime::getInstance().signOn(this, WorldTime::TimeChanged);
 
   // set the object's id
@@ -81,4 +83,5 @@
   }
   World::getInstance().signOff(this, World::SelectionChanged);
+  WorldTime::getInstance().signOff(this, WorldTime::TimeChanged);
 }
 
@@ -189,5 +192,5 @@
         break;
     }
-  }else{
+  }else if (static_cast<World *>(publisher) == World::getPointer()) {
     // notification from world
 #ifdef LOG_OBSERVER
@@ -203,4 +206,19 @@
         break;
     }
+  } else {
+    // notification from world
+#ifdef LOG_OBSERVER
+    observerLog().addMessage() << "++ Update of Observer "<< observerLog().getName(static_cast<Observer *>(this))
+          << " received notification from Worldtime for channel "
+          << notification->getChannelNo() << ".";
+#endif
+    switch (notification->getChannelNo()) {
+      case WorldTime::TimeChanged:
+        resetPosition();
+        emit changed();
+        break;
+      default:
+        break;
+    }
   }
 }
Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.hpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.hpp	(revision 5aaa431c127bd1ea184be89ef28adcd229f6d96c)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.hpp	(revision 89b992fa98bcc9ed385d092a07b3c218334d009f)
@@ -43,6 +43,8 @@
   void indexChanged(GLMoleculeObject_atom *ob, int oldId, int newId);
 
+public:
+  void resetPosition();
+
 private:
-  void resetPosition();
   void resetElement();
   void resetIndex();
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 5aaa431c127bd1ea184be89ef28adcd229f6d96c)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 89b992fa98bcc9ed385d092a07b3c218334d009f)
@@ -62,4 +62,5 @@
 #include "Shapes/ShapeRegistry.hpp"
 #include "World.hpp"
+#include "WorldTime.hpp"
 
 GLWorldView::GLWorldView(QWidget *parent)
@@ -95,4 +96,5 @@
   World::getInstance().signOn(this, World::MoleculeRemoved);
   World::getInstance().signOn(this, World::SelectionChanged);
+  WorldTime::getInstance().signOn(this, WorldTime::TimeChanged);
   AtomObserver::getInstance().signOn(this, AtomObservable::PositionChanged);
 
@@ -113,4 +115,5 @@
   World::getInstance().signOff(this, World::MoleculeRemoved);
   World::getInstance().signOff(this, World::SelectionChanged);
+  WorldTime::getInstance().signOff(this, WorldTime::TimeChanged);
   AtomObserver::getInstance().signOff(this, AtomObservable::PositionChanged);
   ShapeRegistry::getInstance().signOff(this);
@@ -354,13 +357,27 @@
       }
       default:
-        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here.");
+        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here for World.");
         break;
     }
-  } else if (dynamic_cast<AtomObservable *>(publisher) != NULL) {
+  } else if (static_cast<WorldTime *>(publisher) == WorldTime::getPointer()) {
+    switch (notification->getChannelNo()) {
+      case WorldTime::TimeChanged:
+      {
+#ifdef LOG_OBSERVER
+      observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that WorldTime's time has changed.";
+#endif
+        emit changed();
+        break;
+      }
+      default:
+        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here for WorldTime.");
+        break;
+    }
+} else if (dynamic_cast<AtomObservable *>(publisher) != NULL) {
     switch (notification->getChannelNo()) {
       case AtomObservable::PositionChanged:
       {
+    #ifdef LOG_OBSERVER
         const atom *_atom = dynamic_cast<const atom *>(publisher);
-    #ifdef LOG_OBSERVER
         observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that atom "+toString(_atom->getId())+" has changed its position.";
     #endif
@@ -369,5 +386,5 @@
       }
       default:
-        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here.");
+        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here for AtomObservable.");
         break;
     }
@@ -390,5 +407,5 @@
       }
       default:
-        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here.");
+        ASSERT(0, "GLWorldView::recieveNotification() - we cannot get here for ShapeRegistry.");
         break;
     }
