Index: code/trunk/src/modules/pickup/DroppedPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/DroppedPickup.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/DroppedPickup.cc	(revision 6540)
@@ -28,5 +28,5 @@
 
 /**
-    @file
+    @file DroppedPickup.cc
     @brief Implementation of the DroppedPickup class.
 */
@@ -36,4 +36,5 @@
 #include "core/CoreIncludes.h"
 #include "interfaces/Pickupable.h"
+#include "interfaces/PickupCarrier.h"
 #include "graphics/Model.h"
 
@@ -65,10 +66,12 @@
         The distance at which the PickupSpawner triggers. Default is 10.
     */
-    DroppedPickup::DroppedPickup(BaseObject* creator, Pickupable* pickup, const Vector3& position, float triggerDistance) : PickupSpawner(creator, pickup, triggerDistance, 10, 1)
+    DroppedPickup::DroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance) : PickupSpawner(creator, pickup, triggerDistance, 5, 1)
     {   
         RegisterObject(DroppedPickup);
 
-        this->setPosition(position);
+        this->setPosition(carrier->getCarrierPosition());
         this->setActive(false);
+        
+        //TODO: Do more elegantly.
         this->startRespawnTimer();
     }
Index: code/trunk/src/modules/pickup/DroppedPickup.h
===================================================================
--- code/trunk/src/modules/pickup/DroppedPickup.h	(revision 6539)
+++ code/trunk/src/modules/pickup/DroppedPickup.h	(revision 6540)
@@ -28,5 +28,5 @@
 
 /**
-    @file
+    @file DroppedPickup.h
     @brief Definition of the DroppedPickup class.
 */
@@ -53,5 +53,5 @@
         public:
             DroppedPickup(BaseObject* creator); //!< Default constructor.
-            DroppedPickup(BaseObject* creator, Pickupable* pickup, const Vector3& position, float triggerDistance = 10.0); //!< Constructor.
+            DroppedPickup(BaseObject* creator, Pickupable* pickup, PickupCarrier* carrier, float triggerDistance = 10.0); //!< Constructor.
             virtual ~DroppedPickup(); //!< Destructor.
 
Index: code/trunk/src/modules/pickup/Pickup.cc
===================================================================
--- code/trunk/src/modules/pickup/Pickup.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/Pickup.cc	(revision 6540)
@@ -27,4 +27,9 @@
 */
 
+/**
+    @file Pickup.cc
+    @brief Implementation of the Pickup class.
+*/
+
 #include "Pickup.h"
 
@@ -41,7 +46,4 @@
     /*static*/ const std::string Pickup::durationTypeOnce_s = "once";
     /*static*/ const std::string Pickup::durationTypeContinuous_s = "continuous";
-    
-    //TODO: Should this be here? Does it work without?
-    CreateFactory(Pickup);
     
     Pickup::Pickup(BaseObject* creator) : BaseObject(creator)
@@ -224,7 +226,7 @@
         Returns true if a spawner was created, false if not.
     */
