Index: code/branches/kicklib2/src/CMakeLists.txt
===================================================================
--- code/branches/kicklib2/src/CMakeLists.txt	(revision 8284)
+++ code/branches/kicklib2/src/CMakeLists.txt	(revision 8285)
@@ -41,5 +41,4 @@
 #ADD_COMPILER_FLAGS("-DENET_DLL"           WIN32 LINK_ENET_DYNAMIC)
 ADD_COMPILER_FLAGS("-DLUA_BUILD_AS_DLL"   WIN32 LINK_LUA5.1_DYNAMIC)
-ADD_COMPILER_FLAGS("-DZLIB_DLL"           WIN32 LINK_ZLIB_DYNAMIC)
 # If no defines are specified, these libs get linked dynamically
 ADD_COMPILER_FLAGS("-DCEGUI_STATIC -DTOLUA_STATIC" WIN32 NOT LINK_CEGUI_DYNAMIC)
@@ -139,4 +138,11 @@
 ENDIF()
 
+SET(ORXONOX_MAIN_FILES Orxonox.cc)
+
+# Add special source file for OS X
+IF(APPLE)
+  LIST(APPEND ORXONOX_MAIN_FILES OrxonoxMac.mm)
+ENDIF()
+
 ORXONOX_ADD_EXECUTABLE(orxonox-main
   # When defined as WIN32 this removes the console window on Windows
@@ -145,5 +151,5 @@
     orxonox
   SOURCE_FILES
-    Orxonox.cc
+    ${ORXONOX_MAIN_FILES}
   OUTPUT_NAME orxonox
 )
@@ -179,4 +185,26 @@
 ENDIF(MSVC)
 
+# Apple Mac OS X specific build settings
+IF(APPLE)
+  # On Apple we need to link to AppKit and Foundation frameworks
+  TARGET_LINK_LIBRARIES(orxonox-main 
+    "-framework AppKit"
+    "-framework Foundation"
+  )
+
+  # Post-build step for the creation of the Dev-App bundle
+  INCLUDE(PrepareDevBundle)
+  ADD_CUSTOM_COMMAND(
+    TARGET orxonox-main
+    POST_BUILD 
+    # Copy the executable into the Orxonox.app
+    COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/${ORXONOX_EXECUTABLE_NAME}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/${PROJECT_NAME}.app/Contents/MacOS"
+    # Copy the dev-build marker file to Orxonox.app
+    COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/orxonox_dev_build.keep_me" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/${PROJECT_NAME}.app/Contents/MacOS"
+    # Create a shortcut of the application to the root of the build tree
+    COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/${PROJECT_NAME}.app" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" 
+  ) 
+ENDIF(APPLE)
+
 #################### Doxygen ####################
 
Index: code/branches/kicklib2/src/Orxonox.cc
===================================================================
--- code/branches/kicklib2/src/Orxonox.cc	(revision 8284)
+++ code/branches/kicklib2/src/Orxonox.cc	(revision 8285)
@@ -53,4 +53,6 @@
 #ifdef ORXONOX_USE_WINMAIN
 INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
+#elif defined(ORXONOX_PLATFORM_APPLE)
+int main_mac(int argc, char** argv)
 #else
 int main(int argc, char** argv)
@@ -60,6 +62,15 @@
     {
 #ifndef ORXONOX_USE_WINMAIN
+
+#ifdef ORXONOX_PLATFORM_APPLE
+        // On Apples, the kernel supplies a second argument, which we have to circumvent
+        const int firstArgument = 2;
+#else
+        // 0 is the execution path
+        const int firstArgument = 1;
+#endif
+    
         std::string strCmdLine;
-        for (int i = 1; i < argc; ++i)
+        for (int i = firstArgument; i < argc; ++i)
             strCmdLine = strCmdLine + argv[i] + ' ';
 #endif
Index: code/branches/kicklib2/src/OrxonoxConfig.cmake
===================================================================
--- code/branches/kicklib2/src/OrxonoxConfig.cmake	(revision 8284)
+++ code/branches/kicklib2/src/OrxonoxConfig.cmake	(revision 8285)
@@ -111,2 +111,11 @@
   ${CMAKE_CURRENT_BINARY_DIR}/SpecialConfig.h
 )
