Index: code/branches/core5/src/libraries/core/Core.cc
===================================================================
--- code/branches/core5/src/libraries/core/Core.cc	(revision 5868)
+++ code/branches/core5/src/libraries/core/Core.cc	(revision 5869)
@@ -70,5 +70,4 @@
 #include "TclThreadManager.h"
 #include "input/InputManager.h"
-#include "input/KeyBinderManager.h"
 
 namespace orxonox
@@ -290,7 +289,4 @@
         inputManager_.reset(new InputManager());
 
-        // Manages KeyBinders and makes them available
-        keyBinderManager_.reset(new KeyBinderManager());
-
         // load the CEGUI interface
         guiManager_.reset(new GUIManager(graphicsManager_->getRenderWindow(),
@@ -309,5 +305,4 @@
         this->graphicsScope_.reset();
         this->guiManager_.reset();
-        this->keyBinderManager_.reset();
         this->inputManager_.reset();
         this->graphicsManager_.reset();
Index: code/branches/core5/src/libraries/core/Core.h
===================================================================
--- code/branches/core5/src/libraries/core/Core.h	(revision 5868)
+++ code/branches/core5/src/libraries/core/Core.h	(revision 5869)
@@ -100,5 +100,4 @@
             scoped_ptr<GraphicsManager>   graphicsManager_;     //!< Interface to OGRE
             scoped_ptr<InputManager>      inputManager_;        //!< Interface to OIS
-            scoped_ptr<KeyBinderManager>  keyBinderManager_;    //!< Manages all KeyBinders
             scoped_ptr<GUIManager>        guiManager_;          //!< Interface to GUI
             scoped_ptr<Scope<ScopeID::Root> >     rootScope_;
Index: code/branches/core5/src/libraries/core/input/InputManager.cc
===================================================================
--- code/branches/core5/src/libraries/core/input/InputManager.cc	(revision 5868)
+++ code/branches/core5/src/libraries/core/input/InputManager.cc	(revision 5869)
@@ -53,5 +53,4 @@
 
 #include "InputBuffer.h"
-#include "KeyDetector.h"
 #include "JoyStick.h"
 #include "JoyStickQuantityListener.h"
@@ -90,5 +89,4 @@
         , bExclusiveMouse_(false)
         , emptyState_(0)
-        , keyDetector_(0)
         , calibratorCallbackHandler_(0)
     {
@@ -105,11 +103,4 @@
         emptyState_->setHandler(&InputHandler::EMPTY);
         activeStates_[emptyState_->getPriority()] = emptyState_;
-
-        // KeyDetector to evaluate a pressed key's name
-        InputState* detector = createInputState("detector", false, false, InputStatePriority::Detector);
-        // Create a callback to avoid buttonHeld events after the key has been detected
-        detector->setLeaveFunctor(createFunctor(&InputManager::clearBuffers, this));
-        keyDetector_ = new KeyDetector();
-        detector->setHandler(keyDetector_);
 
         // Joy stick calibration helper callback
@@ -274,9 +265,7 @@
 
         // Destroy calibrator helper handler and state
-        keyDetector_->destroy();
         this->destroyState("calibrator");
         // Destroy KeyDetector and state
         calibratorCallbackHandler_->destroy();
-        this->destroyState("detector");
         // destroy the empty InputState
         this->destroyStateInternal(this->emptyState_);
Index: code/branches/core5/src/libraries/core/input/InputManager.h
===================================================================
--- code/branches/core5/src/libraries/core/input/InputManager.h	(revision 5868)
+++ code/branches/core5/src/libraries/core/input/InputManager.h	(revision 5869)
@@ -195,5 +195,4 @@
         // some internally handled states and handlers
         InputState*                         emptyState_;           //!< Lowest priority states (makes handling easier)
-        KeyDetector*                        keyDetector_;          //!< KeyDetector instance
         //! InputBuffer that reacts to the Enter key when calibrating the joy sticks
         InputBuffer*                        calibratorCallbackHandler_;
Index: code/branches/core5/src/libraries/core/input/KeyBinderManager.cc
===================================================================
--- code/branches/core5/src/libraries/core/input/KeyBinderManager.cc	(revision 5868)
+++ code/branches/core5/src/libraries/core/input/KeyBinderManager.cc	(revision 5869)
@@ -34,4 +34,5 @@
 #include "core/ConsoleCommand.h"
 #include "core/CoreIncludes.h"
+#include "core/ScopedSingletonManager.h"
 #include "InputManager.h"
 #include "KeyDetector.h"
@@ -40,4 +41,5 @@
 {
     KeyBinderManager* KeyBinderManager::singletonPtr_s = 0;
+    ManageScopedSingleton(KeyBinderManager, ScopeID::Graphics);
 
     KeyBinderManager::KeyBinderManager()
Index: code/branches/core5/src/libraries/core/input/KeyDetector.cc
===================================================================
--- code/branches/core5/src/libraries/core/input/KeyDetector.cc	(revision 5868)
+++ code/branches/core5/src/libraries/core/input/KeyDetector.cc	(revision 5869)
@@ -31,5 +31,8 @@
 #include "core/ConsoleCommand.h"
 #include "core/CoreIncludes.h"
+#include "core/ScopedSingletonManager.h"
 #include "Button.h"
+#include "InputManager.h"
+#include "InputState.h"
 
 namespace orxonox
@@ -37,4 +40,5 @@
     std::string KeyDetector::callbackCommand_s = "KeyDetectorKeyPressed";
     KeyDetector* KeyDetector::singletonPtr_s = 0;
+    ManageScopedSingleton(KeyDetector, ScopeID::Graphics);
 
     KeyDetector::KeyDetector()
@@ -45,4 +49,15 @@
         CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&KeyDetector::callback,  this), callbackCommand_s));
         this->assignCommands();
+
+        inputState_ = InputManager::getInstance().createInputState("detector", false, false, InputStatePriority::Detector);
+        // Create a callback to avoid buttonHeld events after the key has been detected
+        inputState_->setLeaveFunctor(createFunctor(&InputManager::clearBuffers, &InputManager::getInstance()));
+        inputState_->setHandler(this);
+    }
+
+    KeyDetector::~KeyDetector()
+    {
+        inputState_->setHandler(NULL);
+        InputManager::getInstance().destroyState("detector");
     }
 
Index: code/branches/core5/src/libraries/core/input/KeyDetector.h
===================================================================
--- code/branches/core5/src/libraries/core/input/KeyDetector.h	(revision 5868)
+++ code/branches/core5/src/libraries/core/input/KeyDetector.h	(revision 5869)
@@ -43,5 +43,5 @@
     public:
         KeyDetector();
-        ~KeyDetector() { }
+        ~KeyDetector();
 
         void setCallback(Functor* function) { this->callbackFunction_ = function; }
@@ -55,4 +55,5 @@
 
         Functor* callbackFunction_;
+        InputState* inputState_;
         static std::string callbackCommand_s;
         static KeyDetector* singletonPtr_s;
