Index: src/UIElements/Makefile.am
===================================================================
--- src/UIElements/Makefile.am	(revision 89b992fa98bcc9ed385d092a07b3c218334d009f)
+++ src/UIElements/Makefile.am	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
@@ -171,4 +171,5 @@
   UIElements/Views/Qt4/QtShapeList.cpp \
   UIElements/Views/Qt4/QtStatusBar.cpp \
+  UIElements/Views/Qt4/QtTimeLine.cpp \
   UIElements/Views/Qt4/QtToolBar.cpp \
   UIElements/Views/Qt4/Qt3D/GLWorldView.cpp \
@@ -193,4 +194,5 @@
   UIElements/Views/Qt4/QtShapeList.hpp \
   UIElements/Views/Qt4/QtStatusBar.hpp \
+  UIElements/Views/Qt4/QtTimeLine.hpp \
   UIElements/Views/Qt4/QtToolBar.hpp \
   UIElements/Views/Qt4/Qt3D/GLWorldView.hpp \
Index: src/UIElements/Qt4/QtMainWindow.cpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.cpp	(revision 89b992fa98bcc9ed385d092a07b3c218334d009f)
+++ src/UIElements/Qt4/QtMainWindow.cpp	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
@@ -58,4 +58,5 @@
 #include "Views/Qt4/QtInfoBox.hpp"
 #include "Views/Qt4/QtStatusBar.hpp"
+#include "Views/Qt4/QtTimeLine.hpp"
 #include "Views/Qt4/QtToolBar.hpp"
 #include "Views/Qt4/Qt3D/GLWorldView.hpp"
@@ -93,4 +94,6 @@
   shapeController = new QtShapeController(worldTab);
 
+  timeline = new QtTimeLine(this);
+
   infoBox = new QtInfoBox();
   glWorldView = new GLWorldView(this);
@@ -114,4 +117,5 @@
   splitter3->addWidget(shapeController);
   splitter2->addWidget(glWorldView);
+  splitter2->addWidget(timeline);
   splitter2->addWidget(worldTab);
   worldTab->addTab(moleculeList, "Molecules");
Index: src/UIElements/Qt4/QtMainWindow.hpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.hpp	(revision 89b992fa98bcc9ed385d092a07b3c218334d009f)
+++ src/UIElements/Qt4/QtMainWindow.hpp	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
@@ -33,4 +33,5 @@
 class QtToolBar;
 class QCloseEvent;
+class QSlider;
 
 class QtMainWindow : public QMainWindow, public MainWindow
@@ -60,4 +61,5 @@
   QtMenu<QMenuBar> *MainMenu;
   QtToolBar *toolbar;
+  QSlider *timeline;
 
 };
Index: src/UIElements/Views/Qt4/QtTimeLine.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtTimeLine.cpp	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
+++ src/UIElements/Views/Qt4/QtTimeLine.cpp	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
@@ -0,0 +1,97 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2013 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * QtTimeLine.cpp
+ *
+ *  Created on: Jul 11, 2013
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// make sure Qt includes come before MemDebug
+#include "QtTimeLine.hpp"
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "CodePatterns/Assert.hpp"
+#include "CodePatterns/Log.hpp"
+
+#include "Actions/WorldAction/SetWorldTimeAction.hpp"
+#include "Atom/atom.hpp"
+#include "Atom/AtomObserver.hpp"
+
+QtTimeLine::QtTimeLine(QWidget * _parent) :
+    QSlider (Qt::Horizontal, _parent),
+    Observer("QtTimeLine")
+{
+  // set initial values
+  QSlider::setMinimum(0);
+  QSlider::setMaximum(0);
+  QSlider::setValue(0);
+  QSlider::setTickInterval(1);
+  QSlider::setSingleStep(1);
+  QSlider::setTracking(true);
+
+  // sign on to observable
+  AtomObserver::getInstance().signOn(this, AtomObservable::TrajectoryChanged);
+  enlisted = true;
+
+  // connect to QSlider's valueChanged() signal
+  bool result = connect(this,SIGNAL(valueChanged(int)),this,SLOT(StepUpdate(int)));
+  if (!result)
+    ELOG(0, "Could not connect to QSlider::valueChanged.");
+}
+
+QtTimeLine::~QtTimeLine()
+{
+  if (enlisted)
+    AtomObserver::getInstance().signOff(this, AtomObservable::TrajectoryChanged);
+}
+
+void QtTimeLine::subjectKilled(Observable *publisher)
+{
+  enlisted = false;
+}
+
+void QtTimeLine::update(Observable *publisher)
+{
+  ELOG(0, "We are not enlisted for general updates.");
+}
+
+void QtTimeLine::recieveNotification(Observable *publisher, Notification_ptr notification)
+{
+  // calculate max trajectory (need dynamic_cast due to virtual base)
+  const atom *_atom = dynamic_cast<const atom *>(publisher);
+  const int MaxTrajectory = _atom->getTrajectorySize()-1;
+  if (MaxTrajectory > QSlider::maximum())
+    QSlider::setMaximum(MaxTrajectory);
+}
+
+void QtTimeLine::StepUpdate(int position)
+{
+  MoleCuilder::WorldSetWorldTime(position);
+}
Index: src/UIElements/Views/Qt4/QtTimeLine.hpp
===================================================================
--- src/UIElements/Views/Qt4/QtTimeLine.hpp	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
+++ src/UIElements/Views/Qt4/QtTimeLine.hpp	(revision d7e9318a71ee1700ffae3775ae4ec0a8785ffe0d)
@@ -0,0 +1,40 @@
+/*
+ * QtTimeLine.hpp
+ *
+ *  Created on: Jul 11, 2013
+ *      Author: heber
+ */
+
+#ifndef QTTIMELINE_HPP_
+#define QTTIMELINE_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <QtGui/QSlider>
+#include "CodePatterns/Observer/Observer.hpp"
+
+class QtTimeLine : public QSlider, public Observer
+{
+  Q_OBJECT
+
+public:
+  QtTimeLine(QWidget * _parent=0);
+  virtual ~QtTimeLine();
+
+protected:
+  virtual void update(Observable *publisher);
+  virtual void recieveNotification(Observable *publisher, Notification_ptr notification);
+  virtual void subjectKilled(Observable *publisher);
+
+private slots:
+  void StepUpdate(int position);
+
+private:
+  //!> whether AtomObserver knows about us or not
+  bool enlisted;
+};
+
+#endif /* QTTIMELINE_HPP_ */
