Index: /code/trunk/src/core/RootGameState.cc
===================================================================
--- /code/trunk/src/core/RootGameState.cc	(revision 1823)
+++ /code/trunk/src/core/RootGameState.cc	(revision 1824)
@@ -132,6 +132,8 @@
     void RootGameState::start(int argc, char** argv)
     {
+#ifdef NDEBUG
         try
         {
+#endif
             // start global orxonox time
             Clock clock;
@@ -160,4 +162,5 @@
 
             this->deactivate();
+#ifdef NDEBUG
         }
         // Note: These are all unhandled exceptions that should not have made its way here!
@@ -175,4 +178,5 @@
             abort();
         }
+#endif
     }
 
Index: /code/trunk/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- /code/trunk/src/orxonox/gamestates/GSGraphics.cc	(revision 1823)
+++ /code/trunk/src/orxonox/gamestates/GSGraphics.cc	(revision 1824)
@@ -137,4 +137,6 @@
     void GSGraphics::leave()
     {
+        using namespace Ogre;
+
         delete this->guiManager_;
 
@@ -145,8 +147,24 @@
         delete this->inputManager_;
 
-        this->ogreRoot_->detachRenderTarget(this->renderWindow_);
-        delete this->renderWindow_;
-        //this->ogreRoot_->shutdown
-        // TODO: destroy render window
+        // destroy render window
+        this->renderWindow_->removeAllViewports();
+        this->renderWindow_->removeAllListeners();
+        RenderSystem* renderer = this->ogreRoot_->getRenderSystem();
+        renderer->destroyRenderWindow("Orxonox");
+
+        // Does the opposite of initialise()
+        ogreRoot_->shutdown();
+
+        // Remove all resources and resource groups
+        StringVector groups = ResourceGroupManager::getSingleton().getResourceGroups();
+        for (StringVector::iterator it = groups.begin(); it != groups.end(); ++it)
+        {
+            ResourceGroupManager::getSingleton().destroyResourceGroup(*it);
+        }
+
+        ParticleSystemManager::getSingleton().removeAllTemplates();
+
+        // Shutdown the render system
+        this->ogreRoot_->setRenderSystem(0);
 
         Settings::_getInstance().bShowsGraphics_ = false;
@@ -277,5 +295,5 @@
         CCOUT(4) << "Creating render window" << std::endl;
 
-        this->renderWindow_ = ogreRoot_->initialise(true, "OrxonoxV2");
+        this->renderWindow_ = ogreRoot_->initialise(true, "Orxonox");
 
         Ogre::WindowEventUtilities::addWindowEventListener(this->renderWindow_, this);
@@ -291,6 +309,6 @@
         CCOUT(4) << "Initialising resources" << std::endl;
         //TODO: Do NOT load all the groups, why are we doing that? And do we really do that? initialise != load...
-        try
-        {
+        //try
+        //{
             Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
             /*Ogre::StringVector str = Ogre::ResourceGroupManager::getSingleton().getResourceGroups();
@@ -299,10 +317,10 @@
             Ogre::ResourceGroupManager::getSingleton().loadResourceGroup(str[i]);
             }*/
-        }
-        catch (...)
-        {
-            CCOUT(2) << "Error: There was a serious error when initialising the resources." << std::endl;
-            throw;
-        }
+        //}
+        //catch (...)
+        //{
+        //    CCOUT(2) << "Error: There was a serious error when initialising the resources." << std::endl;
+        //    throw;
+        //}
     }
 
Index: /code/trunk/src/orxonox/objects/Projectile.cc
===================================================================
--- /code/trunk/src/orxonox/objects/Projectile.cc	(revision 1823)
+++ /code/trunk/src/orxonox/objects/Projectile.cc	(revision 1824)
@@ -54,6 +54,6 @@
         this->smokeTemplateName_ = "Orxonox/smoke4";
 
-	this->setStatic(false);
-	this->translate(Vector3(55, 0, 0), Ogre::Node::TS_LOCAL);
+        this->setStatic(false);
+        this->translate(Vector3(55, 0, 0), Ogre::Node::TS_LOCAL);
 
         if (this->owner_)
