Index: /code/branches/testing/src/libraries/util/output/LogWriter.cc
===================================================================
--- /code/branches/testing/src/libraries/util/output/LogWriter.cc	(revision 9539)
+++ /code/branches/testing/src/libraries/util/output/LogWriter.cc	(revision 9540)
@@ -118,5 +118,6 @@
 
         // request old output from MemoryWriter
-        OutputManager::getInstance().getMemoryWriter().resendOutput(this);
+        if (&OutputManager::getInstance().getMemoryWriter())
+            OutputManager::getInstance().getMemoryWriter().resendOutput(this);
     }
 
Index: /code/branches/testing/src/libraries/util/output/OutputDefinitions.h
===================================================================
--- /code/branches/testing/src/libraries/util/output/OutputDefinitions.h	(revision 9539)
+++ /code/branches/testing/src/libraries/util/output/OutputDefinitions.h	(revision 9540)
@@ -48,5 +48,5 @@
 */
 #define REGISTER_OUTPUT_CONTEXT(name) \
-    const OutputContextContainer& name() { static const OutputContextContainer& context = registerContext(#name); return context; }
+    const OutputContextContainer& name() { static OutputContextContainer context = registerContext(#name); return context; }
 
 /**
Index: /code/branches/testing/src/libraries/util/output/OutputManager.cc
===================================================================
--- /code/branches/testing/src/libraries/util/output/OutputManager.cc	(revision 9539)
+++ /code/branches/testing/src/libraries/util/output/OutputManager.cc	(revision 9540)
@@ -55,4 +55,9 @@
 
         this->subcontextCounter_ = 0;
+
+        this->isInitialized_ = false;
+        this->memoryWriterInstance_ = 0;
+        this->consoleWriterInstance_ = 0;
+        this->logWriterInstance_ = 0;
     }
 
@@ -62,4 +67,13 @@
     OutputManager::~OutputManager()
     {
+        while (!this->listeners_.empty())
+            this->unregisterListener(this->listeners_[0]);
+
+        if (this->memoryWriterInstance_)
+            delete this->memoryWriterInstance_;
+        if (this->consoleWriterInstance_)
+            delete this->consoleWriterInstance_;
+        if (this->logWriterInstance_)
+            delete this->logWriterInstance_;
     }
 
@@ -88,40 +102,13 @@
     /*static*/ OutputManager& OutputManager::getInstanceAndCreateListeners()
     {
-        static OutputManager& instance = OutputManager::getInstance();
-
-        static MemoryWriter& memoryWriterInstance = OutputManager::getInstance().getMemoryWriter(); (void)memoryWriterInstance;
-        static ConsoleWriter& consoleWriterInstance = OutputManager::getInstance().getConsoleWriter(); (void)consoleWriterInstance;
-        static LogWriter& logWriterInstance = OutputManager::getInstance().getLogWriter(); (void)logWriterInstance;
-
-        return instance;
-    }
-
-    /**
-     * @brief Returns the main instance of MemoryWriter which is managed by the OutputManager singleton.
-     * @note If OutputManager is ever un-singletonized, this instance must not remain static.
-     */
-    MemoryWriter& OutputManager::getMemoryWriter()
-    {
-        static MemoryWriter instance;
-        return instance;
-    }
-
-    /**
-     * @brief Returns the main instance of ConsoleWriter which is managed by the OutputManager singleton.
-     * @note If OutputManager is ever un-singletonized, this instance must not remain static.
-     */
-    ConsoleWriter& OutputManager::getConsoleWriter()
-    {
-        static ConsoleWriter instance(std::cout);
-        return instance;
-    }
-
-    /**
-     * @brief Returns the main instance of LogWriter which is managed by the OutputManager singleton.
-     * @note If OutputManager is ever un-singletonized, this instance must not remain static.
-     */
-    LogWriter& OutputManager::getLogWriter()
-    {
-        static LogWriter instance;
+        OutputManager& instance = *OutputManager::Testing::getInstancePointer();
+
+        if (!instance.isInitialized_) {
+            instance.isInitialized_ = true;
+            instance.memoryWriterInstance_ = new MemoryWriter();
+            instance.consoleWriterInstance_ = new ConsoleWriter(std::cout);
+            instance.logWriterInstance_ = new LogWriter();
+        }
+
         return instance;
     }
Index: /code/branches/testing/src/libraries/util/output/OutputManager.h
===================================================================
--- /code/branches/testing/src/libraries/util/output/OutputManager.h	(revision 9539)
+++ /code/branches/testing/src/libraries/util/output/OutputManager.h	(revision 9540)
@@ -72,9 +72,9 @@
             static OutputManager& getInstanceAndCreateListeners();
 
-            MemoryWriter& getMemoryWriter();
-            ConsoleWriter& getConsoleWriter();
-            LogWriter& getLogWriter();
+            inline MemoryWriter& getMemoryWriter()   { return *this->memoryWriterInstance_; }
+            inline ConsoleWriter& getConsoleWriter() { return *this->consoleWriterInstance_; }
+            inline LogWriter& getLogWriter()         { return *this->logWriterInstance_; }
 
-            void pushMessage(OutputLevel level, const OutputContextContainer& context, const std::string& message);
+            virtual void pushMessage(OutputLevel level, const OutputContextContainer& context, const std::string& message);
 
             virtual void registerListener(OutputListener* listener);
@@ -125,4 +125,9 @@
             OutputContextSubID subcontextCounter_;                              ///< Counts the number of sub-contexts (and generates their IDs)
 
+            bool isInitialized_;                                                ///< Becomes true once the following instances were created
+            MemoryWriter*  memoryWriterInstance_;                               ///< The main instance of MemoryWriter, managed by OutputManager
+            ConsoleWriter* consoleWriterInstance_;                              ///< The main instance of ConsoleWriter, managed by OutputManager
+            LogWriter*     logWriterInstance_;                                  ///< The main instance of LogWriter, managed by OutputManager
+
         public:
             struct _UtilExport Testing
Index: /code/branches/testing/test/util/output/ConsoleWriterTest.cc
===================================================================
--- /code/branches/testing/test/util/output/ConsoleWriterTest.cc	(revision 9539)
+++ /code/branches/testing/test/util/output/ConsoleWriterTest.cc	(revision 9540)
@@ -65,4 +65,5 @@
     TEST(ConsoleWriterTest, DefaultConsoleWriterUsesCout)
     {
+        OutputManager::getInstanceAndCreateListeners();
         EXPECT_EQ(std::cout, OutputManager::getInstance().getConsoleWriter().getOutputStream());
     }
