Index: src/UIElements/CommandLineUI/CommandLineStatusIndicator.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineStatusIndicator.cpp	(revision a61dbbe03ddbe4f5f0a22574b63fb4d32e312493)
+++ src/UIElements/CommandLineUI/CommandLineStatusIndicator.cpp	(revision d8821e62974799dc0fa0b06ad6a9ec1bc73b57a8)
@@ -34,4 +34,6 @@
 
 #include "CodePatterns/MemDebug.hpp"
+#include "CodePatterns/Observer/Notification.hpp"
+#include "CodePatterns/Observer/Observable.hpp"
 
 #include "CommandLineUI/CommandLineStatusIndicator.hpp"
@@ -39,13 +41,19 @@
 #include <iostream>
 
+#include "Actions/ActionQueue.hpp"
+#include "Actions/ActionStatusList.hpp"
 #include "Actions/Process.hpp"
-#include "CodePatterns/Observer/Observable.hpp"
 
 using namespace MoleCuilder;
 
 CommandLineStatusIndicator::CommandLineStatusIndicator() :
-    Observer("CommandLineStatusIndicator")
+    Observer("CommandLineStatusIndicator"),
+    StatusList(ActionQueue::getInstance().getStatusList()),
+    StatusList_signedOn(false)
 {
   Process::AddObserver(this);
+
+  StatusList.signOn(this, ActionStatusList::StatusAdded);
+  StatusList_signedOn = true;
 }
 
@@ -53,28 +61,39 @@
 {
   Process::RemoveObserver(this);
+
+  if (StatusList_signedOn) {
+    // print all remaining messages prior to exit
+    while (StatusList.size() != 0)
+      displayStatusMessage();
+    StatusList.signOff(this, ActionStatusList::StatusAdded);
+  }
 }
 
 void CommandLineStatusIndicator::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 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;
+        }
       }
     }
@@ -82,6 +101,30 @@
 }
 
-void CommandLineStatusIndicator::subjectKilled(Observable *subject){
-
+void CommandLineStatusIndicator::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 CommandLineStatusIndicator::displayStatusMessage() const
+{
+  const std::string message = StatusList.popFirstMessage();
+  std::cout << message << std::endl;
+}
+
+void CommandLineStatusIndicator::recieveNotification(Observable *_publisher, Notification *_notification)
+{
+  if (_publisher == &StatusList) {
+    switch(_notification->getChannelNo()) {
+      case ActionStatusList::StatusAdded:
+        displayStatusMessage();
+        break;
+    }
+  }
+}
+
Index: src/UIElements/CommandLineUI/CommandLineStatusIndicator.hpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineStatusIndicator.hpp	(revision a61dbbe03ddbe4f5f0a22574b63fb4d32e312493)
+++ src/UIElements/CommandLineUI/CommandLineStatusIndicator.hpp	(revision d8821e62974799dc0fa0b06ad6a9ec1bc73b57a8)
@@ -17,4 +17,8 @@
 #include "CodePatterns/Observer/Observer.hpp"
 
+namespace MoleCuilder {
+  class ActionStatusList;
+}
+
 class Observable;
 
@@ -27,7 +31,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;
 };
 
Index: src/UIElements/CommandLineUI/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision a61dbbe03ddbe4f5f0a22574b63fb4d32e312493)
+++ src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision d8821e62974799dc0fa0b06ad6a9ec1bc73b57a8)
@@ -43,4 +43,5 @@
 #include "CodePatterns/Verbose.hpp"
 
+#include "cleanUp.hpp"
 #include "Actions/Action.hpp"
 #include "Actions/ActionQueue.hpp"
@@ -80,4 +81,8 @@
     }
   }
+#ifdef HAVE_ACTION_THREAD
+  // wait for all Actions to finish before we quit the UI
+  waitQueue();
+#endif
 }
 