+
+# Make special target including the configured header files for Visual Studio
+IF(MSVC)
+  ADD_CUSTOM_TARGET(config
+    SOURCES
+      ${ORXONOX_CONFIG_FILES}
+      ${ORXONOX_CONFIG_FILES_GENERATED}
+  )
+ENDIF()
Index: code/branches/kicklib2/src/OrxonoxConfig.h.in
===================================================================
--- code/branches/kicklib2/src/OrxonoxConfig.h.in	(revision 8284)
+++ code/branches/kicklib2/src/OrxonoxConfig.h.in	(revision 8285)
@@ -228,3 +228,13 @@
 }
 
+// Define Boost Filesystem version
+#include <boost/version.hpp>
+#ifndef BOOST_FILESYSTEM_VERSION
+#  if (BOOST_VERSION < 104600)
+#    define BOOST_FILESYSTEM_VERSION 2
+#  else
+#    define BOOST_FILESYSTEM_VERSION 3
+#  endif
+#endif
+
 #endif /* _OrxonoxConfig_H__ */
Index: code/branches/kicklib2/src/OrxonoxMac.h
===================================================================
--- code/branches/kicklib2/src/OrxonoxMac.h	(revision 8285)
+++ code/branches/kicklib2/src/OrxonoxMac.h	(revision 8285)
@@ -0,0 +1,38 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Kevin J. Young (youngk) 2011
+ *   Co-authors:
+ *      Fabian Landau (x3n)
+ *
+ */
+
+#import <Cocoa/Cocoa.h>
+
+int main_mac(int argc, char** argv);
+int main(int argc, char** argv);
+
+@interface OrxonoxAppDelegate : NSObject <NSApplicationDelegate>
+{
+}
+
+@end
Index: code/branches/kicklib2/src/OrxonoxMac.mm
===================================================================
--- code/branches/kicklib2/src/OrxonoxMac.mm	(revision 8285)
+++ code/branches/kicklib2/src/OrxonoxMac.mm	(revision 8285)
@@ -0,0 +1,51 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Kevin J. Young (youngk) 2011
+ *   Co-authors:
+ *      Fabian Landau (x3n)
+ *
+ */
+
+#import "OrxonoxMac.h"
+
+static int argc_s = 0;
+static char** argv_s = 0;
+
+int main(int argc, char** argv)
+{
+    argc_s = argc;
+    argv_s = argv;
+    
+    int retVal = NSApplicationMain(argc, (const char**)argv);
+    
+    return retVal;
+}
+
+@implementation OrxonoxAppDelegate
+
+- (void)applicationDidFinishLaunching:(NSNotification *)notification
+{
+    exit(main_mac(argc_s, argv_s));
+}
+
+@end
Index: code/branches/kicklib2/src/SpecialConfig.h.in
===================================================================
--- code/branches/kicklib2/src/SpecialConfig.h.in	(revision 8284)
+++ code/branches/kicklib2/src/SpecialConfig.h.in	(revision 8285)
@@ -92,28 +92,10 @@
 
     // OGRE PLUGINS
-    // Apple has trouble finding OGRE plugins because of its install-name convention
-    // Adopting the executable_path structure for later use in app bundles
 #ifdef NDEBUG
     const char ogrePlugins[] = "@OGRE_PLUGINS_RELEASE@";
-#  ifdef DEPENDENCY_PACKAGE_ENABLE
-#    ifdef ORXONOX_PLATFORM_APPLE
-       const char ogrePluginsDirectory[] = "@executable_path/../Plugins";
-#    else
-       const char ogrePluginsDirectory[] = ".";
-#    endif
-#  else
     const char ogrePluginsDirectory[] = "@OGRE_PLUGINS_FOLDER_RELEASE@";
-#  endif
 #else
     const char ogrePlugins[] = "@OGRE_PLUGINS_DEBUG@";
-#  ifdef DEPENDENCY_PACKAGE_ENABLE
-#    ifdef ORXONOX_PLATFORM_APPLE
-       const char ogrePluginsDirectory[] = "@OGRE_PLUGINS_FOLDER_DEBUG@";
-#    else
-       const char ogrePluginsDirectory[] = ".";
-#    endif
-#  else
     const char ogrePluginsDirectory[] = "@OGRE_PLUGINS_FOLDER_DEBUG@";
-#  endif
 #endif
 } }
