Index: code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file AddQuest.cc
+    @brief
+	Implementation of the AddQuest class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "AddQuest.h"
@@ -43,5 +49,8 @@
     CreateFactory(AddQuest);
 
-
+    /**
+    @brief
+        Constructor. Registers the quest.
+    */
     AddQuest::AddQuest(BaseObject* creator) : ChangeQuestStatus(creator)
     {
@@ -57,4 +66,8 @@
     }
 
+    /**
+    @brief
+        Method for creating a AddQuest object through XML.
+    */
     void AddQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -73,5 +86,5 @@
     bool AddQuest::invoke(ControllableEntity* player)
     {
-        if(player == NULL)
+        if(player == NULL) //!< Null-pointers are badass.
         {
             COUT(2) << "Input player is NULL." << std::endl;
Index: code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/AddQuest.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file AddQuest.h
+    @brief
+	Definition of the AddQuest class.
+*/
+
 #ifndef _AddQuest_H__
 #define _AddQuest_H__
@@ -41,5 +47,5 @@
     /**
     @brief
-        Adds a quest, resp. changes the quests status to active.
+        Adds a quest, resp. changes the quests status to active for the player invoking the quest.
     @author
         Damian 'Mozork' Frick
@@ -51,5 +57,5 @@
             virtual ~AddQuest();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddQuest object through XML.
 
             virtual bool invoke(ControllableEntity* player); //!< Invokes the effect.
Index: code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file AddQuestHint.cc
+    @brief
+	Implementation of the AddQuestHint class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "AddQuestHint.h"
@@ -42,4 +48,8 @@
     CreateFactory(AddQuestHint);
 
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     AddQuestHint::AddQuestHint(BaseObject* creator) : QuestEffect(creator)
     {
@@ -55,4 +65,8 @@
     }
 
+    /**
+    @brief
+        Method for creating a AddQuestHint object through XML.
+    */
     void AddQuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -63,4 +77,12 @@
     }
 
+    /**
+    @brief
+        Sets the id of the quest hint to be added to the player the effect is invoked on.
+    @param id
+        The QuestHint id.
+    @param
+        Returns true if successful.
+    */
     inline void AddQuestHint::setHintId(const std::string & id)
     {
@@ -68,7 +90,9 @@
         {
             COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return;
+            return false;
         }
+        
         this->hintId_ = id;
+        return true;
     }
 
@@ -83,5 +107,5 @@
     bool AddQuestHint::invoke(ControllableEntity* player)
     {
-        if(player == NULL)
+        if(player == NULL) //!< NULL-pointers are evil!
         {
             COUT(2) << "The input player is NULL." << std::endl;
Index: code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/AddQuestHint.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file AddQuestHint.h
+    @brief
+	Definition of the AddQuestHint class.
+*/
+
 #ifndef _AddQuestHint_H__
 #define _AddQuestHint_H__
@@ -40,5 +46,5 @@
     /**
     @brief
-        Adds a QuestHint, resp. Activates the QuestHint.
+        Adds a QuestHint, resp. activates the QuestHint of the given id for the player the effect is invoked on.
     @author
         Damian 'Mozork' Frick
@@ -50,14 +56,14 @@
             virtual ~AddQuestHint();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddQuestHint object through XML.
 
             virtual bool invoke(ControllableEntity* player); //!< Invokes the effect.
 
         private:
-            std::string hintId_;
+            std::string hintId_; //!< The id of the QuestHint.
 
-            inline const std::string & getHintId(void) const
+            inline const std::string & getHintId(void) const //!< Returns the if of the hint.
                 { return this->hintId_; }
-            void setHintId(const std::string & id);
+            void setHintId(const std::string & id); //!< Sets the id of the hint.
 
     };
Index: code/branches/questsystem2/src/orxonox/objects/quest/AddReward.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/AddReward.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/AddReward.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file AddReward.cc
+    @brief
+	Implementation of the AddReward class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "AddReward.h"
@@ -39,9 +45,11 @@
     CreateFactory(AddReward);
 
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     AddReward::AddReward(BaseObject* creator) : QuestEffect(creator)
     {
         RegisterObject(AddReward);
-
-        this->initialize();
     }
 
@@ -54,4 +62,7 @@
     }
 
+    /**
+        Method for creating a AddReward object through XML.
+    */
     void AddReward::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -64,11 +75,10 @@
     /**
     @brief
-        Initializes the object. Needs to be called first by every constructor of this class.
+        Returns the rewardbale object at the given index.
+    @param index
+        The index.
+    @return
+        Returns a pointer to the rewardable object at the given index.
     */
-    void AddReward::initialize(void)
-    {
-        RegisterObject(AddReward);
-    }
-
     const Rewardable* AddReward::getRewardables(unsigned int index) const
     {
Index: code/branches/questsystem2/src/orxonox/objects/quest/AddReward.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/AddReward.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/AddReward.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file AddReward.h
+    @brief
+	Definition of the AddReward class.
+*/
+
 #ifndef _AddReward_H__
 #define _AddReward_H__
@@ -51,16 +57,14 @@
             virtual ~AddReward();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddReward object through XML.
 
             virtual bool invoke(ControllableEntity* player); //!< Invokes the effect.
 
         private:
-            std::list<Rewardable*> rewards_;
+            std::list<Rewardable*> rewards_; //!< A list of rewards to be added to the player invoking the effect.
 
-            void initialize(void); //!< Initializes the object.
-
-            inline void addRewardable(Rewardable* reward)
+            inline void addRewardable(Rewardable* reward) //!< Add a rewardable object to the list of objects to be awarded to the player invoking the effect.
                 { this->rewards_.push_back(reward); }
-            const Rewardable* getRewardables(unsigned int index) const;
+            const Rewardable* getRewardables(unsigned int index) const; //!< Returns the rewardable object at the given index.
 
     };
Index: code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file ChangeQuestStatus.cc
+    @brief
+	Implementation of the ChangeQuestStatus class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "ChangeQuestStatus.h"
@@ -36,4 +42,8 @@
 namespace orxonox {
 
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     ChangeQuestStatus::ChangeQuestStatus(BaseObject* creator) : QuestEffect(creator)
     {
@@ -49,14 +59,28 @@
     }
 
-    void ChangeQuestStatus::setQuestId(const std::string & id)
+    /**
+    @brief
+        Sets the id of the quest the effect chagnes the status of.
+    @param id
+        The id of the quest.
+    @return
+        Returns true if successful.
+    */
+    bool ChangeQuestStatus::setQuestId(const std::string & id)
     {
         if(!QuestItem::isId(id))
         {
             COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return;
+            return false;
         }
+        
         this->questId_ = id;
+        return true;
     }
 
+    /**
+    @brief
+        Method for creating a ChangeQuestStatus object through XML.
+    */
     void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
Index: code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/ChangeQuestStatus.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file ChangeQuestStatus.h
+    @brief
+	Definition of the ChangeQuestStatus class.
+*/
+
 #ifndef _ChangeQuestStatus_H__
 #define _ChangeQuestStatus_H__
@@ -41,5 +47,5 @@
     /**
     @brief
-        An effect which changes a quests status.
+        An effect which changes a quests status of a specified quest for the player invoking the effect.
     @author
         Damian 'Mozork' Frick
@@ -51,5 +57,5 @@
             virtual ~ChangeQuestStatus();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a ChangeQuestStatus object through XML.
 
             virtual bool invoke(ControllableEntity* player) = 0; //!< Invokes the effect.
@@ -59,8 +65,8 @@
                 { return this->questId_; }
 
+        private:
             std::string questId_; //!< The id of the quest the status should be changed of.
-
-        private:
-            void setQuestId(const std::string & id);
+            
+            void setQuestId(const std::string & id); //!< Sets the quest id.
 
     };
Index: code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2159)
@@ -26,4 +26,10 @@
  *
  */
+ 
+/**
+    @file CompleteQuest.cc
+    @brief
+	Implementation of the CompleteQuest class.
+*/
 
 #include "OrxonoxStableHeaders.h"
@@ -41,4 +47,8 @@
     CreateFactory(CompleteQuest);
 
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     CompleteQuest::CompleteQuest(BaseObject* creator) : ChangeQuestStatus(creator)
     {
@@ -54,4 +64,8 @@
     }
 
+    /**
+    @brief
+        Method for creating a CompleteQuest object through XML.
+    */
     void CompleteQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -69,5 +83,5 @@
     bool CompleteQuest::invoke(ControllableEntity* player)
     {
-        if(player == NULL)
+        if(player == NULL) //!< You know, what we think of NULL-pointers...
         {
             COUT(2) << "Input player is NULL." << std::endl;
Index: code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/CompleteQuest.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file CompleteQuest.h
+    @brief
+	Definition of the CompleteQuest class.
+*/
+
 #ifndef _CompleteQuest_H__
 #define _CompleteQuest_H__
@@ -41,5 +47,5 @@
     /**
     @brief
-        Completes a quest.
+        Completes a quest (with a specified id) for the player invoking the effect.
     @author
         Damian 'Mozork' Frick
@@ -51,5 +57,5 @@
             virtual ~CompleteQuest();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a CompleteQuest object through XML.
 
             virtual bool invoke(ControllableEntity* player); //!< Invokes the effect.
Index: code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.cc	(revision 2159)
@@ -26,4 +26,10 @@
  *
  */
+ 
+/**
+    @file FailQuest.cc
+    @brief
+	Implementation of the FailQuest class.
+*/
 
 #include "OrxonoxStableHeaders.h"
@@ -41,4 +47,8 @@
     CreateFactory(FailQuest);
 
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     FailQuest::FailQuest(BaseObject* creator) : ChangeQuestStatus(creator)
     {
@@ -54,4 +64,8 @@
     }
 
+    /**
+    @brief
+        Method for creating a FailQuest object through XML.
+    */
     void FailQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -69,5 +83,5 @@
     bool FailQuest::invoke(ControllableEntity* player)
     {
-        if(player == NULL)
+        if(player == NULL) //!< We don't know what to do with no player.
         {
             COUT(2) << "Input player is NULL." << std::endl;
Index: code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/FailQuest.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file FailQuest.h
+    @brief
+	Definition of the FailQuest class.
+*/
+
 #ifndef _FailQuest_H__
 #define _FailQuest_H__
@@ -51,5 +57,5 @@
             virtual ~FailQuest();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a FailQuest object through XML.
 
             virtual bool invoke(ControllableEntity* player); //!< Invokes the effect.
Index: code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.cc	(revision 2159)
@@ -48,16 +48,7 @@
     /**
     @brief
-        Constructor. Initializes the object.
+        Constructor. Registers the object.
     */
     GlobalQuest::GlobalQuest(BaseObject* creator) : Quest(creator)
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Initializes the object.
-    */
-    void GlobalQuest::initialize(void)
     {
         RegisterObject(GlobalQuest);
@@ -104,5 +95,5 @@
             for(std::set<ControllableEntity*>::const_iterator it = players_.begin(); it != players_.end(); it++)
             {
-                QuestEffect::invokeEffects(*it, this->failEffects_);
+                QuestEffect::invokeEffects(*it, this->getFailEffectList());
             }
 
@@ -133,5 +124,5 @@
             for(std::set<ControllableEntity*>::const_iterator it = players_.begin(); it != players_.end(); it++)
             {
-                QuestEffect::invokeEffects(*it, this->completeEffects_);
+                QuestEffect::invokeEffects(*it, this->getCompleteEffectList());
             }
             
Index: code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/GlobalQuest.h	(revision 2159)
@@ -111,6 +111,4 @@
             const QuestEffect* getRewardEffects(unsigned int index) const; //!< Returns the reward effect at the given index.
 
-            void initialize(void); //!< Initializes the object.
-
     };
 
Index: code/branches/questsystem2/src/orxonox/objects/quest/LocalQuest.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/LocalQuest.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/LocalQuest.cc	(revision 2159)
@@ -48,16 +48,7 @@
     /**
     @brief
-        Constructor. Initializes the object.
+        Constructor. Registers and initializes the object.
     */
     LocalQuest::LocalQuest(BaseObject* creator) : Quest(creator)
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Initializes the object.
-    */
-    void LocalQuest::initialize(void)
     {
         RegisterObject(LocalQuest);
@@ -98,5 +89,5 @@
         {
             this->setStatus(player, questStatus::failed);
-            QuestEffect::invokeEffects(player, this->failEffects_); //!< Invoke the failEffects.
+            QuestEffect::invokeEffects(player, this->getFailEffectList()); //!< Invoke the failEffects.
             return true;
         }
@@ -120,5 +111,5 @@
         {
             this->setStatus(player, questStatus::completed);
-            QuestEffect::invokeEffects(player, this->completeEffects_); //!< Invoke the completeEffects.
+            QuestEffect::invokeEffects(player, this->getCompleteEffectList()); //!< Invoke the completeEffects.
             return true;
         }
Index: code/branches/questsystem2/src/orxonox/objects/quest/LocalQuest.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/LocalQuest.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/LocalQuest.h	(revision 2159)
@@ -101,6 +101,4 @@
             std::map<ControllableEntity*, questStatus::Enum> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
 
-            void initialize(void); //!< Initializes the object.
-
     };
 
Index: code/branches/questsystem2/src/orxonox/objects/quest/Quest.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/Quest.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/Quest.cc	(revision 2159)
@@ -48,18 +48,8 @@
     /**
     @brief
-        Constructor. Initializes object.
+        Constructor. Registers and initializes object.
     */
     Quest::Quest(BaseObject* creator) : QuestItem(creator)
     {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Initializes the object. Needs to be called first in every constructor of this class.
-        Sets defaults.
-    */
-    void Quest::initialize(void)
-    {
         RegisterObject(Quest);
 
@@ -84,8 +74,8 @@
         SUPER(Quest, XMLPort, xmlelement, mode);
 
-        XMLPortObject(Quest, Quest, "subquests", addSubQuest, getSubQuests, xmlelement, mode);
-        XMLPortObject(Quest, QuestHint, "hints", addHint, getHints, xmlelement, mode);
-        XMLPortObject(Quest, QuestEffect, "fail-effects", addFailEffect, getFailEffects, xmlelement, mode);
-        XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffects, xmlelement, mode);
+        XMLPortObject(Quest, Quest, "subquests", addSubQuest, getSubQuest, xmlelement, mode);
+        XMLPortObject(Quest, QuestHint, "hints", addHint, getHint, xmlelement, mode);
+        XMLPortObject(Quest, QuestEffect, "fail-effects", addFailEffect, getFailEffect, xmlelement, mode);
+        XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffect, xmlelement, mode);
 
         QuestManager::registerQuest(this); //Registers the quest with the QuestManager.
@@ -224,5 +214,5 @@
         Returns the subquest of the given index. NULL if there is no element on the given index.
     */
-    const Quest* Quest::getSubQuests(unsigned int index) const
+    const Quest* Quest::getSubQuest(unsigned int index) const
     {
         int i = index;
@@ -249,5 +239,5 @@
         Returns the hint of the given index. NULL if there is no element on the given index.
     */
-    const QuestHint* Quest::getHints(unsigned int index) const
+    const QuestHint* Quest::getHint(unsigned int index) const
     {
         int i = index;
@@ -273,5 +263,5 @@
         Returns the failEffect of the given index. NULL if there is no element on the given index.
     */
-    const QuestEffect* Quest::getFailEffects(unsigned int index) const
+    const QuestEffect* Quest::getFailEffect(unsigned int index) const
     {
         int i = index;
@@ -297,5 +287,5 @@
         Returns the completeEffect of the given index. NULL if there is no element on the given index.
     */
-    const QuestEffect* Quest::getCompleteEffects(unsigned int index) const
+    const QuestEffect* Quest::getCompleteEffect(unsigned int index) const
     {
         int i = index;
Index: code/branches/questsystem2/src/orxonox/objects/quest/Quest.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/Quest.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/Quest.h	(revision 2159)
@@ -87,4 +87,6 @@
             inline const std::list<Quest*> & getSubQuestList(void) const //!< Returns the list of sub quests.
                 { return this->subQuests_; }
+	    inline const std::list<QuestHint*> & getHintsList(void) const //!< Returns the list of all hints of this quest.
+                { return this->hints_; }
 
             bool isInactive(const ControllableEntity* player) const; //!< Returns true if the quest status for the specific player is 'inactive'.
@@ -98,25 +100,22 @@
 
         protected:
-            void initialize(void); //!< Initializes the object.
-
             virtual bool isStartable(const ControllableEntity* player) const = 0; //!< Checks whether the quest can be started.
             virtual bool isFailable(const ControllableEntity* player) const = 0; //!< Checks whether the quest can be failed.
             virtual bool isCompletable(const ControllableEntity* player) const = 0; //!< Checks whether the quest can be completed.
 
-            bool setParentQuest(Quest* quest); //!< Sets the parent quest of the quest.
-            bool addSubQuest(Quest* quest); //!< Adds a sub quest to the quest.
-            bool addHint(QuestHint* hint); //!< Add a hint to the list of hints.
-            bool addFailEffect(QuestEffect* effect); //!< Adds an effect to the list of failEffects.
-            bool addCompleteEffect(QuestEffect* effect); //!< Adds an effect to the list of completeEffects.
-
             const Quest* getParentQuest(void); //!< Returns the parent quest of the quest.
-            const Quest* getSubQuests(unsigned int index) const; //!<Returns the sub quest of the given index.
-            const QuestHint* getHints(unsigned int index) const; //!< Returns the hint of the given index.
-            const QuestEffect* getFailEffects(unsigned int index) const; //!< Returns the failEffect of the given index.
-            const QuestEffect* getCompleteEffects(unsigned int index) const; //!Returns the completeEffect of the given index.
+            const Quest* getSubQuest(unsigned int index) const; //!<Returns the sub quest of the given index.
+            const QuestHint* getHint(unsigned int index) const; //!< Returns the hint of the given index.
+            const QuestEffect* getFailEffect(unsigned int index) const; //!< Returns the failEffect of the given index.
+            const QuestEffect* getCompleteEffect(unsigned int index) const; //!< Returns the completeEffect of the given index.
+            inline std::list<QuestEffect*> & getFailEffectList(void) //!< Returns the list of failEffects.
+                { return this->failEffects_; }
+	    inline std::list<QuestEffect*> & getCompleteEffectList(void) //!< Returns the list of completeEffects.
+                { return this->completeEffects_; }
 
             virtual questStatus::Enum getStatus(const ControllableEntity* player) const = 0; //!< Returns the status of the quest for a specific player.
             virtual bool setStatus(ControllableEntity* player, const questStatus::Enum & status) = 0; //!< Changes the status for a specific player.
-
+            
+	private:
             Quest* parentQuest_; //!< Pointer to the parent quest.
             std::list<Quest*> subQuests_; //!< List of all the sub quests.
@@ -126,4 +125,10 @@
             std::list<QuestEffect*> failEffects_; //!< A list of all effects to be invoked, when the quest has been failed.
             std::list<QuestEffect*> completeEffects_; //!< A list of effects to be invoked, when the quest has been completed.
+            
+            bool setParentQuest(Quest* quest); //!< Sets the parent quest of the quest.
+            bool addSubQuest(Quest* quest); //!< Adds a sub quest to the quest.
+            bool addHint(QuestHint* hint); //!< Add a hint to the list of hints.
+            bool addFailEffect(QuestEffect* effect); //!< Adds an effect to the list of failEffects.
+            bool addCompleteEffect(QuestEffect* effect); //!< Adds an effect to the list of completeEffects.
 
     };
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestDescription.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestDescription.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestDescription.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file QuestDescription.cc
+    @brief
+	Implementation of the QuestDescription class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "QuestDescription.h"
@@ -36,11 +42,20 @@
     CreateFactory(QuestDescription);
 
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
     QuestDescription::QuestDescription(BaseObject* creator) : BaseObject(creator)
     {
         RegisterObject(QuestDescription);
-
-        this->initialize();
+        
+        this->title_ = "";
+        this->description_ = "";
     }
 
+    /**
+    @brief
+        Destructor.
+    */
     QuestDescription::~QuestDescription()
     {
@@ -48,4 +63,8 @@
     }
 
+    /**
+    @brief
+        Method for creating a QuestDescription object through XML.
+    */
     void QuestDescription::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -58,13 +77,4 @@
     }
 
-    /**
-    @brief
-        Initializes the object. Has to be called first in every constructor of this class.
-    */
-    void QuestDescription::initialize(void)
-    {
-        RegisterObject(QuestDescription);
-    }
-
 
 }
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestDescription.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestDescription.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestDescription.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file QuestDescription.h
+    @brief
+	Definition of the QuestDescription class.
+*/
+
 #ifndef _QuestDescription_H__
 #define _QuestDescription_H__
@@ -52,5 +58,5 @@
             virtual ~QuestDescription();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a QuestDescription object through XML.
 
             inline const std::string & getTitle(void) const //!< Returns the title.
@@ -60,5 +66,6 @@
 
         private:
-            void initialize(void);
+            std::string title_; //!< The title.
+            std::string description_; //!< The description.
 
             inline void setTitle(const std::string & title) //!< Sets the title.
@@ -67,7 +74,4 @@
                 { this->description_ = description; }
 
-            std::string title_; //!< The title.
-            std::string description_; //!< The description.
-
     };
 
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestEffect.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestEffect.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestEffect.cc	(revision 2159)
@@ -26,4 +26,10 @@
  *
  */
+
+/**
+    @file QuestEffect.cc
+    @brief
+	Implementation of the QuestEffect class.
+*/
 
 #include "OrxonoxStableHeaders.h"
@@ -57,5 +63,5 @@
     /**
     @brief
-        Static method. Invoke all effects of an effect list.
+        Static method. Invoke all effects in an effect list on a given player.
     @param player
         The player the effects are invoked on.
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestEffect.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestEffect.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestEffect.h	(revision 2159)
@@ -26,4 +26,10 @@
  *
  */
+ 
+/**
+    @file QuestEffect.h
+    @brief
+	Definition of the QuestEffect class.
+*/
 
 #ifndef _QuestEffect_H__
@@ -41,4 +47,5 @@
     @brief
         Handles effects for quests.
+        QuestEffects are the only way for quests to have any sideeffects in the game world. They are also the only way to gain, complete or fail quests.
     @author
         Damian 'Mozork' Frick
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.cc	(revision 2159)
@@ -48,16 +48,7 @@
     /**
     @brief
-        Constructor. Initializes the object.
+        Constructor. Registers the object.
     */
     QuestHint::QuestHint(BaseObject* creator) : QuestItem(creator)
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Initialize the object.
-    */
-    void QuestHint::initialize(void)
     {
         RegisterObject(QuestHint);
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestHint.h	(revision 2159)
@@ -94,6 +94,4 @@
             std::map<ControllableEntity*, questHintStatus::Enum> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
 
-            void initialize(void); //!< Initializes the object.
-
     };
 
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestItem.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestItem.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestItem.cc	(revision 2159)
@@ -47,16 +47,4 @@
     */
     QuestItem::QuestItem(BaseObject* creator) : BaseObject(creator)
-    {
-        RegisterObject(QuestItem);
-
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Initializes the object.
-        Should be called first in every constructor of this class.
-    */
-    void QuestItem::initialize(void)
     {
         RegisterObject(QuestItem);
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestItem.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestItem.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestItem.h	(revision 2159)
@@ -81,6 +81,4 @@
             QuestDescription* description_; //!< The description of the QuestItem.
 
-            void initialize(void); //!< Initializes the object.
-
     };
 
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestManager.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestManager.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestManager.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file QuestManager.cc
+    @brief
+	Implementation of the QuestManager class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "QuestManager.h"
@@ -38,7 +44,13 @@
 namespace orxonox {
 
-    std::map<std::string, Quest*> QuestManager::questMap_;
-    std::map<std::string, QuestHint*> QuestManager::hintMap_;
-
+    //! All quests registered by their id's.
+    std::map<std::string, Quest*> QuestManager::questMap_s;
+    //! All hints registered by their id's.
+    std::map<std::string, QuestHint*> QuestManager::hintMap_s;
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     QuestManager::QuestManager(BaseObject* creator) : BaseObject(creator)
     {
@@ -46,5 +58,8 @@
     }
 
-
+    /**
+    @brief
+        Destructor.
+    */
     QuestManager::~QuestManager()
     {
@@ -55,4 +70,5 @@
     @brief
         Registers a quest with the QuestManager to make it globally accessable.
+        Uses it's id to make sure to be able to be identify and retrieve it later.
     @param quest
         The quest that is to be registered.
@@ -62,5 +78,5 @@
     bool QuestManager::registerQuest(Quest* quest)
     {
-        if(quest == NULL)
+        if(quest == NULL) //!< Doh! Just as if there were actual quests behind NULL-pointers.
         {
             COUT(2) << "Registration of Quest in QuestManager failed, because inserted Quest-pointer was NULL." << std::endl;
@@ -68,8 +84,8 @@
         }
 
-        std::pair<std::map<std::string, Quest*>::iterator,bool> ret;
-        ret = questMap_.insert( std::pair<std::string,Quest*>(quest->getId(),quest) );
-
-        if(ret.second)
+        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.
+
+        if(result.second) //!< If inserting was a success.
         {
             COUT(3) << "Quest with questId {" << quest->getId() << "} successfully inserted." << std::endl;
@@ -86,4 +102,5 @@
     @brief
         Registers a QuestHint with the QuestManager to make it globally accessable.
+        Uses it's id to make sure to be able to be identify and retrieve it later.
     @param hint
         The QuestHint to be registered.
@@ -93,5 +110,5 @@
     bool QuestManager::registerHint(QuestHint* hint)
     {
-        if(hint == NULL)
+        if(hint == NULL) //!< Still not liking NULL-pointers.
         {
             COUT(2) << "Registration of QuestHint in QuestManager failed, because inserted QuestHint-pointer was NULL." << std::endl;
@@ -99,8 +116,8 @@
         }
 
-        std::pair<std::map<std::string, QuestHint*>::iterator,bool> ret;
-        ret = hintMap_.insert ( std::pair<std::string,QuestHint*>(hint->getId(),hint) );
-
-        if(ret.second)
+        std::pair<std::map<std::string, QuestHint*>::iterator,bool> result;
+        result = hintMap_s.insert ( std::pair<std::string,QuestHint*>(hint->getId(),hint) ); //!< Inserting the hint.
+
+        if(result.second) //!< If inserting was a success.
         {
             COUT(3) << "QuestHint with hintId {" << hint->getId() << "} successfully inserted." << std::endl;
@@ -127,5 +144,5 @@
     Quest* QuestManager::findQuest(const std::string & questId)
     {
-        if(!QuestItem::isId(questId))
+        if(!QuestItem::isId(questId)) //!< Check vor validity of the given id.
         {
             ThrowException(Argument, "Invalid questId.");
@@ -133,6 +150,6 @@
 
         Quest* quest;
-        std::map<std::string, Quest*>::iterator it = questMap_.find(questId);
-        if (it != questMap_.end())
+        std::map<std::string, Quest*>::iterator it = questMap_s.find(questId);
+        if (it != questMap_s.end()) //!< If the quest is registered.
         {
             quest = it->second;
@@ -161,5 +178,5 @@
     QuestHint* QuestManager::findHint(const std::string & hintId)
     {
-        if(!QuestItem::isId(hintId))
+        if(!QuestItem::isId(hintId)) //!< Check vor validity of the given id.
         {
             ThrowException(Argument, "Invalid hintId.");
@@ -167,6 +184,6 @@
 
         QuestHint* hint;
-        std::map<std::string, QuestHint*>::iterator it = hintMap_.find(hintId);
-        if (it != hintMap_.end())
+        std::map<std::string, QuestHint*>::iterator it = hintMap_s.find(hintId);
+        if (it != hintMap_s.end()) //!< If the hint is registered.
         {
             hint = it->second;
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestManager.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestManager.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestManager.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file QuestManager.h
+    @brief
+	Definition of the QuestManager class.
+*/
+
 #ifndef _QuestManager_H__
 #define _QuestManager_H__
@@ -41,6 +47,6 @@
     /**
     @brief
-        Manages quests, by making them globally accessable.
-        Quests (and Hints) are registered in the QuestManager trough their id, and can be accessed in the same way.
+        Is a static class and manages quests, by registering every quest/hint (through registerX()) and making them globally accessable (through findX()).
+        Quests (and Hints) are registered in the QuestManager with their id, and can be accessed in the same way.
     @author
         Damian 'Mozork' Frick
@@ -60,6 +66,6 @@
 
         private:
-            static std::map<std::string, Quest*> questMap_; //!< All quests registered by their id's.
-            static std::map<std::string, QuestHint*> hintMap_; //!< All hints registered by their id's.
+            static std::map<std::string, Quest*> questMap_s; //!< All quests registered by their id's.
+            static std::map<std::string, QuestHint*> hintMap_s; //!< All hints registered by their id's.
 
     };
Index: code/branches/questsystem2/src/orxonox/objects/quest/Rewardable.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/Rewardable.cc	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/Rewardable.cc	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file Rewardable.cc
+    @brief
+	Implementation of the Rewardable class.
+*/
+
 #include "OrxonoxStableHeaders.h"
 #include "Rewardable.h"
@@ -34,5 +40,8 @@
 namespace orxonox {
 
-
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
     Rewardable::Rewardable(BaseObject* creator) : BaseObject(creator)
     {
@@ -40,5 +49,8 @@
     }
 
-
+    /**
+    @brief
+        Destructor,
+    */
     Rewardable::~Rewardable()
     {
Index: code/branches/questsystem2/src/orxonox/objects/quest/Rewardable.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/Rewardable.h	(revision 2158)
+++ code/branches/questsystem2/src/orxonox/objects/quest/Rewardable.h	(revision 2159)
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file Rewardable.h
+    @brief
+	Definition of the Rewardable class.
+*/
+
 #ifndef _Rewardable_H__
 #define _Rewardable_H__
@@ -38,5 +44,7 @@
     /**
     @brief
-        Rewardable is an Interface, that can be implemented by any object to enable it to be given as reward to a player through QuestEffects.
+        Rewardable is an Interface, that can be implemented by any object to enable it to be given as reward to a player through QuestEffects. (With the AddReward effect.)
+        
+        It just needs to inherit form Rewardable, and implement the reward() method.
     @author
         Damian 'Mozork' Frick
@@ -49,5 +57,14 @@
             virtual ~Rewardable();
 
-            virtual bool reward(ControllableEntity* player) = 0; //!<Method to transcribe a rewardable object to the player.
+            /**
+            @brief
+                Method to transcribe a rewardable object to the player.
+                Must be implemented by every class inheriting from Rewardable.
+	    @param player
+                A pointer to the ControllableEntity, do whatever you want with it.
+	    @return
+                Return true if successful.
+            */
+            virtual bool reward(ControllableEntity* player) = 0; //!<
 
     };
