Index: code/trunk/src/orxonox/gamestates/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/gamestates/CMakeLists.txt	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/CMakeLists.txt	(revision 5693)
@@ -1,3 +1,3 @@
-ADD_SOURCE_FILES(ORXONOX_SRC_FILES
+SET_SOURCE_FILES(GAMESTATES_SRC_FILES
   GSClient.cc
   GSDedicated.cc
@@ -10,2 +10,11 @@
   GSStandalone.cc
 )
+
+ORXONOX_ADD_LIBRARY(gamestates
+  MODULE
+  DEFINE_SYMBOL
+    "GAMESTATES_SHARED_BUILD"
+  LINK_LIBRARIES
+    orxonox
+  SOURCE_FILES ${GAMESTATES_SRC_FILES}
+)
Index: code/trunk/src/orxonox/gamestates/GSClient.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSClient.cc	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSClient.cc	(revision 5693)
@@ -40,5 +40,5 @@
     DeclareGameState(GSClient, "client", false, true);
 
-    SetCommandLineArgument(ip, "127.0.0.1").information("Sever IP as strin in the form #.#.#.#");
+    SetCommandLineArgument(ip, "127.0.0.1").information("Sever IP as string in the form #.#.#.#");
 
     GSClient::GSClient(const GameStateInfo& info)
Index: code/trunk/src/orxonox/gamestates/GSClient.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSClient.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSClient.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _GSClient_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 
 #include "core/GameState.h"
@@ -37,5 +37,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport GSClient : public GameState
+    class _GameStatesExport GSClient : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GSDedicated.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSDedicated.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSDedicated.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _GSDedicated_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 
 #include "core/GameState.h"
@@ -44,6 +44,6 @@
 namespace orxonox
 {
-    
-    class _OrxonoxExport GSDedicated : public GameState
+
+    class _GameStatesExport GSDedicated : public GameState
     {
     public:
@@ -61,10 +61,10 @@
         void setTerminalMode();
         static void resetTerminalMode();
-        
+
         void insertCharacter( unsigned int position, char c );
         void deleteCharacter( unsigned int position );
-        
+
         Server*                 server_;
-        
+
         boost::thread           *inputThread_;
         boost::recursive_mutex  inputLineMutex_;
@@ -76,5 +76,5 @@
         std::queue<std::string> commandQueue_;
         static termios*         originalTerminalSettings_;
-        
+
         unsigned int            cursorX_;
         unsigned int            cursorY_;
Index: code/trunk/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSGraphics.cc	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSGraphics.cc	(revision 5693)
@@ -47,9 +47,9 @@
 #include "core/Loader.h"
 #include "core/XMLFile.h"
-#include "overlays/console/InGameConsole.h"
+#include "InGameConsole.h"
 #include "sound/SoundManager.h"
 
 // HACK:
-#include "overlays/map/Map.h"
+#include "Map.h"
 
 namespace orxonox
Index: code/trunk/src/orxonox/gamestates/GSGraphics.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSGraphics.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSGraphics.h	(revision 5693)
@@ -36,5 +36,5 @@
 #define _GSGraphics_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 #include "core/GameState.h"
 
@@ -47,5 +47,5 @@
         This game state is only left out if we start a dedicated server where no graphics are present.
     */
-    class _OrxonoxExport GSGraphics : public GameState
+    class _GameStatesExport GSGraphics : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GSIOConsole.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSIOConsole.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSIOConsole.h	(revision 5693)
@@ -30,10 +30,10 @@
 #define _GSIOConsole_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 #include "core/GameState.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSIOConsole : public GameState
+    class _GameStatesExport GSIOConsole : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 5693)
@@ -45,8 +45,6 @@
 #include "core/XMLFile.h"
 
-#include "interfaces/Tickable.h"
+#include "tools/interfaces/Tickable.h"
 #include "objects/Radar.h"
-#include "objects/quest/QuestManager.h"
-#include "overlays/notifications/NotificationManager.h"
 #include "CameraManager.h"
 #include "LevelManager.h"
@@ -110,7 +108,5 @@
         this->playerManager_ = new PlayerManager();
 
-        this->questManager_ = new QuestManager();
-
-        this->notificationManager_ = new NotificationManager();
+        this->scope_GSLevel_ = new Scope<ScopeID::GSLevel>();
 
         if (GameMode::isMaster())
@@ -201,14 +197,8 @@
         }
 
-        if (this->questManager_)
-        {
-            delete this->questManager_;
-            this->questManager_ = NULL;
-        }
-
-        if (this->notificationManager_)
-        {
-            delete this->notificationManager_;
-            this->notificationManager_ = NULL;
+        if (this->scope_GSLevel_)
+        {
+            delete this->scope_GSLevel_;
+            this->scope_GSLevel_ = NULL;
         }
 
Index: code/trunk/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevel.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSLevel.h	(revision 5693)
@@ -30,7 +30,8 @@
 #define _GSLevel_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 
 #include <string>
+#include "util/Scope.h"
 #include "core/OrxonoxClass.h"
 #include "core/GameState.h"
@@ -38,5 +39,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport GSLevel : public GameState, public OrxonoxClass
+    class _GameStatesExport GSLevel : public GameState, public OrxonoxClass
     {
     public:
@@ -62,13 +63,12 @@
         void keybindInternal(const std::string& command, bool bTemporary);
 
-        KeyBinder*            keyBinder_;               //!< tool that loads and manages the input bindings
-        InputState*           gameInputState_;          //!< input state for normal ingame playing
-        InputState*           guiMouseOnlyInputState_;  //!< input state if we only need the mouse to use the GUI
-        InputState*           guiKeysOnlyInputState_;   //!< input state if we only need the keys to use the GUI
-        Radar*                radar_;                   //!< represents the Radar (not the HUD part)
-        CameraManager*        cameraManager_;           //!< camera manager for this level
-        PlayerManager*        playerManager_;           //!< player manager for this level
-        QuestManager*         questManager_;
-        NotificationManager*  notificationManager_;
+        KeyBinder*               keyBinder_;               //!< tool that loads and manages the input bindings
+        InputState*              gameInputState_;          //!< input state for normal ingame playing
+        InputState*              guiMouseOnlyInputState_;  //!< input state if we only need the mouse to use the GUI
+        InputState*              guiKeysOnlyInputState_;   //!< input state if we only need the keys to use the GUI
+        Radar*                   radar_;                   //!< represents the Radar (not the HUD part)
+        CameraManager*           cameraManager_;           //!< camera manager for this level
+        PlayerManager*           playerManager_;           //!< player manager for this level
+        Scope<ScopeID::GSLevel>* scope_GSLevel_;
 
         //##### ConfigValues #####
Index: code/trunk/src/orxonox/gamestates/GSMainMenu.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMainMenu.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSMainMenu.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _GSMainMenu_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 
 #include "util/OgreForwardRefs.h"
@@ -37,5 +37,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport GSMainMenu : public GameState
+    class _GameStatesExport GSMainMenu : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 5693)
@@ -38,6 +38,6 @@
 #include "ToluaBindOrxonox.h"
 #include "tools/Timer.h"
-#include "interfaces/TimeFactorListener.h"
-#include "interfaces/Tickable.h"
+#include "tools/interfaces/TimeFactorListener.h"
+#include "tools/interfaces/Tickable.h"
 #include "LevelManager.h"
 
Index: code/trunk/src/orxonox/gamestates/GSRoot.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSRoot.h	(revision 5693)
@@ -30,10 +30,10 @@
 #define _GSRoot_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 #include "core/GameState.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSRoot : public GameState
+    class _GameStatesExport GSRoot : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GSServer.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSServer.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSServer.h	(revision 5693)
@@ -30,5 +30,5 @@
 #define _GSServer_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 
 #include "core/GameState.h"
@@ -37,5 +37,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport GSServer : public GameState
+    class _GameStatesExport GSServer : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GSStandalone.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSStandalone.h	(revision 3370)
+++ code/trunk/src/orxonox/gamestates/GSStandalone.h	(revision 5693)
@@ -30,10 +30,10 @@
 #define _GSStandalone_H__
 
-#include "OrxonoxPrereqs.h"
+#include "gamestates/GameStatesPrereqs.h"
 #include "core/GameState.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSStandalone : public GameState
+    class _GameStatesExport GSStandalone : public GameState
     {
     public:
Index: code/trunk/src/orxonox/gamestates/GameStatesPrereqs.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GameStatesPrereqs.h	(revision 5693)
+++ code/trunk/src/orxonox/gamestates/GameStatesPrereqs.h	(revision 5693)
@@ -0,0 +1,60 @@
+/*
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+  @file
+  @brief Contains all the necessary forward declarations for all classes and structs.
+*/
+
+#ifndef _GameStatesPrereqs_H__
+#define _GameStatesPrereqs_H__
+
+#include "OrxonoxConfig.h"
+
+#include "OrxonoxPrereqs.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(ORXONOX_STATIC_BUILD)
+#  ifdef GAMESTATES_SHARED_BUILD
+#    define _GameStatesExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _GameStatesExport
+#    else
+#      define _GameStatesExport __declspec(dllimport)
+#    endif
+#  endif
+#elif defined ( ORXONOX_GCC_VISIBILITY )
+#  define _GameStatesExport  __attribute__ ((visibility("default")))
+#else
+#  define _GameStatesExport
+#endif
+
+#endif /* _GameStatesPrereqs_H__ */