Index: code/branches/kicklib2/src/external/ogreceguirenderer/CMakeLists.txt
===================================================================
--- code/branches/kicklib2/src/external/ogreceguirenderer/CMakeLists.txt	(revision 8284)
+++ code/branches/kicklib2/src/external/ogreceguirenderer/CMakeLists.txt	(revision 8285)
@@ -35,7 +35,4 @@
     "OGRE_GUIRENDERER_EXPORTS"
   LINK_LIBRARIES
-    ${Boost_SYSTEM_LIBRARY}
-    ${Boost_THREAD_LIBRARY}
-    ${Boost_DATE_TIME_LIBRARY}
     ${OGRE_LIBRARY}
     ${CEGUI_LIBRARY}
Index: code/branches/kicklib2/src/external/ois/CMakeLists.txt
===================================================================
--- code/branches/kicklib2/src/external/ois/CMakeLists.txt	(revision 8284)
+++ code/branches/kicklib2/src/external/ois/CMakeLists.txt	(revision 8285)
@@ -54,5 +54,5 @@
 
 # Some unexplained hackery for Visual Studio 2005
-ADD_COMPILER_FLAGS("-D_WIN32_DCOM" MSVC8)
+ADD_COMPILER_FLAGS("-D_WIN32_DCOM" MSVC80)
 
 # MinGW doesn't come with some required Windows headers
Index: code/branches/kicklib2/src/external/tinyxml/CMakeLists.txt
===================================================================
--- code/branches/kicklib2/src/external/tinyxml/CMakeLists.txt	(revision 8284)
+++ code/branches/kicklib2/src/external/tinyxml/CMakeLists.txt	(revision 8285)
@@ -36,6 +36,4 @@
   ORXONOX_EXTERNAL
   NO_DLL_INTERFACE
-  VERSION
-    2.5.3
   SOURCE_FILES
     ${TINYXML_FILES}
Index: code/branches/kicklib2/src/external/tinyxml/VERSION
===================================================================
--- code/branches/kicklib2/src/external/tinyxml/VERSION	(revision 8284)
+++ code/branches/kicklib2/src/external/tinyxml/VERSION	(revision 8285)
@@ -1,1 +1,2 @@
-TinyXML++ trunk checkout revision 106. Built on top of TinyXML 2.5.3
+TinyXML++ trunk checkout revision 122 (version 0.04a).
+Built with TinyXML 2.5.3.
Index: code/branches/kicklib2/src/external/tinyxml/changes_orxonox.diff
===================================================================
--- code/branches/kicklib2/src/external/tinyxml/changes_orxonox.diff	(revision 8284)
+++ code/branches/kicklib2/src/external/tinyxml/changes_orxonox.diff	(revision 8285)
@@ -1,18 +1,35 @@
---- ticpp.h	Tue Nov  4 21:55:49 2008
-+++ ticpp.h	Sat Jan 10 14:48:41 2009
-@@ -1229,6 +1229,7 @@
+--- ticpp.h
++++ ticpp.h
+@@ -38,9 +38,7 @@
+ @todo add TYPECOUNT support. See ticpp::NodeFactory.
+ @todo Add a quick reference
+ */
+-#ifndef TIXML_USE_TICPP
+-	#define TIXML_USE_TICPP
+-#endif
++#ifdef TIXML_USE_TICPP
+ 
+ #ifndef TICPP_INCLUDED
+ #define TICPP_INCLUDED
+@@ -1231,6 +1229,7 @@
  
  		T* m_tiXmlPointer;		/**< Internal pointer to the TiXml Class which is being wrapped */
  
