Index: /code/branches/output/src/libraries/core/command/Shell.cc
===================================================================
--- /code/branches/output/src/libraries/core/command/Shell.cc	(revision 8833)
+++ /code/branches/output/src/libraries/core/command/Shell.cc	(revision 8834)
@@ -39,4 +39,5 @@
 #include "util/StringUtils.h"
 #include "util/SubString.h"
+#include "util/output/OutputManager.h"
 #include "util/output/MemoryWriter.h"
 #include "core/CoreIncludes.h"
@@ -71,9 +72,11 @@
     */
     Shell::Shell(const std::string& consoleName, bool bScrollable)
-        : BaseWriter(consoleName)
+        : BaseWriter(consoleName, false)
         , inputBuffer_(new InputBuffer())
         , bScrollable_(bScrollable)
     {
         RegisterRootObject(Shell);
+
+        OutputManager::getInstance().registerListener(this);
 
         this->scrollPosition_ = 0;
@@ -104,4 +107,6 @@
     {
         this->inputBuffer_->destroy();
+
+        OutputManager::getInstance().unregisterListener(this);
     }
 
Index: /code/branches/output/src/libraries/util/output/BaseWriter.cc
===================================================================
--- /code/branches/output/src/libraries/util/output/BaseWriter.cc	(revision 8833)
+++ /code/branches/output/src/libraries/util/output/BaseWriter.cc	(revision 8834)
@@ -33,5 +33,5 @@
 namespace orxonox
 {
-    BaseWriter::BaseWriter(const std::string& name)
+    BaseWriter::BaseWriter(const std::string& name, bool bRegister) : OutputListener(bRegister)
     {
         this->name_ = name;
@@ -42,4 +42,5 @@
 
         this->subcontextsCheckMask_ = context::none;
+        this->subcontextsNoCheckMask_ = context::none;
 
         this->changedConfigurableLevel();
@@ -54,5 +55,7 @@
     void BaseWriter::output(OutputLevel level, const OutputContextContainer& context, const std::vector<std::string>& lines)
     {
-        if (((this->subcontextsCheckMask_ & context.mask) == 0) || (this->subcontexts_.find(context.sub_id) != this->subcontexts_.end()))
+        if (((this->subcontextsCheckMask_ & context.mask) == 0) ||
+            (this->subcontextsNoCheckMask_ & context.mask) ||
+            (this->subcontexts_.find(context.sub_id) != this->subcontexts_.end()))
         {
             const std::string& prefix = OutputManager::getInstance().getDefaultPrefix(level, context);
@@ -90,7 +93,7 @@
         OutputContextMask context_mask = context::none;
         this->subcontextsCheckMask_ = context::none;
+        this->subcontextsNoCheckMask_ = context::none;
 
         this->subcontexts_.clear();
-        this->subcontexts_.insert(context::no_subcontext);
 
         for (size_t i = 0; i < this->configurableAdditionalContexts_.size(); ++i)
@@ -117,4 +120,8 @@
                 this->subcontextsCheckMask_ |= container.mask;
             }
+            else
+            {
+                this->subcontextsNoCheckMask_ |= container.mask;
+            }
         }
 
Index: /code/branches/output/src/libraries/util/output/BaseWriter.h
===================================================================
--- /code/branches/output/src/libraries/util/output/BaseWriter.h	(revision 8833)
+++ /code/branches/output/src/libraries/util/output/BaseWriter.h	(revision 8834)
@@ -42,5 +42,5 @@
     {
         public:
-            BaseWriter(const std::string& name);
+            BaseWriter(const std::string& name, bool bRegister = true);
             virtual ~BaseWriter();
 
@@ -85,4 +85,5 @@
 
             OutputContextMask subcontextsCheckMask_;
+            OutputContextMask subcontextsNoCheckMask_;
             std::set<OutputContextSubID> subcontexts_;
     };
Index: /code/branches/output/src/libraries/util/output/OutputListener.cc
===================================================================
--- /code/branches/output/src/libraries/util/output/OutputListener.cc	(revision 8833)
+++ /code/branches/output/src/libraries/util/output/OutputListener.cc	(revision 8834)
@@ -33,5 +33,5 @@
 namespace orxonox
 {
-    OutputListener::OutputListener()
+    OutputListener::OutputListener(bool bRegister)
     {
         this->levelMask_ = level::none;
@@ -39,5 +39,6 @@
         this->additionalContextsMask_ = context::none;
 
-        OutputManager::getInstance().registerListener(this);
+        if (bRegister)
+            OutputManager::getInstance().registerListener(this);
     }
 
Index: /code/branches/output/src/libraries/util/output/OutputListener.h
===================================================================
--- /code/branches/output/src/libraries/util/output/OutputListener.h	(revision 8833)
+++ /code/branches/output/src/libraries/util/output/OutputListener.h	(revision 8834)
@@ -41,5 +41,5 @@
     {
         public:
-            OutputListener();
+            OutputListener(bool bRegister = true);
             virtual ~OutputListener();
 
