Index: /code/branches/output/src/Orxonox.cc
===================================================================
--- /code/branches/output/src/Orxonox.cc	(revision 8829)
+++ /code/branches/output/src/Orxonox.cc	(revision 8830)
@@ -61,4 +61,9 @@
     using namespace orxonox;
 
+    orxout(user_status) << "Welcome to Orxonox (v" << ORXONOX_VERSION_MAJOR << '.' << ORXONOX_VERSION_MINOR << '.' << ORXONOX_VERSION_PATCH << ' ' << ORXONOX_VERSION_NAME << ')' << endl;
+    orxout(internal_status) << "Congratulations, you survived the static initialization. Entering main()" << endl;
+    if (argc > 0)
+        orxout(internal_info) << "argv[0]: " << argv[0] << endl;
+
     try
     {
@@ -78,9 +83,11 @@
 #endif
 
-        return main(strCmdLine);
+        int value = main(strCmdLine);
+        orxout(internal_status) << "Terminating main() normally with value " << value << endl;
+        return value;
     }
     catch (...)
     {
-        orxout(user_error) << "Orxonox failed to initialise: " << orxonox::Exception::handleMessage() << endl;
+        orxout(user_error) << "Exception caught in main(): " << orxonox::Exception::handleMessage() << endl;
         orxout(user_error) << "Terminating program." << endl;
         return 1;
Index: /code/branches/output/src/libraries/core/Core.cc
===================================================================
--- /code/branches/output/src/libraries/core/Core.cc	(revision 8829)
+++ /code/branches/output/src/libraries/core/Core.cc	(revision 8830)
@@ -112,4 +112,6 @@
         , destructionHelper_(this)
     {
+        orxout(internal_status) << "initializing Core object..." << endl;
+
         // Set the hard coded fixed paths
         this->pathConfig_ = new PathConfig();
@@ -119,4 +121,5 @@
 
         // Load modules
+        orxout(internal_info) << "Loading modules:" << endl;
         const std::vector<std::string>& modulePaths = this->pathConfig_->getModulePaths();
         for (std::vector<std::string>::const_iterator it = modulePaths.begin(); it != modulePaths.end(); ++it)
@@ -138,4 +141,12 @@
         this->pathConfig_->setConfigurablePaths();
 
+        orxout(internal_info) << "Root path:       " << PathConfig::getRootPathString() << endl;
+        orxout(internal_info) << "Executable path: " << PathConfig::getExecutablePathString() << endl;
+        orxout(internal_info) << "Data path:       " << PathConfig::getDataPathString() << endl;
+        orxout(internal_info) << "Ext. data path:  " << PathConfig::getExternalDataPathString() << endl;
+        orxout(internal_info) << "Config path:     " << PathConfig::getConfigPathString() << endl;
+        orxout(internal_info) << "Log path:        " << PathConfig::getLogPathString() << endl;
+        orxout(internal_info) << "Modules path:    " << PathConfig::getModulePathString() << endl;
+
         // create a signal handler (only active for Linux)
         // This call is placed as soon as possible, but after the directories are set
@@ -153,4 +164,5 @@
 
         // Manage ini files and set the default settings file (usually orxonox.ini)
+        orxout(internal_info) << "Loading config:" << endl;
         this->configFileManager_ = new ConfigFileManager();
         this->configFileManager_->setFilename(ConfigFileType::Settings,
@@ -158,4 +170,5 @@
 
         // Required as well for the config values
+        orxout(internal_info) << "Loading language:" << endl;
         this->languageInstance_ = new Language();
 
@@ -163,4 +176,5 @@
         // possibility to configure everything below here
         RegisterRootObject(Core);
+        orxout(internal_info) << "configuring Core" << endl;
         this->setConfigValues();
 
@@ -175,11 +189,16 @@
         }
         if (this->bStartIOConsole_)
+        {
+            orxout(internal_info) << "creating IO console" << endl;
             this->ioConsole_ = new IOConsole();
+        }
 #endif
 
         // creates the class hierarchy for all classes with factories
+        orxout(internal_info) << "creating class hierarchy" << endl;
         Identifier::createClassHierarchy();
 
         // Load OGRE excluding the renderer and the render window
+        orxout(internal_info) << "creating GraphicsManager:" << endl;
         this->graphicsManager_ = new GraphicsManager(false);
 
@@ -189,4 +208,5 @@
 
         // Create singletons that always exist (in other libraries)
+        orxout(internal_info) << "creating root scope:" << endl;
         this->rootScope_ = new Scope<ScopeID::Root>();
 
@@ -205,8 +225,12 @@
                 orxout(internal_error) << "Could not open file for documentation writing" << endl;
         }
+
+        orxout(internal_status) << "finished initializing Core object" << endl;
     }
 
     void Core::destroy()
     {
+        orxout(internal_status) << "destroying Core object..." << endl;
+
         // Remove us from the object lists again to avoid problems when destroying them
         this->unregisterObject();
@@ -227,4 +251,6 @@
         safeObjectDelete(&dynLibManager_);
         safeObjectDelete(&pathConfig_);
+
+        orxout(internal_status) << "finished destroying Core object" << endl;
     }
 