-+    public:
++	public:
  		/**
  		@internal
  		Gets the internal TinyXML pointer.
-@@ -1240,6 +1241,7 @@
+@@ -1242,6 +1241,7 @@
  			ValidatePointer();
  			return m_tiXmlPointer;
  		}
-+    protected:
++	protected:
  
  		/**
  		@internal
+@@ -1903,3 +1903,5 @@
+ }
+ 
+ #endif	// TICPP_INCLUDED
++
++#endif // TIXML_USE_TICPP
Index: code/branches/kicklib2/src/external/tinyxml/ticpp.cpp
===================================================================
--- code/branches/kicklib2/src/external/tinyxml/ticpp.cpp	(revision 8284)
+++ code/branches/kicklib2/src/external/tinyxml/ticpp.cpp	(revision 8285)
@@ -370,5 +370,5 @@
 }
 
-Node* Node::InsertEndChild( Node& addThis )
+Node* Node::InsertEndChild( const Node& addThis )
 {
 	if ( addThis.Type() == TiXmlNode::DOCUMENT )
@@ -404,5 +404,5 @@
 }
 
-Node* Node::InsertBeforeChild( Node* beforeThis, Node& addThis )
+Node* Node::InsertBeforeChild( Node* beforeThis, const Node& addThis )
 {
 	if ( addThis.Type() == TiXmlNode::DOCUMENT )
@@ -423,5 +423,5 @@
 }
 
-Node* Node::InsertAfterChild( Node* afterThis, Node& addThis )
+Node* Node::InsertAfterChild( Node* afterThis, const Node& addThis )
 {
 	if ( addThis.Type() == TiXmlNode::DOCUMENT )
@@ -442,5 +442,5 @@
 }
 
-Node* Node::ReplaceChild( Node* replaceThis, Node& withThis )
+Node* Node::ReplaceChild( Node* replaceThis, const Node& withThis )
 {
 	if ( withThis.Type() == TiXmlNode::DOCUMENT )
Index: code/branches/kicklib2/src/external/tinyxml/ticpp.h
===================================================================
--- code/branches/kicklib2/src/external/tinyxml/ticpp.h	(revision 8284)
+++ code/branches/kicklib2/src/external/tinyxml/ticpp.h	(revision 8285)
@@ -225,5 +225,5 @@
 			return ( GetBasePointer() == rhs.GetBasePointer() );
 		}
-		
+
 		/**
 		Compare internal TiXml pointers to determine is both are wrappers around the same node
@@ -233,5 +233,5 @@
 			return ( GetBasePointer() != rhs.GetBasePointer() );
 		}
-		
+
 		/**
 		Builds detailed error string using TiXmlDocument::Error() and others
@@ -250,6 +250,6 @@
 					{
 						full_message 	<< "\nDescription: " << doc->ErrorDesc()
-										<< "\nFile: " << (strlen( doc->Value() ) > 0 ? doc->Value() : "<unnamed-file>") 
-										<< "\nLine: " << doc->ErrorRow() 
+										<< "\nFile: " << (strlen( doc->Value() ) > 0 ? doc->Value() : "<unnamed-file>")
+										<< "\nLine: " << doc->ErrorRow()
 										<< "\nColumn: " << doc->ErrorCol();
 					}
@@ -287,5 +287,5 @@
 				TICPPTHROW( "Internal TiXml Pointer is NULL" );
 			}
-		}		
+		}
 
 		/**
@@ -617,5 +617,5 @@
 		@see TiXmlNode::InsertEndChild
 		*/
-		Node* InsertEndChild( Node& addThis );
+		Node* InsertEndChild( const Node& addThis );
 
 		/**
@@ -642,5 +642,5 @@
 		@see TiXmlNode::InsertBeforeChild
 		*/
-		Node* InsertBeforeChild( Node* beforeThis, Node& addThis );
+		Node* InsertBeforeChild( Node* beforeThis, const Node& addThis );
 
 		/**
@@ -655,5 +655,5 @@
 		@see TiXmlNode::InsertAfterChild
 		*/
-		Node* InsertAfterChild( Node* afterThis, Node& addThis );
+		Node* InsertAfterChild( Node* afterThis, const Node& addThis );
 
 		/**
@@ -667,5 +667,5 @@
 		@see TiXmlNode::ReplaceChild
 		*/
-		Node* ReplaceChild( Node* replaceThis, Node& withThis );
+		Node* ReplaceChild( Node* replaceThis, const Node& withThis );
 
 		/**
@@ -1163,5 +1163,5 @@
 		/** Sets internal pointer to the Previous Sibling, or Iterator::END, if there are no prior siblings */
 		Iterator operator--(int)
