Index: code/branches/gui/src/core/input/InputManager.cc
===================================================================
--- code/branches/gui/src/core/input/InputManager.cc	(revision 1656)
+++ code/branches/gui/src/core/input/InputManager.cc	(revision 1659)
@@ -59,7 +59,8 @@
 namespace orxonox
 {
-    SetConsoleCommandShortcut(InputManager, keyBind);
-    SetConsoleCommandShortcut(InputManager, storeKeyStroke);
-    SetConsoleCommandShortcut(InputManager, calibrate);
+    SetConsoleCommand(InputManager, keyBind, true);
+    SetConsoleCommand(InputManager, storeKeyStroke, true);
+    SetConsoleCommand(InputManager, calibrate, true);
+    SetConsoleCommand(InputManager, reload, false);
 
     std::string InputManager::bindingCommmandString_s = "";
@@ -132,7 +133,8 @@
     void InputManager::initialise(size_t windowHnd, int windowWidth, int windowHeight, bool joyStickSupport)
     {
-        if (internalState_ == Uninitialised)
-        {
-            CCOUT(3) << "Initialising Input System..." << std::endl;
+        CCOUT(3) << "Initialising Input System..." << std::endl;
+
+        if (!(internalState_ & OISReady))
+        {
             CCOUT(4) << "Initialising OIS components..." << std::endl;
 
@@ -169,7 +171,19 @@
             _clearBuffers();
 
+            // load joy stick calibration
+            setConfigValues();
+
+            internalState_ |= OISReady;
+
             CCOUT(ORX_DEBUG) << "Initialising OIS components done." << std::endl;
-
-            setConfigValues();
+        }
+        else
+        {
+            CCOUT(2) << "Warning: OIS compoments already initialised, skipping" << std::endl;
+        }
+
+        if (!(internalState_ & InternalsReady))
+        {
+            CCOUT(4) << "Initialising InputStates components..." << std::endl;
 
             stateEmpty_ = createInputState<SimpleInputState>("empty", -1);
@@ -188,14 +202,12 @@
             stateCalibrator_->setKeyHandler(buffer);
 
-            _updateActiveStates();
-
-            internalState_ = Ready;
-
-            CCOUT(3) << "Initialising complete." << std::endl;
-        }
-        else
-        {
-            CCOUT(2) << "Warning: OIS compoments already initialised, skipping" << std::endl;
-        }
+            internalState_ |= InternalsReady;
+
+            CCOUT(4) << "Initialising InputStates complete." << std::endl;
+        }
+
+        _updateActiveStates();
+
+        CCOUT(3) << "Initialising complete." << std::endl;
     }
 
@@ -486,4 +498,5 @@
 
             joySticks_.clear();
+            _redimensionLists();
         }
         CCOUT(4) << "Joy sticks destroyed." << std::endl;
@@ -543,8 +556,8 @@
             internalState_ |= ReloadRequest;
             // Misuse of internalState_: We can easily store the joyStickSupport bool.
-            // use Uninitialised as 0 value in order to use the overloaded |= operator
+            // use Uninitialised as 0 value in order to make use of the overloaded |= operator
             internalState_ |= joyStickSupport ? JoyStickSupport : Uninitialised;
         }
-        else if (internalState_ == Ready)
+        else if (internalState_ & OISReady)
         {
             _reload(joyStickSupport);
@@ -571,5 +584,6 @@
             int mouseHeight = mouse_->getMouseState().height;
 
-            internalState_ = Uninitialised;
+            internalState_ &= ~OISReady;
+
             // destroy the devices
             _destroyKeyboard();
@@ -674,5 +688,5 @@
         }
 
-        internalState_ &= ~Ready;
+        internalState_ &= ~Ticking;
     }
 
@@ -1257,3 +1271,12 @@
         getInstance().requestEnterState("calibrator");
     }
+
+    /**
+    @brief
+        Reloads the input system
+    */
+    void InputManager::reload(bool joyStickSupport)
+    {
+        getInstance().reloadInputSystem(joyStickSupport);
+    }
 }
Index: code/branches/gui/src/core/input/InputManager.h
===================================================================
--- code/branches/gui/src/core/input/InputManager.h	(revision 1656)
+++ code/branches/gui/src/core/input/InputManager.h	(revision 1659)
@@ -92,10 +92,11 @@
         enum InputManagerState
         {
-            Uninitialised    = 0,
-            Ready            = 1,
-            Ticking          = 2,
-            Calibrating      = 4,
-            ReloadRequest    = 8,
-            JoyStickSupport  = 16 // used with ReloadRequest to store a bool
+            Uninitialised    = 0x00,
+            OISReady         = 0x01,
+            InternalsReady   = 0x02,
+            Ticking          = 0x04,
+            Calibrating      = 0x08,
+            ReloadRequest    = 0x10,
+            JoyStickSupport  = 0x20 // used with ReloadRequest to store a bool
         };
 
