Index: code/branches/questsystem5/src/orxonox/objects/quest/AddQuest.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/AddQuest.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/AddQuest.cc	(revision 2785)
@@ -97,5 +97,5 @@
         try
         {
-            Quest* quest = QuestManager::findQuest(this->getQuestId());
+            Quest* quest = QuestManager::getInstance().findQuest(this->getQuestId());
             if(quest == NULL || !quest->start(player))
             {
Index: code/branches/questsystem5/src/orxonox/objects/quest/AddQuestHint.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2785)
@@ -117,5 +117,5 @@
         try
         {
-            QuestHint* hint = QuestManager::findHint(this->hintId_);
+            QuestHint* hint = QuestManager::getInstance().findHint(this->hintId_);
             if(hint == NULL || !hint->setActive(player))
             {
Index: code/branches/questsystem5/src/orxonox/objects/quest/CompleteQuest.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2785)
@@ -96,5 +96,5 @@
         try
         {
-            quest = QuestManager::findQuest(this->getQuestId());
+            quest = QuestManager::getInstance().findQuest(this->getQuestId());
             if(quest == NULL || !quest->complete(player))
             {
Index: code/branches/questsystem5/src/orxonox/objects/quest/FailQuest.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/FailQuest.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/FailQuest.cc	(revision 2785)
@@ -95,5 +95,5 @@
         try
         {
-            quest = QuestManager::findQuest(this->getQuestId());
+            quest = QuestManager::getInstance().findQuest(this->getQuestId());
             if(quest == NULL || !quest->fail(player))
             {
Index: code/branches/questsystem5/src/orxonox/objects/quest/Quest.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/Quest.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/Quest.cc	(revision 2785)
@@ -79,5 +79,5 @@
         XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffect, xmlelement, mode);
 
-        QuestManager::registerQuest(this); //!<Registers the Quest with the QuestManager.
+        QuestManager::getInstance().registerQuest(this); //!<Registers the Quest with the QuestManager.
     }
 
Index: code/branches/questsystem5/src/orxonox/objects/quest/QuestHint.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/QuestHint.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/QuestHint.cc	(revision 2785)
@@ -73,5 +73,5 @@
         SUPER(QuestHint, XMLPort, xmlelement, mode);
 
-        QuestManager::registerHint(this); //!< Registers the QuestHint with the QuestManager.
+        QuestManager::getInstance().registerHint(this); //!< Registers the QuestHint with the QuestManager.
         
         COUT(3) << "New QuestHint {" << this->getId() << "} created." << std::endl;
Index: code/branches/questsystem5/src/orxonox/objects/quest/QuestListener.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/QuestListener.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/QuestListener.cc	(revision 2785)
@@ -112,5 +112,5 @@
     bool QuestListener::setQuestId(const std::string & id)
     {
-        this->quest_ = QuestManager::findQuest(id); //!< Find the Quest corresponding to the given questId.
+        this->quest_ = QuestManager::getInstance().findQuest(id); //!< Find the Quest corresponding to the given questId.
         
         if(this->quest_ == NULL) //!< If there is no such Quest.
Index: code/branches/questsystem5/src/orxonox/objects/quest/QuestManager.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/QuestManager.cc	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/QuestManager.cc	(revision 2785)
@@ -43,16 +43,17 @@
 namespace orxonox
 {
-    //! All Quests registered by their id's.
-    std::map<std::string, Quest*> QuestManager::questMap_s;
-    //! All QuestHints registered by their id's.
-    std::map<std::string, QuestHint*> QuestManager::hintMap_s;
+    //! Pointer to the current (and single) instance of this class.
+    QuestManager* QuestManager::singletonRef_s = NULL;
 
     /**
     @brief
         Constructor. Registers the object.
-    */
-    QuestManager::QuestManager(BaseObject* creator) : BaseObject(creator)
-    {
-        RegisterObject(QuestManager);
+    @todo
+        Is inheriting from BaseObject proper?
+    */
+    QuestManager::QuestManager() : BaseObject(this)
+    {
+        RegisterRootObject(QuestManager);
+
     }
 
@@ -64,4 +65,19 @@
     {
 
+    }
+
+    /**
+    @brief
+        Returns a reference to the current (and single) instance of the QuestManager, and creates one if there isn't one to begin with.
+    @return
+        Returns a reference to the single instance of the Quest Manager.
+    */
+    /*static*/ QuestManager & QuestManager::getInstance()
+    {
+        if(singletonRef_s == NULL)
+        {
+            singletonRef_s = new QuestManager();
+        }
+        return *singletonRef_s;
     }
 
@@ -75,5 +91,5 @@
         Returns true if successful, false if not.
     */
-    /*static*/ bool QuestManager::registerQuest(Quest* quest)
+    bool QuestManager::registerQuest(Quest* quest)
     {
         if(quest == NULL) //!< Doh! Just as if there were actual quests behind NULL-pointers.
@@ -84,5 +100,5 @@
 
         std::pair<std::map<std::string, Quest*>::iterator,bool> result;
-        result = questMap_s.insert( std::pair<std::string,Quest*>(quest->getId(),quest) ); //!< Inserting the Quest.
+        result = this->questMap_.insert( std::pair<std::string,Quest*>(quest->getId(),quest) ); //!< Inserting the Quest.
 
         if(result.second) //!< If inserting was a success.
@@ -107,5 +123,5 @@
         Returns true if successful, false if not.
     */
-    /*static*/ bool QuestManager::registerHint(QuestHint* hint)
+    bool QuestManager::registerHint(QuestHint* hint)
     {
         if(hint == NULL) //!< Still not liking NULL-pointers.
@@ -116,5 +132,5 @@
 
         std::pair<std::map<std::string, QuestHint*>::iterator,bool> result;
-        result = hintMap_s.insert ( std::pair<std::string,QuestHint*>(hint->getId(),hint) ); //!< Inserting the QuestHSint.
+        result = this->hintMap_.insert ( std::pair<std::string,QuestHint*>(hint->getId(),hint) ); //!< Inserting the QuestHSint.
 
         if(result.second) //!< If inserting was a success.
@@ -141,5 +157,5 @@
         Throws an exception if the given questId is invalid.
     */
-    /*static*/ Quest* QuestManager::findQuest(const std::string & questId)
+    Quest* QuestManager::findQuest(const std::string & questId)
     {
         if(!QuestItem::isId(questId)) //!< Check vor validity of the given id.
@@ -149,6 +165,6 @@
 
         Quest* quest;
-        std::map<std::string, Quest*>::iterator it = questMap_s.find(questId);
-        if (it != questMap_s.end()) //!< If the Quest is registered.
+        std::map<std::string, Quest*>::iterator it = this->questMap_.find(questId);
+        if (it != this->questMap_.end()) //!< If the Quest is registered.
         {
             quest = it->second;
@@ -175,5 +191,5 @@
         Throws an exception if the given hintId is invalid.
     */
-    /*static*/ QuestHint* QuestManager::findHint(const std::string & hintId)
+    QuestHint* QuestManager::findHint(const std::string & hintId)
     {
         if(!QuestItem::isId(hintId)) //!< Check vor validity of the given id.
@@ -183,6 +199,6 @@
 
         QuestHint* hint;
-        std::map<std::string, QuestHint*>::iterator it = hintMap_s.find(hintId);
-        if (it != hintMap_s.end()) //!< If the QuestHint is registered.
+        std::map<std::string, QuestHint*>::iterator it = this->hintMap_.find(hintId);
+        if (it != this->hintMap_.end()) //!< If the QuestHint is registered.
         {
             hint = it->second;
Index: code/branches/questsystem5/src/orxonox/objects/quest/QuestManager.h
===================================================================
--- code/branches/questsystem5/src/orxonox/objects/quest/QuestManager.h	(revision 2779)
+++ code/branches/questsystem5/src/orxonox/objects/quest/QuestManager.h	(revision 2785)
@@ -46,5 +46,5 @@
     /**
     @brief
-        Is a static class and manages Quests, by registering every Quest/QuestHint (through registerX()) and making them globally accessable (through findX()).
+        Is a Singleton and manages Quests, by registering every Quest/QuestHint (through registerX()) and making them globally accessable (through findX()).
         Quests (and QuestHints) are registered in the QuestManager with their id, and can be accessed in the same way.
     @author
@@ -54,17 +54,23 @@
     {
 
+        protected:
+            QuestManager();
+
         public:
-            QuestManager(BaseObject* creator);
             virtual ~QuestManager();
 
-            static bool registerQuest(Quest* quest); //!< Registers a Quest in the QuestManager.
-            static bool registerHint(QuestHint* quest); //!< Registers a QuestHint in the QuestManager.
+            static QuestManager& getInstance(); //!< Returns a reference to the single instance of the Quest Manager.
 
-            static Quest* findQuest(const std::string & questId); //!< Returns the Quest with the input id.
-            static QuestHint* findHint(const std::string & hintId); //!< Returns the QuestHint with the input id.
+            bool registerQuest(Quest* quest); //!< Registers a Quest in the QuestManager.
+            bool registerHint(QuestHint* quest); //!< Registers a QuestHint in the QuestManager.
+
+            Quest* findQuest(const std::string & questId); //!< Returns the Quest with the input id.
+            QuestHint* findHint(const std::string & hintId); //!< Returns the QuestHint with the input id.
 
         private:
-            static std::map<std::string, Quest*> questMap_s; //!< All Quests registered by their id's.
-            static std::map<std::string, QuestHint*> hintMap_s; //!< All QuestHints registered by their id's.
+            static QuestManager* singletonRef_s;
+
+            std::map<std::string, Quest*> questMap_; //!< All Quests registered by their id's.
+            std::map<std::string, QuestHint*> hintMap_; //!< All QuestHints registered by their id's.
 
     };