-		{			
+		{
 			Iterator tmp(*this);
 			--(*this);
@@ -1230,5 +1230,5 @@
 		T* m_tiXmlPointer;		/**< Internal pointer to the TiXml Class which is being wrapped */
 
-    public:
+	public:
 		/**
 		@internal
@@ -1242,5 +1242,5 @@
 			return m_tiXmlPointer;
 		}
-    protected:
+	protected:
 
 		/**
@@ -1400,9 +1400,10 @@
 
 		/**
-		Constructor.
-		Create a document with a name. The name of the document is also the filename of the xml.
-
-		@param documentName Name to set in the Document.
-		*/
+		 * Constructor.
+		 * Create a document with a name. The name of the document is also the filename of the xml.
+		 * @param documentName Name to set in the Document.
+		 * @note LoadFile() needs to be called to actually load the data from the file specified by documentName
+		 * 		 SaveFile() needs to be called to save data to file specified by documentName.
+		 */
 		Document( const std::string& documentName );
 
@@ -1749,5 +1750,6 @@
 				if ( throwIfNotFound )
 				{
-					TICPPTHROW( "Attribute does not exist" );
+					const std::string error( std::string( "Attribute '" ) + name + std::string( "' does not exist" ) );
+					TICPPTHROW( error );
 				}
 			}
@@ -1781,5 +1783,6 @@
 				if ( throwIfNotFound )
 				{
-					TICPPTHROW( "Attribute does not exist" );
+					const std::string error( std::string( "Attribute '" ) + name + std::string( "' does not exist" ) );
+					TICPPTHROW( error );
 				}
 				else
Index: code/branches/kicklib2/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/kicklib2/src/libraries/core/CorePrereqs.h	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/CorePrereqs.h	(revision 8285)
@@ -262,5 +262,6 @@
 namespace boost
 {
-#if BOOST_VERSION < 104400
+#if (BOOST_VERSION < 104400)
+
     namespace filesystem
     {
@@ -269,5 +270,8 @@
         typedef basic_path<std::string, path_traits> path;
     }
-#elif BOOST_VERSION < 104600
+
+#elif (BOOST_VERSION < 104800)
+
+# if BOOST_FILESYSTEM_VERSION == 2
     namespace filesystem2
     {
@@ -282,14 +286,25 @@
         using filesystem2::path;
     }
+# elif BOOST_FILESYSTEM_VERSION == 3
+    namespace filesystem3
+    {
+        class path;
+    }
+    namespace filesystem
+    {
+        using filesystem3::path;
+    }
+# endif
+
 #else
-    namespace filesystem3
+
+    // TODO: Check this once boost 1.48 is released
+    namespace filesystem
     {
         class path;
     }
-    namespace filesystem
-    {
-        using filesystem3::path;
-    }
+
 #endif
+
     class thread;
     class mutex;
Index: code/branches/kicklib2/src/libraries/core/GraphicsManager.cc
===================================================================
--- code/branches/kicklib2/src/libraries/core/GraphicsManager.cc	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/GraphicsManager.cc	(revision 8285)
@@ -30,4 +30,5 @@
 #include "GraphicsManager.h"
 
+#include <cstdlib>
 #include <fstream>
 #include <sstream>
@@ -120,10 +121,9 @@
         // Only for development runs
         if (PathConfig::isDevelopmentRun())
-        {
             Ogre::ResourceGroupManager::getSingleton().addResourceLocation(PathConfig::getExternalDataPathString(), "FileSystem");
-            extResources_.reset(new XMLFile("resources.oxr"));
-            extResources_->setLuaSupport(false);
-            Loader::open(extResources_.get());
-        }
+
+        extResources_.reset(new XMLFile("resources.oxr"));
+        extResources_->setLuaSupport(false);
+        Loader::open(extResources_.get());
 
         if (bLoadRenderer)
@@ -150,6 +150,5 @@
         // Undeclare the resources
         Loader::unload(resources_.get());
-        if (PathConfig::isDevelopmentRun())
-            Loader::unload(extResources_.get());
+        Loader::unload(extResources_.get());
     }
 
@@ -158,6 +157,4 @@
         SetConfigValue(ogreConfigFile_,  "ogre.cfg")
             .description("Location of the Ogre config file");
-        SetConfigValue(ogrePluginsDirectory_, specialConfig::ogrePluginsDirectory)
-            .description("Folder where the Ogre plugins are located.");
         SetConfigValue(ogrePlugins_, specialConfig::ogrePlugins)
             .description("Comma separated list of all plugins to load.");
@@ -251,18 +248,32 @@
     void GraphicsManager::loadOgrePlugins()
     {
-        // just to make sure the next statement doesn't segfault
-        if (ogrePluginsDirectory_.empty())
-            ogrePluginsDirectory_ = '.';
-
-        boost::filesystem::path folder(ogrePluginsDirectory_);
+        // Plugin path can have many different locations...
+        std::string pluginPath = specialConfig::ogrePluginsDirectory;
+#ifdef DEPENDENCY_PACKAGE_ENABLE
+        if (!PathConfig::isDevelopmentRun())
+        {
+#  if defined(ORXONOX_PLATFORM_WINDOWS)
+            pluginPath = PathConfig::getExecutablePathString();
+#  elif defined(ORXONOX_PLATFORM_APPLE)
+            // TODO: Where are the plugins being installed to?
+            pluginPath = PathConfig::getExecutablePathString();
+#  endif
+        }
+#endif
+
+#ifdef ORXONOX_PLATFORM_WINDOWS
+        // Add OGRE plugin path to the environment. That way one plugin could
+        // also depend on another without problems on Windows
+        const char* currentPATH = getenv("PATH");
+        std::string newPATH = pluginPath;
+        if (currentPATH != NULL)
+            newPATH = std::string(currentPATH) + ';' + newPATH;
+        putenv(const_cast<char*>(("PATH=" + newPATH).c_str()));
+#endif
+
         // Do some SubString magic to get the comma separated list of plugins
         SubString plugins(ogrePlugins_, ",", " ", false, '\\', false, '"', false, '{', '}', false, '\0');
-        // Use backslash paths on Windows! file_string() already does that though.
         for (unsigned int i = 0; i < plugins.size(); ++i)
-#if BOOST_FILESYSTEM_VERSION < 3
-            ogreRoot_->loadPlugin((folder / plugins[i]).file_string());
-#else
-            ogreRoot_->loadPlugin((folder / plugins[i]).string());
-#endif
+            ogreRoot_->loadPlugin(pluginPath + '/' + plugins[i]);
     }
 
@@ -290,13 +301,4 @@
 
         Ogre::WindowEventUtilities::addWindowEventListener(this->renderWindow_, ogreWindowEventListener_.get());
-
-// HACK
-#ifdef ORXONOX_PLATFORM_APPLE
-        //INFO: This will give our window focus, and not lock it to the terminal
-        ProcessSerialNumber psn = {0, kCurrentProcess};
-        TransformProcessType(&psn, kProcessTransformToForegroundApplication);
-        SetFrontProcess(&psn);
-#endif
-// End of HACK
 
         // create a full screen default viewport
Index: code/branches/kicklib2/src/libraries/core/GraphicsManager.h
===================================================================
--- code/branches/kicklib2/src/libraries/core/GraphicsManager.h	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/GraphicsManager.h	(revision 8285)
@@ -128,5 +128,4 @@
         // config values
         std::string         ogreConfigFile_;           //!< ogre config filename
-        std::string         ogrePluginsDirectory_;     //!< Directory where the Ogre plugins are located
         std::string         ogrePlugins_;              //!< Comma separated list of all plugins to load
         std::string         ogreLogFile_;              //!< log filename for Ogre log messages
Index: code/branches/kicklib2/src/libraries/core/Identifier.h
===================================================================
--- code/branches/kicklib2/src/libraries/core/Identifier.h	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/Identifier.h	(revision 8285)
@@ -395,5 +395,5 @@
     {
         // Get the name of the class
-        const std::string& name = typeid(T).name();
+        std::string name = typeid(T).name();
 
         // create a new identifier anyway. Will be deleted in Identifier::getIdentifier if not used.
Index: code/branches/kicklib2/src/libraries/core/PathConfig.cc
===================================================================
--- code/branches/kicklib2/src/libraries/core/PathConfig.cc	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/PathConfig.cc	(revision 8285)
@@ -33,5 +33,4 @@
 #include <cstdio>
 #include <vector>
-#include <boost/version.hpp>
 #include <boost/filesystem.hpp>
 
@@ -56,11 +55,13 @@
 #include "CommandLineParser.h"
 
-// Boost 1.36 has some issues with deprecated functions that have been omitted
-#if (BOOST_VERSION == 103600)
-#  define BOOST_LEAF_FUNCTION filename
-#elif (BOOST_FILESYSTEM_VERSION < 3)
-#  define BOOST_LEAF_FUNCTION leaf
+// Differentiate Boost Filesystem v2 and v3
+#if (BOOST_FILESYSTEM_VERSION < 3)
+#  define BF_LEAF leaf
+#  define BF_GENERIC_STRING string
+#  define BF_NATIVE_STRING file_string
 #else
-#  define BOOST_LEAF_FUNCTION path().filename().string
+#  define BF_LEAF path().filename().string
+#  define BF_GENERIC_STRING generic_string
+#  define BF_NATIVE_STRING string
 #endif
 
@@ -242,5 +243,5 @@
             {
                 ThrowException(General, std::string("The ") + it->second + " directory has been preoccupied by a file! \
-                                         Please remove " + it->first.string());
+                                         Please remove " + it->first.BF_GENERIC_STRING());
             }
             if (bf::create_directories(it->first)) // function may not return true at all (bug?)
@@ -259,7 +260,12 @@
         size_t moduleextensionlength = moduleextension.size();
 
+#ifdef ORXONOX_PLATFORM_WINDOWS
         // Add that path to the PATH variable in case a module depends on another one
-        std::string pathVariable(getenv("PATH"));
-        putenv(const_cast<char*>(("PATH=" + pathVariable + ';' + modulePath_.string()).c_str()));
+        const char* currentPATH = getenv("PATH");
+        std::string newPATH = modulePath_.BF_NATIVE_STRING();
+        if (currentPATH != NULL)
+            newPATH = std::string(currentPATH) + ';' + newPATH;
+        putenv(const_cast<char*>(("PATH=" + newPATH).c_str()));
+#endif
 
         // Make sure the path exists, otherwise don't load modules
@@ -273,5 +279,5 @@
         while (file != end)
         {
-            std::string filename = file->BOOST_LEAF_FUNCTION();
+            std::string filename = file->BF_LEAF();
 
             // Check if the file ends with the extension in question
@@ -282,9 +288,5 @@
                     // We've found a helper file
                     const std::string& library = filename.substr(0, filename.size() - moduleextensionlength);
-#if BOOST_FILESYSTEM_VERSION < 3
-                    modulePaths.push_back((modulePath_ / library).file_string());
-#else
-                    modulePaths.push_back((modulePath_ / library).string());
-#endif
+                    modulePaths.push_back(getModulePathString() + library);
                 }
             }
@@ -297,35 +299,35 @@
     /*static*/ std::string PathConfig::getRootPathString()
     {
-        return getInstance().rootPath_.string() + '/';
+        return getInstance().rootPath_.BF_GENERIC_STRING() + '/';
     }
 
     /*static*/ std::string PathConfig::getExecutablePathString()
     {
-        return getInstance().executablePath_.string() + '/';
+        return getInstance().executablePath_.BF_GENERIC_STRING() + '/';
     }
 
     /*static*/ std::string PathConfig::getDataPathString()
     {
-        return getInstance().dataPath_.string() + '/';
+        return getInstance().dataPath_.BF_GENERIC_STRING() + '/';
     }
 
     /*static*/ std::string PathConfig::getExternalDataPathString()
     {
-        return getInstance().externalDataPath_.string() + '/';
+        return getInstance().externalDataPath_.BF_GENERIC_STRING() + '/';
     }
 
     /*static*/ std::string PathConfig::getConfigPathString()
     {
-        return getInstance().configPath_.string() + '/';
+        return getInstance().configPath_.BF_GENERIC_STRING() + '/';
     }
 
     /*static*/ std::string PathConfig::getLogPathString()
     {
-        return getInstance().logPath_.string() + '/';
+        return getInstance().logPath_.BF_GENERIC_STRING() + '/';
     }
 
     /*static*/ std::string PathConfig::getModulePathString()
     {
-        return getInstance().modulePath_.string() + '/';
+        return getInstance().modulePath_.BF_GENERIC_STRING() + '/';
     }
 }
