Index: src/UIElements/Views/Qt4/QtStatusBar.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtStatusBar.cpp	(revision a2a2f74e1b5173a3e4d4090d8ec2a57e0f765552)
+++ src/UIElements/Views/Qt4/QtStatusBar.cpp	(revision 26b4d62081a948abd7e73ffa88b6aec3eb1e5234)
@@ -39,10 +39,14 @@
 #include <QtCore/QMetaType>
 #include <QtGui/QProgressBar>
+#include <QtCore/QTimer>
 
 #include "QtStatusBar.hpp"
 
 #include "CodePatterns/MemDebug.hpp"
+#include "CodePatterns/Observer/Notification.hpp"
 
 #include "World.hpp"
+#include "Actions/ActionQueue.hpp"
+#include "Actions/ActionStatusList.hpp"
 #include "Actions/Process.hpp"
 
@@ -57,8 +61,14 @@
   moleculeCount(World::getInstance().numMolecules()),
   parent(_parent),
-  activeProcess("")
+  activeProcess(""),
+  StatusList(ActionQueue::getInstance().getStatusList()),
+  StatusList_signedOn(false),
+  timer(NULL),
+  timer_interval(1500)
 {
   World::getInstance().signOn(this);
   Process::AddObserver(this);
+  StatusList.signOn(this, ActionStatusList::StatusAdded);
+  StatusList_signedOn = true;
   statusLabel = new QLabel(this);
   statusLabel->setFrameStyle(QFrame::NoFrame | QFrame::Plain);
@@ -66,4 +76,9 @@
   redrawStatus();
 
+  // connect the timer
+  timer = new QTimer(this);
+  timer->stop();
+  connect(timer, SIGNAL(timeout()), this, SLOT(updateStatusMessage()));
+
   qRegisterMetaType<std::string>("std::string");
   connect(
@@ -74,15 +89,24 @@
 QtStatusBar::~QtStatusBar()
 {
+  // stop the timer if it is running
+  if (timer->isActive())
+    timer->stop();
+
   Process::RemoveObserver(this);
   World::getInstance().signOff(this);
+  if (StatusList_signedOn)
+    StatusList.signOff(this, ActionStatusList::StatusAdded);
 }
 
 void QtStatusBar::update(Observable *subject){
-  if (subject==World::getPointer()){
+  if (subject == World::getPointer()){
     atomCount = World::getInstance().numAtoms();
     moleculeCount = World::getInstance().numMolecules();
-    redrawStatus();
-  }
-  else {
+    // redraw only if no timer updates messages
+    if (!timer->isActive())
+      redrawStatus();
+  } else if (subject == &StatusList) {
+    // we do not react to general updates from StatusList
+  } else {
     // we probably have some process
     // as notify comes from ActionQueue's thread, we have to use signal/slots
@@ -97,10 +121,58 @@
 }
 
-void QtStatusBar::subjectKilled(Observable *subject){
+void QtStatusBar::startTimer()
+{
+  timer->start(timer_interval);
+}
+
+void QtStatusBar::stopTimer()
+{
+  timer->stop();
+}
+
+void QtStatusBar::updateStatusMessage()
+{
+  if (StatusList.size() != 0) {
+    // get oldest message from the StatusList
+    const std::string message = StatusList.popFirstMessage();
+    statusLabel->setText(QString(message.c_str()));
+  } else {
+    // just send the standard message
+    redrawStatus();
+    // and stop the timer
+    stopTimer();
+  }
+}
+
+void QtStatusBar::recieveNotification(Observable *_publisher, Notification *_notification)
+{
+  if (_publisher == &StatusList) {
+    switch(_notification->getChannelNo()) {
+      case MoleCuilder::ActionStatusList::StatusAdded:
+        if (!timer->isActive()) {
+          // if timer is not already running
+          updateStatusMessage();
+          startTimer();
+        }
+        break;
+    }
+  }
+}
+
+void QtStatusBar::subjectKilled(Observable *subject)
+{
   // Processes don't notify when they are killed
-  atomCount = World::getInstance().numAtoms();
-  moleculeCount = World::getInstance().numMolecules();
-  World::getInstance().signOn(this);
-  redrawStatus();
+  if (subject == &StatusList) {
+    // print all remaining messages
+    while (StatusList.size() != 0)
+      updateStatusMessage();
+    // don't need to sign off, just note down that we are
+    StatusList_signedOn = false;
+  } else {
+    atomCount = World::getInstance().numAtoms();
+    moleculeCount = World::getInstance().numMolecules();
+    World::getInstance().signOn(this);
+    redrawStatus();
+  }
 }
 
Index: src/UIElements/Views/Qt4/QtStatusBar.hpp
===================================================================
--- src/UIElements/Views/Qt4/QtStatusBar.hpp	(revision a2a2f74e1b5173a3e4d4090d8ec2a57e0f765552)
+++ src/UIElements/Views/Qt4/QtStatusBar.hpp	(revision 26b4d62081a948abd7e73ffa88b6aec3eb1e5234)
@@ -22,9 +22,11 @@
 #include "CodePatterns/Observer/Observer.hpp"
 
+class QBoxLayout;
 class QLabel;
 class QProgressBar;
-class QBoxLayout;
+class QTimer;
 
 namespace MoleCuilder {
+  class ActionStatusList;
   class Process;
 }
@@ -48,4 +50,5 @@
   void update(Observable *subject);
   void subjectKilled(Observable *subject);
+  void recieveNotification(Observable *_publisher, Notification *_notification);
 
 private slots:
@@ -55,4 +58,5 @@
       const unsigned int currentstep,
       const bool StopStatus);
+  void updateStatusMessage();
 
 signals:
@@ -66,4 +70,7 @@
   void redrawStatus();
 
+  void startTimer();
+  void stopTimer();
+
   int atomCount;
   int moleculeCount;
@@ -74,4 +81,12 @@
   progressBars_t progressBars;
   std::string activeProcess;
+  //!> reference to the StatusList we are signed on
+  MoleCuilder::ActionStatusList& StatusList;
+  //!> indicates whether we are currently signed on
+  bool StatusList_signedOn;
+  //!> QTimer instance that causes regular updates of status messages
+  QTimer *timer;
+  //!> time interval in milliseconds
+  const int timer_interval;
 };
 