@@ -310,4 +336,6 @@
     void Core::loadGraphics()
     {
+        orxout(internal_info) << "loading graphics in Core" << endl;
+        
         // Any exception should trigger this, even in upgradeToGraphics (see its remarks)
         Loki::ScopeGuard unloader = Loki::MakeObjGuard(*this, &Core::unloadGraphics);
@@ -351,11 +379,16 @@
 
         // Create singletons associated with graphics (in other libraries)
+        orxout(internal_info) << "creating graphics scope:" << endl;
         graphicsScope_ = new Scope<ScopeID::Graphics>();
 
         unloader.Dismiss();
+
+        orxout(internal_info) << "finished loading graphics in Core" << endl;
     }
 
     void Core::unloadGraphics()
     {
+        orxout(internal_info) << "unloading graphics in Core" << endl;
+
         safeObjectDelete(&graphicsScope_);
         safeObjectDelete(&guiManager_);
Index: /code/branches/output/src/libraries/core/GUIManager.cc
===================================================================
--- /code/branches/output/src/libraries/core/GUIManager.cc	(revision 8829)
+++ /code/branches/output/src/libraries/core/GUIManager.cc	(revision 8830)
@@ -257,4 +257,7 @@
     {
         RegisterRootObject(GUIManager);
+
+        orxout(internal_status) << "initializing GUIManager..." << endl;
+
         this->setConfigValues();
 
@@ -335,8 +338,12 @@
         // Set up the sheet manager in the Lua framework
         this->luaState_->doFile("SheetManager.lua");
+
+        orxout(internal_status) << "finished initializing GUIManager" << endl;
     }
 
     void GUIManager::destroy()
     {
+        orxout(internal_status) << "destroying GUIManager..." << endl;
+
         using namespace CEGUI;
 
@@ -355,4 +362,6 @@
 #endif
         safeObjectDelete(&luaState_);
+
+        orxout(internal_status) << "finished destroying GUIManager" << endl;
     }
 
Index: /code/branches/output/src/libraries/core/Game.cc
===================================================================
--- /code/branches/output/src/libraries/core/Game.cc	(revision 8829)
+++ /code/branches/output/src/libraries/core/Game.cc	(revision 8830)
@@ -84,4 +84,6 @@
         , destructionHelper_(this)
     {
+        orxout(internal_status) << "initializing Game object..." << endl;
+
 #ifdef ORXONOX_PLATFORM_WINDOWS
         minimumSleepTime_ = 1000/*us*/;
@@ -106,4 +108,5 @@
 
         // Create the Core
+        orxout(internal_info) << "creating Core object:" << endl;
         this->core_ = new Core(cmdLine);
 
@@ -125,8 +128,12 @@
         this->loadedTopStateNode_ = this->rootStateNode_;
         this->loadedStates_.push_back(this->getState(rootStateNode_->name_));
+
+        orxout(internal_status) << "finished initializing Game object" << endl;
     }
 
     void Game::destroy()
     {
+        orxout(internal_status) << "destroying Game object..." << endl;
+
         // Remove us from the object lists again to avoid problems when destroying them
         this->unregisterObject();
@@ -139,4 +146,6 @@
         safeObjectDelete(&core_);
         safeObjectDelete(&gameClock_);
+
+        orxout(internal_status) << "finished destroying Game object..." << endl;
     }
 
@@ -165,4 +174,11 @@
             orxout(user_error) << "Starting game without requesting GameState. This automatically terminates the program." << endl;
 
+        // Update the GameState stack if required. We do this already here to have a properly initialized game before entering the main loop
+        this->updateGameStateStack();
+
+        orxout(user_status) << "Game loaded" << endl;
+        orxout(internal_status) << "--------------------------------------------------" << endl;
+        orxout(internal_status) << "starting main loop..." << endl;
+
         // START GAME
         // first delta time should be about 0 seconds
@@ -217,4 +233,7 @@
                 this->updateFPSLimiter();
         }