Index: code/branches/kicklib2/src/libraries/core/PathConfig.h
===================================================================
--- code/branches/kicklib2/src/libraries/core/PathConfig.h	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/PathConfig.h	(revision 8285)
@@ -113,5 +113,5 @@
             static std::string getModulePathString();
 
-            //! Return trrue for runs in the build directory (not installed)
+            //! Return true for runs in the build directory (not installed)
             static bool isDevelopmentRun() { return getInstance().bDevRun_; }
 
Index: code/branches/kicklib2/src/libraries/core/Resource.cc
===================================================================
--- code/branches/kicklib2/src/libraries/core/Resource.cc	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/Resource.cc	(revision 8285)
@@ -33,4 +33,11 @@
 #include <OgreFileSystem.h>
 #include <OgreResourceGroupManager.h>
+
+// Differentiate Boost Filesystem v2 and v3
+#if (BOOST_FILESYSTEM_VERSION < 3)
+#  define BF_GENERIC_STRING string
+#else
+#  define BF_GENERIC_STRING generic_string
+#endif
 
 namespace orxonox
@@ -98,5 +105,5 @@
                     boost::filesystem::path base(it->archive->getName());
                     base /= it->filename;
-                    ptr->fileSystemPath = base.string();
+                    ptr->fileSystemPath = base.BF_GENERIC_STRING();
                 }
                 return ptr;
