Index: /code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.cc	(revision 2226)
@@ -73,5 +73,6 @@
     {
         SUPER(AddQuest, XMLPort, xmlelement, mode);
-
+        
+        COUT(3) << "New AddQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
     }
 
@@ -97,5 +98,5 @@
         {
             Quest* quest = QuestManager::findQuest(this->getQuestId());
-            if(!quest->start(player))
+            if(quest == NULL || !quest->start(player))
             {
                return false;
Index: /code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2226)
@@ -74,5 +74,6 @@
 
         XMLPortParam(AddQuestHint, "hintId", setHintId, getHintId, xmlelement, mode);
-
+        
+        COUT(3) << "New AddQuestHint, with target QuestHint {" << this->getHintId() << "}, created." << std::endl;
     }
 
@@ -113,8 +114,10 @@
         }
 
+        COUT(3) << "AddQuestHint on player: " << player << " ." << std::endl;
+
         try
         {
             QuestHint* hint = QuestManager::findHint(this->hintId_);
-            if(!hint->setActive(player))
+            if(hint == NULL || !hint->setActive(player))
             {
                 return false;
@@ -127,4 +130,5 @@
         }
 
+        COUT(3) << "QuestHint {" << this->getHintId() << "} successfully added to player." << std::endl;
         return true;
 
Index: /code/branches/questsystem2/src/orxonox/objects/quest/AddReward.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/AddReward.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/AddReward.cc	(revision 2226)
@@ -70,5 +70,6 @@
 
         XMLPortObject(AddReward, Rewardable, "", addRewardable, getRewardables, xmlelement, mode);
-
+        
+        COUT(3) << "New AddReward, with " << this->rewards_size() << " Rewardables created." << std::endl;
     }
 
Index: /code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.cc	(revision 2226)
@@ -61,4 +61,15 @@
     /**
     @brief
+        Method for creating a ChangeQuestStatus object through XML.
+    */
+    void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(ChangeQuestStatus, XMLPort, xmlelement, mode);
+
+        XMLPortParam(ChangeQuestStatus, "questId", setQuestId, getQuestId, xmlelement, mode);
+    }
+
+    /**
+    @brief
         Sets the id of the Quest the Questffect changes the status of.
     @param id
@@ -79,14 +90,3 @@
     }
 
-    /**
-    @brief
-        Method for creating a ChangeQuestStatus object through XML.
-    */
-    void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(ChangeQuestStatus, XMLPort, xmlelement, mode);
-
-        XMLPortParam(ChangeQuestStatus, "questId", setQuestId, getQuestId, xmlelement, mode);
-    }
-
 }
Index: /code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2226)
@@ -71,4 +71,6 @@
     {
         SUPER(CompleteQuest, XMLPort, xmlelement, mode);
+        
+        COUT(3) << "New CompleteQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
     }
 
@@ -96,5 +98,5 @@
         {
             quest = QuestManager::findQuest(this->getQuestId());
-            if(!quest->complete(player))
+            if(quest == NULL || !quest->complete(player))
             {
                return false;
Index: /code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.cc	(revision 2226)
@@ -71,4 +71,6 @@
     {
         SUPER(FailQuest, XMLPort, xmlelement, mode);
+        
+        COUT(3) << "New FailQUest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
     }
 
@@ -89,8 +91,11 @@
         }
 
+        COUT(3) << "FailQuest on player: " << player << " ." << std::endl;
+
+        Quest* quest;
         try
         {
-            Quest* quest = QuestManager::findQuest(this->getQuestId());
-            if(!quest->fail(player))
+            quest = QuestManager::findQuest(this->getQuestId());
+            if(quest == NULL || !quest->fail(player))
             {
                return false;
@@ -102,5 +107,6 @@
             return false;
         }
-
+        
+        COUT(3) << "Quest {" << quest->getId() << "} failed by player: " << player << " ." << std::endl;
         return true;
     }
Index: /code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.cc	(revision 2226)
@@ -147,5 +147,5 @@
     bool GlobalQuest::isStartable(const PlayerInfo* player) const
     {
-        return this->isInactive(player) ||  this->isActive(player);
+        return (this->isInactive(player) && !(this->status_ == questStatus::completed || this->status_ == questStatus::failed));
     }
 
Index: /code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.h
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.h	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.h	(revision 2226)
@@ -101,4 +101,5 @@
 
             virtual questStatus::Enum getStatus(const PlayerInfo* player) const; //!< Returns the status of the Quest for a specific player.
+            
             virtual bool setStatus(PlayerInfo* player, const questStatus::Enum & status); //!< Sets the status for a specific player.
 
Index: /code/branches/questsystem2/src/orxonox/objects/quest/Quest.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/Quest.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/Quest.cc	(revision 2226)
@@ -79,5 +79,5 @@
         XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffect, xmlelement, mode);
 
-        QuestManager::registerQuest(this); //Registers the quest with the QuestManager.
+        QuestManager::registerQuest(this); //!<Registers the Quest with the QuestManager.
     }
 
Index: /code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.cc	(revision 2226)
@@ -79,4 +79,6 @@
         XMLPortParam(QuestEffectBeacon, "times", setTimes, getTimes, xmlelement, mode);
         XMLPortObject(QuestEffectBeacon, QuestEffect, "effects", addEffect, getEffect, xmlelement, mode);
+        
+        COUT(3) << "New QuestEffectBeacon created." << std::endl;
     }
     
@@ -107,6 +109,5 @@
         if(!b)
         {
-            //TDO: Better message, please.
-            COUT(2) << "b is false." << std::endl;
+            return false;
         }
         if(!(this->isActive())) //!< If the QuestEffectBeacon is inactive it cannot be executed.
@@ -126,5 +127,5 @@
         if(entity == NULL)
         {
-            COUT(2) << "No one triggered the beacon? Curious!" << std::endl;
+            COUT(2) << "The QuestEffectBeacon was triggered by an entity other than a ControllableEntity." << std::endl;
             return false;
         }
Index: /code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.h
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.h	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.h	(revision 2226)
@@ -71,7 +71,10 @@
             <events>
 		<execute>
-		    <PlayerTrigger /> //A PlayerTrigger triggering the execution of the QuestEffectBeacon.
+		    <EventListener event=eventIdString />
 		</execute>
 	    </events>
+	    <attached>
+	       <PlayerTrigger name=eventIdString /> //A PlayerTrigger triggering the execution of the QuestEffectBeacon.
+	    </attached>
 	</QuestEffectBeacon>
     @author
Index: /code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.cc
===================================================================
--- /code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.cc	(revision 2225)
+++ /code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.cc	(revision 2226)
@@ -40,4 +40,5 @@
 
 #include "orxonox/objects/infos/PlayerInfo.h"
+#include "QuestManager.h"
 #include "Quest.h"
 
@@ -72,4 +73,6 @@
         SUPER(QuestHint, XMLPort, xmlelement, mode);
 
+        QuestManager::registerHint(this); //!< Registers the QuestHint with the QuestManager.
+        
         COUT(3) << "New QuestHint {" << this->getId() << "} created." << std::endl;
     }