+
+        orxout(internal_status) << "finished main loop" << endl;
+        orxout(internal_status) << "--------------------------------------------------" << endl;
 
         // UNLOAD all remaining states
@@ -338,4 +357,5 @@
     void Game::stop()
     {
+        orxout(user_status) << "Exit" << endl;
         this->bAbort_ = true;
     }
@@ -507,4 +527,7 @@
         if (!GameMode::showsGraphics())
         {
+            orxout(user_status) << "Loading graphics" << endl;
+            orxout(internal_info) << "loading graphics in Game" << endl;
+
             core_->loadGraphics();
             Loki::ScopeGuard graphicsUnloader = Loki::MakeObjGuard(*this, &Game::unloadGraphics);
@@ -524,4 +547,6 @@
             }
             graphicsUnloader.Dismiss();
+
+            orxout(internal_info) << "finished loading graphics in Game" << endl;
         }
     }
@@ -531,4 +556,7 @@
         if (GameMode::showsGraphics())
         {
+            orxout(user_status) << "Unloading graphics" << endl;
+            orxout(internal_info) << "unloading graphics in Game" << endl;
+
             // Destroy all the GameStates that require graphics
             for (GameStateMap::iterator it = constructedStates_.begin(); it != constructedStates_.end();)
@@ -555,4 +583,6 @@
     void Game::loadState(const std::string& name)
     {
+        orxout(internal_status) << "loading state '" << name << "'" << endl;
+
         this->bChangingState_ = true;
         LOKI_ON_BLOCK_EXIT_OBJ(*this, &Game::resetChangingState); (void)LOKI_ANONYMOUS_VARIABLE(scopeGuard);
@@ -577,4 +607,6 @@
     void Game::unloadState(const std::string& name)
     {
+        orxout(internal_status) << "unloading state '" << name << "'" << endl;
+
         this->bChangingState_ = true;
         try
Index: /code/branches/output/src/libraries/core/GraphicsManager.cc
===================================================================
--- /code/branches/output/src/libraries/core/GraphicsManager.cc	(revision 8829)
+++ /code/branches/output/src/libraries/core/GraphicsManager.cc	(revision 8830)
@@ -104,4 +104,5 @@
         RegisterObject(GraphicsManager);
 
+        orxout(internal_status) << "initializing GraphicsManager..." << endl;
         this->setConfigValues();
 
@@ -129,8 +130,12 @@
             this->upgradeToGraphics();
         }
+
+        orxout(internal_status) << "finished initializing GraphicsManager" << endl;
     }
 
     void GraphicsManager::destroy()
     {
+        orxout(internal_status) << "destroying GraphicsManager..." << endl;
+
         Loader::unload(debugOverlay_.get());
 
@@ -148,4 +153,6 @@
         safeObjectDelete(&ogreLogger_);
         safeObjectDelete(&ogreWindowEventListener_);
+
+        orxout(internal_status) << "finished destroying GraphicsManager" << endl;
     }
 
@@ -173,4 +180,6 @@
             return;
 
+        orxout(internal_info) << "GraphicsManager upgrade to graphics" << endl;
+
         // load all the required plugins for Ogre
         this->loadOgrePlugins();
@@ -183,4 +192,6 @@
         // choose another resource group.
         Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
+
+        orxout(internal_info) << "GraphicsManager finished upgrade to graphics" << endl;
     }
 