Index: code/branches/kicklib2/src/libraries/core/command/ArgumentCompletionFunctions.cc
===================================================================
--- code/branches/kicklib2/src/libraries/core/command/ArgumentCompletionFunctions.cc	(revision 8284)
+++ code/branches/kicklib2/src/libraries/core/command/ArgumentCompletionFunctions.cc	(revision 8285)
@@ -35,5 +35,4 @@
 
 #include <map>
-#include <boost/version.hpp>
 #include <boost/filesystem.hpp>
 
@@ -47,14 +46,13 @@
 #include "TclThreadManager.h"
 
-// Boost 1.36 has some issues with deprecated functions that have been omitted
-#if (BOOST_VERSION == 103600)
-#  define BOOST_LEAF_FUNCTION filename
-#  define BOOST_DICTIONARY_ENTRY_NAME string
-#elif (BOOST_FILESYSTEM_VERSION < 3)
-#  define BOOST_LEAF_FUNCTION leaf
-#  define BOOST_DICTIONARY_ENTRY_NAME string
+// Differentiate Boost Filesystem v2 and v3
+#if (BOOST_FILESYSTEM_VERSION < 3)
+#  define BF_LEAF leaf
+#  define BF_GENERIC_STRING string
+#  define BF_DICTIONARY_ENTRY_NAME string
 #else
