Index: code/branches/buildsystem3/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/buildsystem3/src/orxonox/gamestates/GSGraphics.cc	(revision 2664)
+++ code/branches/buildsystem3/src/orxonox/gamestates/GSGraphics.cc	(revision 2685)
@@ -61,5 +61,4 @@
 #include "gui/GUIManager.h"
 #include "tools/WindowEventListener.h"
-#include "Settings.h"
 
 // for compatibility
@@ -138,5 +137,5 @@
         // load debug overlay
         COUT(3) << "Loading Debug Overlay..." << std::endl;
-        this->debugOverlay_ = new XMLFile(Settings::getDataPath() + "overlay/debug.oxo");
+        this->debugOverlay_ = new XMLFile(Core::getMediaPath() + "overlay/debug.oxo");
         Loader::open(debugOverlay_);
 
@@ -211,10 +210,8 @@
         delete this->ogreRoot_;
 
-//#ifdef ORXONOX_PLATFORM_WINDOWS
         // delete the ogre log and the logManager (since we have created it).
         this->ogreLogger_->getDefaultLog()->removeListener(this);
         this->ogreLogger_->destroyLog(Ogre::LogManager::getSingleton().getDefaultLog());
         delete this->ogreLogger_;
-//#endif
 
         delete graphicsEngine_;
@@ -287,7 +284,20 @@
         COUT(3) << "Setting up Ogre..." << std::endl;
 
-        // TODO: LogManager doesn't work on oli platform. The why is yet unknown.
-//#ifdef ORXONOX_PLATFORM_WINDOWS
+        if (ogreConfigFile_ == "")
+        {
+            COUT(2) << "Warning: Ogre config file set to \"\". Defaulting to config.cfg" << std::endl;
+            ModifyConfigValue(ogreConfigFile_, tset, "config.cfg");
+        }
+        if (ogreLogFile_ == "")
+        {
+            COUT(2) << "Warning: Ogre log file set to \"\". Defaulting to ogre.log" << std::endl;
+            ModifyConfigValue(ogreLogFile_, tset, "ogre.log");
+        }
+
+        boost::filesystem::path ogreConfigFilepath(Core::getConfigPath() + ogreConfigFile_);
+        boost::filesystem::path ogreLogFilepath(Core::getLogPath() + ogreLogFile_);
+
         // create a new logManager
+        // Ogre::Root will detect that we've already created a Log
         ogreLogger_ = new Ogre::LogManager();
         COUT(4) << "Ogre LogManager created" << std::endl;
@@ -295,36 +305,20 @@
         // create our own log that we can listen to
         Ogre::Log *myLog;
-        if (this->ogreLogFile_ == "")
-            myLog = ogreLogger_->createLog("ogre.log", true, false, true);
-        else
-            myLog = ogreLogger_->createLog(this->ogreLogFile_, true, false, false);
+        myLog = ogreLogger_->createLog(ogreLogFilepath.native_file_string(), true, false, false);
         COUT(4) << "Ogre Log created" << std::endl;
 
         myLog->setLogDetail(Ogre::LL_BOREME);
         myLog->addListener(this);
-//#endif
-
-        // Root will detect that we've already created a Log
+
         COUT(4) << "Creating Ogre Root..." << std::endl;
-
-        if (ogreConfigFile_ == "")
-        {
-            COUT(2) << "Warning: Ogre config file set to \"\". Defaulting to config.cfg" << std::endl;
-            ModifyConfigValue(ogreConfigFile_, tset, "config.cfg");
-        }
-        if (ogreLogFile_ == "")
-        {
-            COUT(2) << "Warning: Ogre log file set to \"\". Defaulting to ogre.log" << std::endl;
-            ModifyConfigValue(ogreLogFile_, tset, "ogre.log");
-        }
 
         // check for config file existence because Ogre displays (caught) exceptions if not
         std::ifstream probe;
-        probe.open(ogreConfigFile_.c_str());
+        probe.open(ogreConfigFilepath.native_file_string().c_str());
         if (!probe)
         {
             // create a zero sized file
             std::ofstream creator;
-            creator.open(ogreConfigFile_.c_str());
+            creator.open(ogreConfigFilepath.native_file_string().c_str());
             creator.close();
         }
@@ -333,15 +327,5 @@
 
         // Leave plugins file empty. We're going to do that part manually later
