Index: /code/branches/pickup3/src/modules/pickup/Pickup.cc
===================================================================
--- /code/branches/pickup3/src/modules/pickup/Pickup.cc	(revision 6479)
+++ /code/branches/pickup3/src/modules/pickup/Pickup.cc	(revision 6480)
@@ -72,8 +72,5 @@
     */
     void Pickup::initializeIdentifier(void)
-    {
-        //TODO: Check whether this could not be done in the Constructor if Pickupable. Would be much more convenient.
-        this->pickupIdentifier_->addClass(this->getIdentifier());
-        
+    {        
         //TODO: Works?
         std::string val1 = this->getActivationType();
Index: /code/branches/pickup3/src/modules/pickup/PickupCollection.cc
===================================================================
--- /code/branches/pickup3/src/modules/pickup/PickupCollection.cc	(revision 6479)
+++ /code/branches/pickup3/src/modules/pickup/PickupCollection.cc	(revision 6480)
@@ -53,5 +53,5 @@
         RegisterObject(PickupCollection);
         
-        this->pickupCollectionIdentifier_ = new PickupCollectionIdentifier();
+        this->pickupCollectionIdentifier_ = new PickupCollectionIdentifier(this);
     }
     
@@ -85,6 +85,4 @@
     void PickupCollection::initializeIdentifier(void)
     {
-        this->pickupCollectionIdentifier_->addClass(this->getIdentifier());
-        
         for(std::vector<Pickupable*>::iterator it = this->pickups_.begin(); it != this->pickups_.end(); it++)
         {
Index: /code/branches/pickup3/src/modules/pickup/PickupCollectionIdentifier.cc
===================================================================
--- /code/branches/pickup3/src/modules/pickup/PickupCollectionIdentifier.cc	(revision 6479)
+++ /code/branches/pickup3/src/modules/pickup/PickupCollectionIdentifier.cc	(revision 6480)
@@ -34,5 +34,5 @@
 {
     
-    PickupCollectionIdentifier::PickupCollectionIdentifier(void)
+    PickupCollectionIdentifier::PickupCollectionIdentifier(Pickupable* pickup) : PickupIdentifier(pickup)
     {
         RegisterObject(PickupCollectionIdentifier);
Index: /code/branches/pickup3/src/modules/pickup/PickupCollectionIdentifier.h
===================================================================
--- /code/branches/pickup3/src/modules/pickup/PickupCollectionIdentifier.h	(revision 6479)
+++ /code/branches/pickup3/src/modules/pickup/PickupCollectionIdentifier.h	(revision 6480)
@@ -42,5 +42,5 @@
         
         public:
-            PickupCollectionIdentifier(void);
+            PickupCollectionIdentifier(Pickupable* pickup);
             ~PickupCollectionIdentifier();
             
Index: /code/branches/pickup3/src/modules/pickup/items/HealthPickup.cc
===================================================================
--- /code/branches/pickup3/src/modules/pickup/items/HealthPickup.cc	(revision 6479)
+++ /code/branches/pickup3/src/modules/pickup/items/HealthPickup.cc	(revision 6480)
@@ -88,6 +88,4 @@
     void HealthPickup::initializeIdentifier(void)
     {
-        this->pickupIdentifier_->addClass(this->getIdentifier());
-        
         std::stringstream stream;
         stream << this->getHealth();
Index: /code/branches/pickup3/src/orxonox/interfaces/Pickupable.cc
===================================================================
--- /code/branches/pickup3/src/orxonox/interfaces/Pickupable.cc	(revision 6479)
+++ /code/branches/pickup3/src/orxonox/interfaces/Pickupable.cc	(revision 6480)
@@ -55,5 +55,5 @@
         this->carrier_ = NULL;
         
-        this->pickupIdentifier_ = new PickupIdentifier();
+        this->pickupIdentifier_ = new PickupIdentifier(this);
     }
     
Index: /code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.cc
===================================================================
--- /code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.cc	(revision 6479)
+++ /code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.cc	(revision 6480)
@@ -30,4 +30,5 @@
 
 #include "core/CoreIncludes.h"
+#include "interfaces/Pickupable.h"
 
 namespace orxonox
@@ -38,9 +39,9 @@
         Constructor. Registers the object and initializes member variables.
     */
-    PickupIdentifier::PickupIdentifier()
+    PickupIdentifier::PickupIdentifier(Pickupable* pickup)
     {
         RegisterRootObject(PickupIdentifier);
         
-        this->classIdentifier_ = NULL;
+        this->pickup_ = pickup;
     }
     
@@ -61,6 +62,6 @@
     {
         //! If the classIdentifiers are not the same (meaning the PickupIdentifiers identify different classes), the obviously the two Pickupables identified by the PickupIdentifiers cannot be the same. An ordering is established through the alphabetical ordering of the respective classnames.
-        if(!identifier->classIdentifier_->isExactlyA(this->classIdentifier_))
-            return this->classIdentifier_->getName().compare(identifier->classIdentifier_->getName());
+        if(!identifier->pickup_->getIdentifier()->isExactlyA(this->pickup_->getIdentifier()))
+            return this->pickup_->getIdentifier()->getName().compare(identifier->pickup_->getIdentifier()->getName());
         
         //! If the class is the same for both PickupIdentifiers we go on to check the parameters of the class.
@@ -86,15 +87,4 @@
             
         return false;
-    }
-    
-    /**
-    @brief
-        Add the class of the Pickupable to its PickupIdentifier.
-    @param identifier
-        A pointer to the Identifier of the class.
-    */
-    void PickupIdentifier::addClass(Identifier* identifier)
-    {
-        this->classIdentifier_ = identifier;
     }
     
Index: /code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.h
===================================================================
--- /code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.h	(revision 6479)
+++ /code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.h	(revision 6480)
@@ -54,14 +54,13 @@
         
         public:
-            PickupIdentifier(void); //!< Constructor.
+            PickupIdentifier(Pickupable* pickup); //!< Constructor.
             ~PickupIdentifier(); //!< Destructor.
             
             virtual int compare(const PickupIdentifier* identifier) const; //!< Compares two PickupIdentifiers and returns 0 if a == b, <0 if a < b and >0 if a > b for a.compare(b).
             
-            void addClass(Identifier* identifier); //!< Add the class of the Pickupable to its PickupIdentifier.
             bool addParameter(std::string & name, std::string & value); //!< Add a parameter to the PickupIdentifier.
             
         private:
-            Identifier* classIdentifier_; //!< The Identifier of the class.
+            Pickupable* pickup_; //!< The Pickupable the PickupIdentififer is for.
             std::map<std::string, std::string> parameters_; //!< The parameters identifying the type of the pickup beyond the class.
             