-#  define BOOST_LEAF_FUNCTION path().filename().string
-#  define BOOST_DICTIONARY_ENTRY_NAME path().string
+#  define BF_LEAF path().filename().string
+#  define BF_GENERIC_STRING generic_string
+#  define BF_DICTIONARY_ENTRY_NAME path().string
 #endif
 
@@ -250,5 +248,5 @@
                 else
                 {
-                    const std::string& dir = startdirectory.string();
+                    const std::string& dir = startdirectory.BF_GENERIC_STRING();
                     if (dir.size() > 0 && dir[dir.size() - 1] == ':')
                         startdirectory = dir + '/';
@@ -262,7 +260,7 @@
                 {
                     if (boost::filesystem::is_directory(*file))
-                        dirlist.push_back(ArgumentCompletionListElement(file->BOOST_DICTIONARY_ENTRY_NAME() + '/', getLowercase(file->BOOST_DICTIONARY_ENTRY_NAME()) + '/', file->BOOST_LEAF_FUNCTION() + '/'));
+                        dirlist.push_back(ArgumentCompletionListElement(file->BF_DICTIONARY_ENTRY_NAME() + '/', getLowercase(file->BF_DICTIONARY_ENTRY_NAME()) + '/', file->BF_LEAF() + '/'));
                     else
-                        filelist.push_back(ArgumentCompletionListElement(file->BOOST_DICTIONARY_ENTRY_NAME(), getLowercase(file->BOOST_DICTIONARY_ENTRY_NAME()), file->BOOST_LEAF_FUNCTION()));
+                        filelist.push_back(ArgumentCompletionListElement(file->BF_DICTIONARY_ENTRY_NAME(), getLowercase(file->BF_DICTIONARY_ENTRY_NAME()), file->BF_LEAF()));
                     ++file;
                 }
Index: code/branches/kicklib2/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/branches/kicklib2/src/orxonox/sound/SoundManager.cc	(revision 8284)
+++ code/branches/kicklib2/src/orxonox/sound/SoundManager.cc	(revision 8285)
@@ -330,4 +330,5 @@
         ALenum error = alGetError();
         if (error == AL_INVALID_VALUE)
+            // @TODO: Follow this constantly appearing, nerve-racking warning
             COUT(2) << "Sound: OpenAL: Invalid listener position" << std::endl;
     }
