Index: src/UIElements/TextUI/TextStatusIndicator.cpp
===================================================================
--- src/UIElements/TextUI/TextStatusIndicator.cpp	(revision f130d4bfaa72247e3972474a6e9f5ca33463eaa8)
+++ src/UIElements/TextUI/TextStatusIndicator.cpp	(revision 0b6b770c3a01e40e913e85102527423a7acc09e0)
@@ -34,4 +34,5 @@
 
 #include "CodePatterns/MemDebug.hpp"
+#include "CodePatterns/Observer/Notification.hpp"
 
 #include "TextUI/TextStatusIndicator.hpp"
@@ -39,4 +40,6 @@
 #include <iostream>
 
+#include "Actions/ActionQueue.hpp"
+#include "Actions/ActionStatusList.hpp"
 #include "Actions/Process.hpp"
 
@@ -44,7 +47,12 @@
 
 TextStatusIndicator::TextStatusIndicator() :
-  Observer("TextStatusIndicator")
+  Observer("TextStatusIndicator"),
+  StatusList(ActionQueue::getInstance().getStatusList()),
+  StatusList_signedOn(false)
 {
   Process::AddObserver(this);
+
+  StatusList.signOn(this, ActionStatusList::StatusAdded);
+  StatusList_signedOn = true;
 }
 
@@ -52,28 +60,35 @@
 {
   Process::RemoveObserver(this);
+
+  if (StatusList_signedOn)
+    StatusList.signOff(this, ActionStatusList::StatusAdded);
 }
 
 void TextStatusIndicator::update(Observable *subject){
-  Process *proc;
-  // we are only observing Processes
-  if((proc=dynamic_cast<Process*>(subject))){
-    // see what kind of progress we have to display
-    if(proc->getMaxSteps()>0){
-      if(!proc->doesStop()){
-        std::cout << "Busy (" << proc->getName() << ") ";
-        // we can show a percentage done
-        std::cout << (int)proc->getDoneRatio() << "% done" << std::endl;
+  if (subject == &StatusList) {
+    // we do not react to general updates from StatusList
+  } else {
+    Process *proc;
+    // we are otherwise only observing Processes
+    if((proc=dynamic_cast<Process*>(subject))){
+      // see what kind of progress we have to display
+      if(proc->getMaxSteps()>0){
+        if(!proc->doesStop()){
+          std::cout << "Busy (" << proc->getName() << ") ";
+          // we can show a percentage done
+          std::cout << (int)proc->getDoneRatio() << "% done" << std::endl;
+        }
       }
-    }
-    else{
-      // we only show some kind of busy animation
-      if(proc->doesStart()){
-        std::cout << "Busy (" << proc->getName() << ")";
-      }
-      if(!proc->doesStop()){
-        std::cout << ".";
-      }
-      else {
-        std::cout << std::endl;
+      else{
+        // we only show some kind of busy animation
+        if(proc->doesStart()){
+          std::cout << "Busy (" << proc->getName() << ")";
+        }
+        if(!proc->doesStop()){
+          std::cout << ".";
+        }
+        else {
+          std::cout << std::endl;
+        }
       }
     }
@@ -81,6 +96,30 @@
 }
 
-void TextStatusIndicator::subjectKilled(Observable *subject){
-
+void TextStatusIndicator::subjectKilled(Observable *subject)
+{
+  if (subject == &StatusList) {
+    // print all remaining messages
+    while (StatusList.size() != 0)
+      displayStatusMessage();
+    // don't need to sign off, just note down that we are
+    StatusList_signedOn = false;
+  }
 }
 
+void TextStatusIndicator::displayStatusMessage() const
+{
+  const std::string message = StatusList.popFirstMessage();
+  std::cout << message << std::endl;
+}
+
+void TextStatusIndicator::recieveNotification(Observable *_publisher, Notification *_notification)
+{
+  if (_publisher == &StatusList) {
+    switch(_notification->getChannelNo()) {
+      case MoleCuilder::ActionStatusList::StatusAdded:
+        // if timer is not already running
+        displayStatusMessage();
+        break;
+    }
+  }
+}
Index: src/UIElements/TextUI/TextStatusIndicator.hpp
===================================================================
--- src/UIElements/TextUI/TextStatusIndicator.hpp	(revision f130d4bfaa72247e3972474a6e9f5ca33463eaa8)
+++ src/UIElements/TextUI/TextStatusIndicator.hpp	(revision 0b6b770c3a01e40e913e85102527423a7acc09e0)
@@ -17,4 +17,9 @@
 #include "CodePatterns/Observer/Observer.hpp"
 
+namespace MoleCuilder {
+  class ActionStatusList;
+}
+
+
 class TextStatusIndicator : public Observer
 {
@@ -25,7 +30,14 @@
   void update(Observable *subject);
   void subjectKilled(Observable *subject);
+  void recieveNotification(Observable *_publisher, Notification *_notification);
 
 private:
+  void displayStatusMessage() const;
 
+private:
+  //!> reference to the StatusList we are signed on
+  MoleCuilder::ActionStatusList& StatusList;
+  //!> indicates whether we are currently signed on
+  bool StatusList_signedOn;
 };
 