@@ -139,4 +140,5 @@
         static void keyBind(const std::string& command);
         static void calibrate();
+        static void reload(bool joyStickSupport = true);
 
     private: // functions
Index: code/branches/gui/src/core/input/SimpleInputState.cc
===================================================================
--- code/branches/gui/src/core/input/SimpleInputState.cc	(revision 1656)
+++ code/branches/gui/src/core/input/SimpleInputState.cc	(revision 1659)
@@ -55,5 +55,5 @@
         joyStickHandler_.resize(n);
 
-        if (oldSize > n)
+        if (n > oldSize)
         {
             // we have to add the handler in joyStickHandlerAll_ to the joyStickHandler_[>n]
Index: code/branches/gui/src/orxonox/gui/GUIManager.cc
===================================================================
--- code/branches/gui/src/orxonox/gui/GUIManager.cc	(revision 1656)
+++ code/branches/gui/src/orxonox/gui/GUIManager.cc	(revision 1659)
@@ -37,5 +37,4 @@
 
 #include <OgreRenderWindow.h>
-#include <OgreCEGUIRenderer.h>
 #include <OgreRoot.h>
 #include <CEGUI.h>
@@ -49,4 +48,5 @@
 #include "tolua/tolua_bind.h"
 #include "GraphicsEngine.h"
+#include "OgreCEGUIRenderer.h"
 
 extern "C" {
Index: code/branches/gui/visual_studio/base_properties.vsprops
===================================================================
--- code/branches/gui/visual_studio/base_properties.vsprops	(revision 1656)
+++ code/branches/gui/visual_studio/base_properties.vsprops	(revision 1659)
@@ -8,5 +8,5 @@
 	<Tool
 		Name="VCCLCompilerTool"
-		AdditionalIncludeDirectories="&quot;$(RootDir)&quot;;&quot;$(RootDir)src&quot;;&quot;$(RootDir)src\orxonox&quot;;&quot;$(RootDir)src\tolua&quot;;&quot;$(RootDir)src\ois&quot;;&quot;$(LibDir)ogre-1.4.8\OgreMain\include&quot;;&quot;$(LibDir)boost-1.35.0&quot;;&quot;$(LibDir)cegui-0.6.1\include&quot;;&quot;$(LibDir)cegui-0.6.1\ScriptingModules\CEGUILua\LuaScriptModule\include&quot;;&quot;$(LibDir)enet-1.2\include&quot;;&quot;$(LibDir)libogg-1.1.3\include&quot;;&quot;$(LibDir)libvorbis-1.2.0\include&quot;;&quot;$(LibDir)lua-5.1.3\src&quot;;&quot;$(LibDir)openal-1.1\include&quot;;&quot;$(LibDir)openal-1.1\alut\include&quot;;&quot;$(LibDir)tcl-8.5.\generic&quot;;&quot;$(LibDir)zlib-1.2.3&quot;;&quot;$(LibDir)ogre-1.4.9\Samples\Common\CEGUIRenderer\include&quot;"
+		AdditionalIncludeDirectories="&quot;$(RootDir)&quot;;&quot;$(RootDir)src&quot;;&quot;$(RootDir)src\orxonox&quot;;&quot;$(RootDir)src\tolua&quot;;&quot;$(RootDir)src\ois&quot;;&quot;$(LibDir)ogre-1.4.9\OgreMain\include&quot;;&quot;$(LibDir)boost-1.35.0&quot;;&quot;$(LibDir)cegui-0.6.1\include&quot;;&quot;$(LibDir)cegui-0.6.1\ScriptingModules\CEGUILua\LuaScriptModule\include&quot;;&quot;$(LibDir)enet-1.2\include&quot;;&quot;$(LibDir)libogg-1.1.3\include&quot;;&quot;$(LibDir)libvorbis-1.2.0\include&quot;;&quot;$(LibDir)lua-5.1.3\src&quot;;&quot;$(LibDir)openal-1.1\include&quot;;&quot;$(LibDir)openal-1.1\alut\include&quot;;&quot;$(LibDir)tcl-8.5.\generic&quot;;&quot;$(LibDir)zlib-1.2.3&quot;"
 		PreprocessorDefinitions="WIN32;__WIN32__;_WIN32;BOOST_ALL_DYN_LINK;OIS_DYNAMIC_LIB; ZLIB_WINAPI"
 		WarningLevel="3"