-    bool Pickup::createSpawner(const Vector3& position)
-    {
-        new DroppedPickup(this, this, position);
+    bool Pickup::createSpawner(void)
+    {
+        new DroppedPickup(this, this, this->getCarrier());
         return true;
     }
Index: code/trunk/src/modules/pickup/Pickup.h
===================================================================
--- code/trunk/src/modules/pickup/Pickup.h	(revision 6539)
+++ code/trunk/src/modules/pickup/Pickup.h	(revision 6540)
@@ -25,4 +25,9 @@
  *      ...
  *
+*/
+
+/**
+    @file Pickup.h
+    @brief Declaration of the Pickup class.
 */
 
@@ -70,6 +75,8 @@
     {
         
+        protected:
+            Pickup(BaseObject* creator); //!< Constructor.
+        
         public:
-            Pickup(BaseObject* creator); //!< Constructor.
             virtual ~Pickup(); //!< Destructor.
             
@@ -124,5 +131,5 @@
             void initializeIdentifier(void);
             
-            virtual bool createSpawner(const Vector3& position); //!< Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
+            virtual bool createSpawner(void); //!< Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
             
             /**
Index: code/trunk/src/modules/pickup/PickupCollection.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupCollection.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupCollection.cc	(revision 6540)
@@ -158,5 +158,5 @@
         
         PickupCollection* pickup = dynamic_cast<PickupCollection*>(item);
-        //! Clone allPickupables this PickupCollection consist of.
+        //! Clone all Pickupables this PickupCollection consist of.
         for(std::vector<WeakPtr<Pickupable> >::iterator it = this->pickups_.begin(); it != this->pickups_.end(); it++)
         {
@@ -240,7 +240,7 @@
         Returns true if a spawner was created, false if not.
     */
-    bool PickupCollection::createSpawner(const Vector3& position)
-    {
-        new DroppedPickup(this, this, position);
+    bool PickupCollection::createSpawner(void)
+    {
+        new DroppedPickup(this, this, this->getCarrier());
         return true;
     }
Index: code/trunk/src/modules/pickup/PickupCollection.h
===================================================================
--- code/trunk/src/modules/pickup/PickupCollection.h	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupCollection.h	(revision 6540)
@@ -77,5 +77,5 @@
             void initializeIdentifier(void); //!< Initializes the PickupIdentifier for this pickup.
             
-            virtual bool createSpawner(const Vector3& position); //!< Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
+            virtual bool createSpawner(void); //!< Facilitates the creation of a PickupSpawner upon dropping of the Pickupable.
             
             PickupCollectionIdentifier* pickupCollectionIdentifier_; //!< The PickupCollectionIdentifier of this PickupCollection. Is used to distinguish different PickupCollections amongst themselves.
Index: code/trunk/src/modules/pickup/PickupManager.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupManager.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupManager.cc	(revision 6540)
@@ -28,5 +28,5 @@
 
 /**
-    @file
+    @file PickupManager.cc
     @brief Implementation of the PickupManager class.
 */
@@ -50,8 +50,6 @@
         Constructor. Registers the PickupManager and creates the default PickupRepresentation.
     */
-    PickupManager::PickupManager()
+    PickupManager::PickupManager() : defaultRepresentation_(NULL)
     {
-        this->defaultRepresentation_ = NULL;
-        this->pickupCarrierStructure_ = NULL;
         RegisterRootObject(PickupManager);
         
@@ -68,7 +66,4 @@
         if(this->defaultRepresentation_ != NULL)
             this->defaultRepresentation_->destroy();
-        
-        if(this->pickupCarrierStructure_ != NULL)
-            delete this->pickupCarrierStructure_;
     }
     
@@ -84,5 +79,4 @@
         Returns true if successful and false if not.
     */
-    //TODO: Make sure that either the PickupRepresentation is destroyed upon destruction of the PickupManager if the representation wasn't created with XMLPort.
     bool PickupManager::registerRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
     {
Index: code/trunk/src/modules/pickup/PickupManager.h
===================================================================
--- code/trunk/src/modules/pickup/PickupManager.h	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupManager.h	(revision 6540)
@@ -28,5 +28,5 @@
 
 /**
-    @file
+    @file PickupManager.h
     @brief Definition of the PickupManager class.
 */
@@ -46,10 +46,4 @@
 namespace orxonox
 {
-    //TODO: Actually utilize this.
-    struct PickupCarrierNode
-    {
-        Identifier* identifier;
-        std::set<PickupCarrierNode*> children;
-    };
 
     /**
@@ -74,7 +68,4 @@
             PickupRepresentation* getRepresentation(const PickupIdentifier* identifier); //!< Get the PickupRepresentation representing the Pickupable with the input PickupIdentifier.
             
-            //TODO: Delete or utilitze this.
-            //bool registerCarrier(Identifier* parent, )
-            
         private:
             static PickupManager* singletonPtr_s;
@@ -82,7 +73,4 @@
             PickupRepresentation* defaultRepresentation_; //!< The default PickupRepresentation.
             std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare> representations_; //!< Map linking PickupIdentifiers (representing types if Pickupables) and PickupRepresentations.
-            
-            //TODO: Delete or utilize this.
-            PickupCarrierNode* pickupCarrierStructure_;
         
     };
Index: code/trunk/src/modules/pickup/PickupRepresentation.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupRepresentation.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupRepresentation.cc	(revision 6540)
@@ -27,4 +27,9 @@
 */
 
+/**
+    @file PickupRepresentation.cc
+    @brief Implementation of the PickupRepresentation class.
+*/
+
 #include "PickupRepresentation.h"
 
@@ -44,9 +49,6 @@
         This is primarily for use of the PickupManager in creating a default PickupRepresentation.
     */
-    //TODO: Not this as creator!!!
-    PickupRepresentation::PickupRepresentation() : BaseObject(this)
+    PickupRepresentation::PickupRepresentation() : BaseObject(NULL), spawnerRepresentation_(NULL)
     {
-        this->spawnerRepresentation_ = NULL;
-        
         RegisterObject(PickupRepresentation);
         
@@ -58,8 +60,6 @@
         Default Constructor. Registers the object and initializes its member variables.
     */
-    PickupRepresentation::PickupRepresentation(BaseObject* creator) : BaseObject(creator)
+    PickupRepresentation::PickupRepresentation(BaseObject* creator) : BaseObject(creator), spawnerRepresentation_(NULL)
     {
-        this->spawnerRepresentation_ = NULL;
-        
         RegisterObject(PickupRepresentation);
         
@@ -151,5 +151,5 @@
         Returns a pointer to the StaticEntity.
     */
-    //TODO: Think of more elegant solution.
+    //TODO: Possibility to define default representation through XML.
     StaticEntity* PickupRepresentation::getDefaultSpawnerRepresentation(PickupSpawner* spawner)
     {
Index: code/trunk/src/modules/pickup/PickupRepresentation.h
===================================================================
--- code/trunk/src/modules/pickup/PickupRepresentation.h	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupRepresentation.h	(revision 6540)
@@ -25,4 +25,9 @@
  *      ...
  *
+*/
+
+/**
+    @file PickupRepresentation.h
+    @brief Definition of the PickupRepresentation class.
 */
 
Index: code/trunk/src/modules/pickup/PickupSpawner.cc
===================================================================
--- code/trunk/src/modules/pickup/PickupSpawner.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupSpawner.cc	(revision 6540)
@@ -28,6 +28,6 @@
 
 /**
-    @file
-    @brief Implementation of PickupSpawner.
+    @file PickupSpawner.cc
+    @brief Implementation of the PickupSpawner class.
 */
 
@@ -52,9 +52,9 @@
         Pointer to the object which created this item.
     */
-    PickupSpawner::PickupSpawner(BaseObject* creator) : StaticEntity(creator)
-    {
+    PickupSpawner::PickupSpawner(BaseObject* creator) : StaticEntity(creator), pickup_(NULL)
+    {
+        RegisterObject(PickupSpawner);
+        
         this->initialize();
-
-        RegisterObject(PickupSpawner);
     }
 
@@ -73,5 +73,5 @@
         The maximum number of items spawned by this PickupSpawner.
     */
-    PickupSpawner::PickupSpawner(BaseObject* creator, Pickupable* pickup, float triggerDistance, float respawnTime, int maxSpawnedItems) : StaticEntity(creator)
+    PickupSpawner::PickupSpawner(BaseObject* creator, Pickupable* pickup, float triggerDistance, float respawnTime, int maxSpawnedItems) : StaticEntity(creator), pickup_(NULL)
     {
         RegisterObject(PickupSpawner);
@@ -103,6 +103,4 @@
     void PickupSpawner::initialize(void)
     {
-        this->pickup_ = NULL;
-        
         this->triggerDistance_ = 20;
         this->respawnTime_ = 0;
@@ -170,7 +168,9 @@
         Time since last tick.
     */
-    //TODO: Replace this with a real DistanceTrigger? Or better with collisions?
+    //TODO: Replace with collisions.
     void PickupSpawner::tick(float dt)
     {
+        SUPER(PickupSpawner, tick, dt);
+        
         //! If the PickupSpawner is active.
         if (this->isActive())
@@ -215,5 +215,4 @@
         if(this->spawnsRemaining_ != 0 && this->respawnTime_ > 0)
         {
-            //TODO: Nicer? Does this even work?
             this->startRespawnTimer();
 
@@ -278,5 +277,4 @@
         Pawn which triggered the PickupSpawner.
     */
-    //TODO: Make more generic -> without pawn.
     void PickupSpawner::trigger(Pawn* pawn)
     {
@@ -314,5 +312,4 @@
             else
             {
-                //TODO: Really that severe?
                 if(target == NULL)
                     COUT(1) << "PickupSpawner: Pickupable has no target." << std::endl;
Index: code/trunk/src/modules/pickup/PickupSpawner.h
===================================================================
--- code/trunk/src/modules/pickup/PickupSpawner.h	(revision 6539)
+++ code/trunk/src/modules/pickup/PickupSpawner.h	(revision 6540)
@@ -28,6 +28,6 @@
 
 /**
-    @file
-    @brief Definition of PickupSpawner.
+    @file PickupSpawner.h
+    @brief Definition of the PickupSpawner class.
 */
 
Index: code/trunk/src/modules/pickup/items/HealthPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/HealthPickup.cc	(revision 6539)
+++ code/trunk/src/modules/pickup/items/HealthPickup.cc	(revision 6540)
@@ -26,4 +26,9 @@
  *
  */
+
+/**
+    @file HealthPickup.cc
+    @brief Implementation of the HealthPickup class.
+*/
 
 #include "HealthPickup.h"
@@ -94,5 +99,4 @@
         this->pickupIdentifier_->addParameter(type1, val1);
         
-        //TODO: Does this work, is val valid outside the function scope?
         std::string val2 = this->getHealthType();
         std::string type2 = "healthType";
@@ -133,4 +137,6 @@
     void HealthPickup::tick(float dt)
     {
+        SUPER(HealthPickup, tick, dt);
+        
         if(this->isContinuous() && this->isUsed())
         {
Index: code/trunk/src/modules/pickup/items/HealthPickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/HealthPickup.h	(revision 6539)
+++ code/trunk/src/modules/pickup/items/HealthPickup.h	(revision 6540)
@@ -26,4 +26,9 @@
  *
  */
+
+/**
+    @file HealthPickup.h
+    @brief Declaration of the HealthPickup class.
+*/
 
 #ifndef _HealthPickup_H__