@@ -239,4 +250,6 @@
     void GraphicsManager::loadOgrePlugins()
     {
+        orxout(internal_info) << "loading ogre plugins" << endl;
+
         // Plugin path can have many different locations...
         std::string pluginPath = specialConfig::ogrePluginsDirectory;
Index: /code/branches/output/src/libraries/core/Language.cc
===================================================================
--- /code/branches/output/src/libraries/core/Language.cc	(revision 8829)
+++ /code/branches/output/src/libraries/core/Language.cc	(revision 8830)
@@ -201,5 +201,5 @@
     void Language::readDefaultLanguageFile()
     {
-        orxout(internal_status, context::language) << "Read default language file." << endl;
+        orxout(internal_info, context::language) << "Read default language file." << endl;
 
         const std::string& filepath = PathConfig::getConfigPathString() + getFilename(this->defaultLanguage_);
@@ -250,5 +250,5 @@
     void Language::readTranslatedLanguageFile()
     {
-        orxout(internal_status, context::language) << "Read translated language file (" << Core::getInstance().getLanguage() << ")." << endl;
+        orxout(internal_info, context::language) << "Read translated language file (" << Core::getInstance().getLanguage() << ")." << endl;
 
         const std::string& filepath = PathConfig::getConfigPathString() + getFilename(Core::getInstance().getLanguage());
@@ -263,5 +263,5 @@
             orxout(internal_error, context::language) << "Couldn't open file " << getFilename(Core::getInstance().getLanguage()) << " to read the translated language entries!" << endl;
             Core::getInstance().resetLanguage();
-            orxout(internal_status, context::language) << "Reset language to " << this->defaultLanguage_ << '.' << endl;
+            orxout(internal_info, context::language) << "Reset language to " << this->defaultLanguage_ << '.' << endl;
             return;
         }
@@ -304,5 +304,5 @@
     void Language::writeDefaultLanguageFile() const
     {
-        orxout(internal_status, context::language) << "Write default language file." << endl;
+        orxout(internal_info, context::language) << "Write default language file." << endl;
 
         const std::string& filepath = PathConfig::getConfigPathString() + getFilename(this->defaultLanguage_);
Index: /code/branches/output/src/libraries/core/Loader.cc
===================================================================
--- /code/branches/output/src/libraries/core/Loader.cc	(revision 8829)
+++ /code/branches/output/src/libraries/core/Loader.cc	(revision 8830)
@@ -189,5 +189,5 @@
             if(bVerbose)
             {
-                orxout(user_status, context::loader) << "Start loading " << file->getFilename() << "..." << endl;
+                orxout(user_info) << "Start loading " << file->getFilename() << "..." << endl;
                 orxout(internal_info, context::loader) << "Mask: " << Loader::currentMask_s << endl;
             }
@@ -217,5 +217,5 @@
 
             if(bVerbose)
-                orxout(user_status, context::loader) << "Finished loading " << file->getFilename() << '.' << endl;
+                orxout(user_info) << "Finished loading " << file->getFilename() << '.' << endl;
             else
                 orxout(verbose, context::loader) << "Finished loading " << file->getFilename() << '.' << endl;
Index: /code/branches/output/src/libraries/util/Scope.h
===================================================================
--- /code/branches/output/src/libraries/util/Scope.h	(revision 8829)
+++ /code/branches/output/src/libraries/util/Scope.h	(revision 8830)
@@ -128,4 +128,6 @@
             Scope()
             {
+                orxout(internal_status) << "creating scope... (" << scope << ")" << endl;
+
                 try
                 {
@@ -148,4 +150,6 @@
                     throw;
                 }
+
+                orxout(internal_status) << "created scope (" << scope << ")" << endl;
             }
 
@@ -153,4 +157,6 @@
             ~Scope()
             {
+                orxout(internal_status) << "destroying scope... (" << scope << ")" << endl;
+
                 ScopeManager::instanceCounts_s[scope]--;
 
@@ -162,4 +168,6 @@
                 if (ScopeManager::instanceCounts_s[scope] == 0)
                     this->deactivateListeners();
+
+                orxout(internal_status) << "destroyed scope (" << scope << ")" << endl;
             }
 
Index: /code/branches/output/src/orxonox/Main.cc
===================================================================
--- /code/branches/output/src/orxonox/Main.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/Main.cc	(revision 8830)
@@ -61,8 +61,15 @@
     int main(const std::string& strCmdLine)
     {
+        orxout(internal_status) << "entering orxonox::main()" << endl;
+        orxout(internal_info) << "command line: " << strCmdLine << endl;
+
+        orxout(internal_info) << "creating Game object:" << endl;
         Game* game = new Game(strCmdLine);
+        orxout(user_status) << "Finished initialization" << endl;
 
         if (CommandLineParser::getValue("generateDoc").getString().empty())
         {
+            orxout(internal_info) << "preparing game states" << endl;
+
             /* TODO make this clear */
             game->setStateHierarchy(
@@ -98,4 +105,5 @@
             }
 
+            orxout(internal_info) << "starting game" << endl;
             game->run();
         }
Index: /code/branches/output/src/orxonox/gamestates/GSClient.cc
===================================================================
--- /code/branches/output/src/orxonox/gamestates/GSClient.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/gamestates/GSClient.cc	(revision 8830)
@@ -52,4 +52,6 @@
     void GSClient::activate()
     {
+        orxout(user_status) << "Starting client" << endl;
+
         GameMode::setIsClient(true);
 
Index: /code/branches/output/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- /code/branches/output/src/orxonox/gamestates/GSLevel.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/gamestates/GSLevel.cc	(revision 8830)
@@ -74,4 +74,6 @@
     void GSLevel::activate()
     {
+        orxout(user_status) << "Loading level" << endl;
+
         if (GameMode::showsGraphics())
         {
@@ -155,5 +157,4 @@
 
         // call the loader
-        orxout(user_status) << "Loading level..." << endl;
         startFile_ = new XMLFile(LevelManager::getInstance().getDefaultLevel());
         bool loaded = Loader::open(startFile_);
@@ -169,5 +170,4 @@
         delete startFile_;
 
-        orxout(user_status) << "Unloaded level" << endl;
         orxout(internal_info) << "Remaining objects:" << endl;
         unsigned int i = 0;
Index: /code/branches/output/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- /code/branches/output/src/orxonox/gamestates/GSMainMenu.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/gamestates/GSMainMenu.cc	(revision 8830)
@@ -95,4 +95,6 @@
     void GSMainMenu::activate()
     {
+        orxout(user_status) << "Loading main menu" << endl;
+
         // show main menu
         GraphicsManager::getInstance().setCamera(this->camera_);
Index: /code/branches/output/src/orxonox/gamestates/GSMasterServer.cc
===================================================================
--- /code/branches/output/src/orxonox/gamestates/GSMasterServer.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/gamestates/GSMasterServer.cc	(revision 8830)
@@ -50,10 +50,10 @@
   void GSMasterServer::activate()
   {
+    orxout(user_status) << "Starting masterserver" << endl;
+
     /* TODO make this work for masterserver as well */
     //GameMode::setIsServer(true);
 
     this->mserver = new MasterServer();
-    orxout(user_status) << "Loading masterserver mode" << endl;
-
     this->mserver->run();
   }
Index: /code/branches/output/src/orxonox/gamestates/GSServer.cc
===================================================================
--- /code/branches/output/src/orxonox/gamestates/GSServer.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/gamestates/GSServer.cc	(revision 8830)
@@ -54,4 +54,6 @@
     void GSServer::activate()
     {
+        orxout(user_status) << "Starting server" << endl;
+
         GameMode::setIsServer(true);
 
Index: /code/branches/output/src/orxonox/sound/SoundManager.cc
===================================================================
--- /code/branches/output/src/orxonox/sound/SoundManager.cc	(revision 8829)
+++ /code/branches/output/src/orxonox/sound/SoundManager.cc	(revision 8830)
@@ -71,4 +71,6 @@
         RegisterRootObject(SoundManager);
 
+        orxout(user_status) << "Loading sound" << endl;
+
         this->bDestructorCalled_ = false;
          