-        ogreRoot_ = new Ogre::Root("", ogreConfigFile_, ogreLogFile_);
-
-#if 0 // Ogre 1.4.3 doesn't yet support setDebugOutputEnabled(.)
-#ifndef ORXONOX_PLATFORM_WINDOWS
-        // tame the ogre ouput so we don't get all the mess in the console
-        Ogre::Log* defaultLog = Ogre::LogManager::getSingleton().getDefaultLog();
-        defaultLog->setDebugOutputEnabled(false);
-        defaultLog->setLogDetail(Ogre::LL_BOREME);
-        defaultLog->addListener(this);
-#endif
-#endif
+        ogreRoot_ = new Ogre::Root("", ogreConfigFilepath.native_file_string(), ogreLogFilepath.native_file_string());
 
         COUT(3) << "Ogre set up done." << std::endl;
@@ -377,5 +361,5 @@
         try
         {
-            cf.load(Settings::getDataPath() + resourceFile_);
+            cf.load(Core::getMediaPath() + resourceFile_);
         }
         catch (...)
@@ -403,5 +387,5 @@
 
                     Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
-                        std::string(Settings::getDataPath() + archName), typeName, secName);
+                        std::string(Core::getMediaPath() + archName), typeName, secName);
                 }
             }
Index: code/branches/buildsystem3/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/buildsystem3/src/orxonox/gamestates/GSLevel.cc	(revision 2664)
+++ code/branches/buildsystem3/src/orxonox/gamestates/GSLevel.cc	(revision 2685)
@@ -46,5 +46,4 @@
 #include "LevelManager.h"
 #include "PlayerManager.h"
-#include "Settings.h"
 
 namespace orxonox
@@ -205,5 +204,5 @@
         std::string levelName;
         CommandLine::getValue("level", &levelName);
-        startFile_ = new XMLFile(Settings::getDataPath() + std::string("levels/") + levelName);
+        startFile_ = new XMLFile(Core::getMediaPath() + std::string("levels/") + levelName);
         Loader::open(startFile_);
     }
Index: code/branches/buildsystem3/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/buildsystem3/src/orxonox/gamestates/GSRoot.cc	(revision 2664)
+++ code/branches/buildsystem3/src/orxonox/gamestates/GSRoot.cc	(revision 2685)
@@ -44,24 +44,11 @@
 #include "tools/Timer.h"
 #include "objects/Tickable.h"
-#include "Settings.h"
 
 #ifdef ORXONOX_PLATFORM_WINDOWS
-#  ifndef WIN32_LEAN_AND_MEAN
-#    define WIN32_LEAN_AND_MEAN
-#  endif
-#  include "windows.h"
-
-   //Get around Windows hackery
-#  ifdef max
-#    undef max
-#  endif
-#  ifdef min
-#    undef min
-#  endif
+#  include <winbase.h>
 #endif
 
 namespace orxonox
 {
-    SetCommandLineArgument(dataPath, "").information("PATH");
     SetCommandLineArgument(limitToCPU, 1).information("0: off | #cpu");
 
@@ -71,5 +58,4 @@
         , bPaused_(false)
         , timeFactorPauseBackup_(1.0f)
-        , settings_(0)
         , tclBind_(0)
         , tclThreadManager_(0)
@@ -113,18 +99,6 @@
         this->luaBind_ = new LuaBind();
 
-        // instantiate Settings class
-        this->settings_ = new Settings();
-
-        std::string dataPath = CommandLine::getValue("dataPath");
-        if (dataPath != "")
-        {
-            if (*dataPath.end() != '/' && *dataPath.end() != '\\')
-                Settings::tsetDataPath(dataPath + "/");
-            else
-                Settings::tsetDataPath(dataPath);
-        }
-
         // initialise TCL
-        this->tclBind_ = new TclBind(Settings::getDataPath());
+        this->tclBind_ = new TclBind(Core::getMediaPath());
         this->tclThreadManager_ = new TclThreadManager(tclBind_->getTclInterpreter());
 
@@ -182,5 +156,4 @@
         delete this->tclBind_;
 
-        delete this->settings_;
         delete this->luaBind_;
 
Index: code/branches/buildsystem3/src/orxonox/gamestates/GSRoot.h
===================================================================
--- code/branches/buildsystem3/src/orxonox/gamestates/GSRoot.h	(revision 2664)
+++ code/branches/buildsystem3/src/orxonox/gamestates/GSRoot.h	(revision 2685)
@@ -81,5 +81,4 @@
         bool                  bPaused_;
         float                 timeFactorPauseBackup_;
-        Settings*             settings_;
         TclBind*              tclBind_;
         TclThreadManager*     tclThreadManager_;
