Index: code/branches/presentation2012merge/data/gui/scripts/PickupInventory.lua
===================================================================
--- code/branches/presentation2012merge/data/gui/scripts/PickupInventory.lua	(revision 9316)
+++ code/branches/presentation2012merge/data/gui/scripts/PickupInventory.lua	(revision 9318)
@@ -108,5 +108,5 @@
 
 function P.createPickupEntry(index, pickup)
-    local representation = orxonox.PickupManager:getInstance():getPickupRepresentation(pickup.pickup)
+    local representation = orxonox.PickupManager:getInstance():getRepresentation(pickup.representationName)
 
     local name = "orxonox/PickupInventory/Box/Pickup" .. index
@@ -193,5 +193,5 @@
 function P.createDetailsWindow(pickupIndex)
     local pickup = P.pickupsList[pickupIndex]
-    local representation = orxonox.PickupManager:getInstance():getPickupRepresentation(pickup.pickup)
+    local representation = orxonox.PickupManager:getInstance():getRepresentation(pickup.representationName)
 
     local index = P.getNewDetailNumber()
Index: code/branches/presentation2012merge/data/levels/includes/pickups.oxi
===================================================================
--- code/branches/presentation2012merge/data/levels/includes/pickups.oxi	(revision 9316)
+++ code/branches/presentation2012merge/data/levels/includes/pickups.oxi	(revision 9318)
@@ -3,279 +3,206 @@
 
 <PickupRepresentation
+    name = "smallshieldpickup"
     pickupName = "Small Shield Pickup"
     pickupDescription = "Gives you a small-sized shield for 30 seconds."
     inventoryRepresentation = "SmallShield"
     spawnerTemplate = "smallshieldpickupRepresentation"
->
-    <pickup>
-        <ShieldPickup template=smallshieldpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "mediumshieldpickup"
     pickupName = "Medium Shield Pickup"
     pickupDescription = "Gives you a medium-sized shield for 30 seconds."
     inventoryRepresentation = "MediumShield"
     spawnerTemplate = "mediumshieldpickupRepresentation"
->
-    <pickup>
-        <ShieldPickup template=mediumshieldpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "hugeshieldpickup"
     pickupName = "Huge Shield Pickup"
     pickupDescription = "Gives you a big shield for 60 seconds."
     inventoryRepresentation = "HugeShield"
     spawnerTemplate = "hugeshieldpickupRepresentation"
->
-    <pickup>
-        <ShieldPickup template=hugeshieldpickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Health pickups -->
 
 <PickupRepresentation
+    name = "smallhealthpickup"
     pickupName = "Small Health Boost"
     pickupDescription = "Adds a small amout of health to the ship."
     inventoryRepresentation = "SmallHealth"
     spawnerTemplate = "smallhealthpickupRepresentation"
->
-    <pickup>
-        <HealthPickup template=smallhealthpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "mediumhealthpickup"
     pickupName = "Medium Health Boost"
     pickupDescription = "Adds a medium amout of health to the ship."
     spawnerTemplate = "mediumhealthpickupRepresentation"
     inventoryRepresentation = "MediumHealth"
->
-    <pickup>
-        <HealthPickup template=mediumhealthpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "hugehealthpickup"
     pickupName = "Huge Health Boost"
     pickupDescription = "Adds a huge amout of health to the ship."
     spawnerTemplate = "hugehealthpickupRepresentation"
     inventoryRepresentation = "HugeHealth"
->
-    <pickup>
-        <HealthPickup template=hugehealthpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "crazyhealthpickup"
     pickupName = "Crazy Madness Health Boost"
     pickupDescription = "Adds a crazy amout of health to the ship."
     spawnerTemplate = "crazyhealthpickupRepresentation"
     inventoryRepresentation = "CrazyMadnessHealth"
->
-    <pickup>
-        <HealthPickup template=crazyhealthpickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Meta pickups -->
 
 <PickupRepresentation
+    name = "use"
     pickupName = "Use Pickup"
     pickupDescription = "Uses all pickups you have."
     spawnerTemplate = "usepickupRepresentation"
     inventoryRepresentation = "usePickup"
->
-    <pickup>
-        <MetaPickup metaType="use" />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "drop"
     pickupName = "Drop Pickup"
     pickupDescription = "Drops all pickups you have."
     spawnerTemplate = "droppickupRepresentation"
     inventoryRepresentation = "dropPickup"
->
-    <pickup>
-        <MetaPickup metaType="drop" />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Speed pickups -->
 
 <PickupRepresentation
+    name = "smallspeedpickup"
     pickupName = "Small Speed Boost"
     pickupDescription = "Multiplies Speed of the Ship by a small amount."
     spawnerTemplate = "smallspeedpickupRepresentation"
     inventoryRepresentation = "SmallSpeed"
->
-    <pickup>
-        <SpeedPickup template=smallspeedpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "mediumspeedpickup"
     pickupName = "Medium Speed Boost"
     pickupDescription = "Multiplies Speed of the Ship by a bigger amount."
     spawnerTemplate = "mediumspeedpickupRepresentation"
     inventoryRepresentation = "MediumSpeed"
->
-    <pickup>
-        <SpeedPickup template=mediumspeedpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "hugespeedpickup"
     pickupName = "Huge Speed Boost"
     pickupDescription = "Multiplies Speed of the Ship by a huge amount."
     spawnerTemplate = "hugespeedpickupRepresentation"
     inventoryRepresentation = "HugeSpeed"
->
-    <pickup>
-        <SpeedPickup template=hugespeedpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "smalljumppickup"
     pickupName = "Small Jump Boost"
     pickupDescription = "Boosts the Ship with a massive amount for a very short time."
     spawnerTemplate = "smalljumppickupRepresentation"
     inventoryRepresentation = "SmallSpeed"
->
-    <pickup>
-        <SpeedPickup template=smalljumppickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Invisible pickups -->
 
 <PickupRepresentation
+    name = "smallinvisiblepickup"
     pickupName = "Small Invisibility"
     pickupDescription = "Makes you invisible for 5 seconds."
     spawnerTemplate = "smallinvisiblepickupRepresentation"
     inventoryRepresentation = "SmallInvisible"
->
-    <pickup>
-        <InvisiblePickup template=smallinvisiblepickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "mediuminvisiblepickup"
     pickupName = "Medium Invisibility"
     pickupDescription = "Makes you invisible for 10 seconds."
     spawnerTemplate = "mediuminvisiblepickupRepresentation"
     inventoryRepresentation = "MediumInvisible"
->
-    <pickup>
-        <InvisiblePickup template=mediuminvisiblepickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "hugeinvisiblepickup"
     pickupName = "Huge Invisibility"
     pickupDescription = "Makes you invisible for 20 seconds."
     spawnerTemplate = "hugeinvisiblepickupRepresentation"
     inventoryRepresentation = "HugeInvisible"
->
-    <pickup>
-        <InvisiblePickup template=hugeinvisiblepickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Pickup Collection pickups -->
 
 <PickupRepresentation
+    name = "triplehealthspeedinvisibilitypickup"
     pickupName = "Tri Pickup"
     pickupDescription = "Adds health, speed and invisibility."
     spawnerTemplate = "triplehealthspeedinvisibilitypickupRepresentation"
->
-    <pickup>
-        <PickupCollection template=triplehealthspeedinvisibilitypickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Drone Pickup -->
 
 <PickupRepresentation
+    name = "dronepickup"
     pickupName = "Drone Pickup"
     pickupDescription = "Adds a Drone to the Player's Spaceship"
     spawnerTemplate = "dronepickupRepresentation"
->
-    <pickup>
-        <DronePickup template=dronepickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- DamageBoost Pickup -->
 
 <PickupRepresentation
+    name = "smalldamageboostpickup"
     pickupName = "Small DamageBoost Pickup"
     pickupDescription = "Multiplies the ship damage with 2."
     spawnerTemplate = "smalldamageboostpickupRepresentation"
     inventoryRepresentation = "SmallDamageBoost"
->
-    <pickup>
-        <DamageBoostPickup template=smalldamageboostpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "mediumdamageboostpickup"
     pickupName = "Medium DamageBoost Pickup"
     pickupDescription = "Multiplies the ship damage with 5."
     spawnerTemplate = "mediumdamageboostpickupRepresentation"
     inventoryRepresentation = "MediumDamageBoost"
->
-    <pickup>
-        <DamageBoostPickup template=mediumdamageboostpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "largedamageboostpickup"
     pickupName = "Large DamageBoost Pickup"
     pickupDescription = "Multiplies the ship damage with 7."
     spawnerTemplate = "largedamageboostpickupRepresentation"
     inventoryRepresentation = "LargeDamageBoost"
->
-    <pickup>
-        <DamageBoostPickup template=largedamageboostpickup />
-    </pickup>
-</PickupRepresentation>
+/>
 
 <!-- Shrink Pickup -->
 
 <PickupRepresentation
+    name = "smallshrinkpickup"
     pickupName = "Small Shrink"
     pickupDescription = "Shrinks the Ship by a bit"
     spawnerTemplate = "smallshrinkpickupRepresentation"
     inventoryRepresentation = "SmallShrink"
->
-    <pickup>
-        <ShrinkPickup template=smallshrinkpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "mediumshrinkpickup"
     pickupName = "Medium Shrink"
     pickupDescription = "Shrinks the Ship"
     spawnerTemplate = "mediumshrinkpickupRepresentation"
     inventoryRepresentation = "MediumShrink"
->
-    <pickup>
-        <ShrinkPickup template=mediumshrinkpickup />
-    </pickup>
-</PickupRepresentation>
-
-<PickupRepresentation
+/>
+
+<PickupRepresentation
+    name = "hugeshrinkpickup"
     pickupName = "Huge Shrink"
     pickupDescription = "Shrinks the Ship considerably"
     spawnerTemplate = "hugeshrinkpickupRepresentation"
     inventoryRepresentation = "HugeShrink"
->
-    <pickup>
-        <ShrinkPickup template=hugeshrinkpickup />
-    </pickup>
-</PickupRepresentation>
-
+/>
Index: code/branches/presentation2012merge/data/levels/pickups.oxw
===================================================================
--- code/branches/presentation2012merge/data/levels/pickups.oxw	(revision 9316)
+++ code/branches/presentation2012merge/data/levels/pickups.oxw	(revision 9318)
@@ -131,5 +131,5 @@
     <PickupSpawner position="-25,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
       <pickup>
-        <MetaPickup metaType="use" />
+        <MetaPickup representation="use" metaType="use" />
       </pickup>
     </PickupSpawner>
@@ -137,5 +137,5 @@
     <PickupSpawner position="0,75,-125" triggerDistance="10" respawnTime="5" maxSpawnedItems="10">
       <pickup>
-        <MetaPickup metaType="drop" />
+        <MetaPickup representation="drop" metaType="drop" />
       </pickup>
     </PickupSpawner>
@@ -194,17 +194,14 @@
     <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     <PickupRepresentation
+      name = "MediumHealth"
       pickupName = "Medium Health Pack"
       pickupDescription = "Once used adds a medium amout of health to the ship."
       spawnerTemplate = "mediumhealthpickupRepresentation"
       inventoryRepresentation = "MediumHealth"
-    >
-      <pickup>
-        <HealthPickup health=500 activationType=immediate healthRate=10 durationType=continuous />
-      </pickup>
-    </PickupRepresentation>
+    />
 
     <PickupSpawner position="-50,0,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
       <pickup>
-        <HealthPickup health=500 activationType=immediate healthRate=10 durationType=continuous />
+        <HealthPickup representation="MediumHealth" health=500 activationType=immediate healthRate=10 durationType=continuous />
       </pickup>
     </PickupSpawner>
Index: code/branches/presentation2012merge/data/levels/presentation09b.oxw
===================================================================
--- code/branches/presentation2012merge/data/levels/presentation09b.oxw	(revision 9316)
+++ code/branches/presentation2012merge/data/levels/presentation09b.oxw	(revision 9318)
@@ -102,17 +102,14 @@
     <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     <PickupRepresentation
+      name = "MediumHealth"
       pickupName = "Medium Health Pack"
       pickupDescription = "Once used adds a medium amout of health to the ship."
       spawnerTemplate = "mediumhealthpickupRepresentation"
       inventoryRepresentation = "MediumHealth"
-    >
-      <pickup>
-        <HealthPickup health=100 activationType="onUse" durationType="once" />
-      </pickup>
-    </PickupRepresentation>
+    />
 
     <PickupSpawner position="-4150,2750,1550" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
       <pickup>
-        <HealthPickup health=100 activationType=onUse durationType=once />
+        <HealthPickup representation="MediumHealth" health=100 activationType=onUse durationType=once />
       </pickup>
     </PickupSpawner>
Index: code/branches/presentation2012merge/data/levels/presentationFS10.oxw
===================================================================
--- code/branches/presentation2012merge/data/levels/presentationFS10.oxw	(revision 9316)
+++ code/branches/presentation2012merge/data/levels/presentationFS10.oxw	(revision 9318)
@@ -148,17 +148,14 @@
     <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     <PickupRepresentation
+      name = "MediumHealth"
       pickupName = "Medium Health Pack"
       pickupDescription = "Once used adds a medium amout of health to the ship."
       spawnerTemplate = "mediumhealthpickupRepresentation"
       inventoryRepresentation = "MediumHealth"
-    >
-      <pickup>
-        <HealthPickup health=50 activationType="onUse" durationType="once" />
-      </pickup>
-    </PickupRepresentation>
+    />
 
     <PickupSpawner position="25,-75,-500" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
       <pickup>
-        <HealthPickup health=50 activationType=onUse durationType=once />
+        <HealthPickup representation="MediumHealth" health=50 activationType=onUse durationType=once />
       </pickup>
     </PickupSpawner>
Index: code/branches/presentation2012merge/data/levels/presentationHS09.oxw
===================================================================
--- code/branches/presentation2012merge/data/levels/presentationHS09.oxw	(revision 9316)
+++ code/branches/presentation2012merge/data/levels/presentationHS09.oxw	(revision 9318)
@@ -105,17 +105,14 @@
     <!-- PickupRepresentation for the pickup below, since it is not a standard pickup provided by pickups.oxi -->
     <PickupRepresentation
+      name = "MediumHealth"
       pickupName = "Medium Health Pack"
       pickupDescription = "Once used adds a medium amout of health to the ship."
       spawnerTemplate = "mediumhealthpickupRepresentation"
       inventoryRepresentation = "MediumHealth"
-    >
-      <pickup>
-        <HealthPickup health=100 activationType="onUse" durationType="once" />
-      </pickup>
-    </PickupRepresentation>
+    />
 
     <PickupSpawner position="-4150,2750,1550" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
       <pickup>
-        <HealthPickup health=100 activationType=onUse durationType=once />
+        <HealthPickup representation="MediumHealth" health=100 activationType=onUse durationType=once />
       </pickup>
     </PickupSpawner>
Index: code/branches/presentation2012merge/data/levels/templates/pickupRepresentationTemplates.oxt
===================================================================
--- code/branches/presentation2012merge/data/levels/templates/pickupRepresentationTemplates.oxt	(revision 9316)
+++ code/branches/presentation2012merge/data/levels/templates/pickupRepresentationTemplates.oxt	(revision 9318)
@@ -19,4 +19,5 @@
 <Template name=smallshieldpickup>
   <ShieldPickup
+    representation = "smallshieldpickup"
     duration = 10
     shieldabsorption = 0.7
@@ -45,4 +46,5 @@
 <Template name=mediumshieldpickup>
   <ShieldPickup
+    representation = "mediumshieldpickup"
     duration = 30
     shieldabsorption = 0.8
@@ -72,4 +74,5 @@
 <Template name=hugeshieldpickup>
   <ShieldPickup
+    representation = "hugeshieldpickup"
     duration = 60
     shieldabsorption = 0.95
@@ -100,4 +103,5 @@
 <Template name=smallhealthpickup>
   <HealthPickup
+    representation = "smallhealthpickup"
     health = 10
     healthType = "limited"
@@ -125,4 +129,5 @@
 <Template name=mediumhealthpickup>
   <HealthPickup
+    representation = "mediumhealthpickup"
     health = 50
     healthType = "limited"
@@ -150,4 +155,5 @@
 <Template name=hugehealthpickup>
   <HealthPickup
+    representation = "hugehealthpickup"
     health = 100
     healthType = "limited"
@@ -175,4 +181,5 @@
 <Template name=crazyhealthpickup>
   <HealthPickup
+    representation = "crazyhealthpickup"
     health = 1000
     healthType = "permanent"
@@ -236,4 +243,5 @@
 <Template name=smalldamageboostpickup>
   <DamageBoostPickup
+    representation = "smalldamageboostpickup"
     duration = 10.0
     damageMultiplier = 2.0
@@ -261,4 +269,5 @@
 <Template name=mediumdamageboostpickup>
   <DamageBoostPickup
+    representation = "mediumdamageboostpickup"
     duration = 10.0
     damageMultiplier = 5.0
@@ -286,4 +295,5 @@
 <Template name=largedamageboostpickup>
   <DamageBoostPickup
+    representation = "largedamageboostpickup"
     duration = 10.0
     damageMultiplier = 7.0
@@ -314,4 +324,5 @@
 <Template name=smallspeedpickup>
   <SpeedPickup
+    representation = "smallspeedpickup"
     duration = 10.0
     speedAdd = 0.0
@@ -340,4 +351,5 @@
 <Template name=mediumspeedpickup>
   <SpeedPickup
+    representation = "mediumspeedpickup"
     duration = 10.0
     speedAdd = 0.0
@@ -366,4 +378,5 @@
 <Template name=hugespeedpickup>
   <SpeedPickup
+    representation = "hugespeedpickup"
     duration = 10.0
     speedAdd = 0.0
@@ -392,4 +405,5 @@
 <Template name=smalljumppickup>
   <SpeedPickup
+    representation = "smalljumppickup"
     duration = 0.7
     speedAdd = 5000.0
@@ -420,4 +434,5 @@
 <Template name=smallinvisiblepickup>
   <InvisiblePickup 
+    representation = "smallinvisiblepickup"
     duration = 5.0
     activaionType = "immediate"
@@ -444,4 +459,5 @@
 <Template name=mediuminvisiblepickup>
   <InvisiblePickup 
+    representation = "mediuminvisiblepickup"
     duration = 10.0
     activaionType = "immediate"
@@ -468,4 +484,5 @@
 <Template name=hugeinvisiblepickup>
   <InvisiblePickup 
+    representation = "hugeinvisiblepickup"
     duration = 20.0
     activaionType = "immediate"
@@ -492,4 +509,5 @@
 <Template name=smallshrinkpickup>
   <ShrinkPickup 
+    representation = "smallshrinkpickup"
     duration = 10.0
     shrinkFactor = 2.5
@@ -517,4 +535,5 @@
 <Template name=mediumshrinkpickup>
   <ShrinkPickup 
+    representation = "mediumshrinkpickup"
     duration = 30.0
     shrinkFactor = 5.0
@@ -542,4 +561,5 @@
 <Template name=hugeshrinkpickup>
   <ShrinkPickup 
+    representation = "hugeshrinkpickup"
     duration = 60.0
     shrinkFactor = 10.0
@@ -570,5 +590,7 @@
 
 <Template name=triplehealthspeedinvisibilitypickup>
-    <PickupCollection>
+    <PickupCollection
+        representation = "triplehealthspeedinvisibilitypickup"
+    >
         <pickupables>
             <HealthPickup template=mediumhealthpickup />
@@ -630,5 +652,5 @@
 
 <Template name=dronepickup>
-    <DronePickup droneTemplate=droneTemplate />
-</Template>
-
+    <DronePickup representation=dronepickup droneTemplate=droneTemplate />
+</Template>
+
Index: code/branches/presentation2012merge/src/modules/pickup/CMakeLists.txt
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/CMakeLists.txt	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/CMakeLists.txt	(revision 9318)
@@ -4,5 +4,4 @@
   Pickup.cc
   PickupCollection.cc
-  PickupCollectionIdentifier.cc
   PickupManager.cc
   PickupRepresentation.cc
Index: code/branches/presentation2012merge/src/modules/pickup/Pickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/Pickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/Pickup.cc	(revision 9318)
@@ -36,6 +36,4 @@
 #include "core/CoreIncludes.h"
 #include "util/StringUtils.h"
-
-#include "pickup/PickupIdentifier.h"
 
 #include "DroppedPickup.h"
@@ -86,14 +84,4 @@
     /**
     @brief
-        Initializes the PickupIdentififer of this Pickup.
-    */
-    void Pickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("activationType", this->getActivationType());
-        this->pickupIdentifier_->addParameter("durationType", this->getDurationType());
-    }
-
-    /**
-    @brief
         Method for creating a Pickup object through XML.
     */
@@ -102,8 +90,7 @@
         SUPER(Pickup, XMLPort, xmlelement, mode);
 
+        XMLPortParam(Pickup, "representation", setRepresentationName, getRepresentationName, xmlelement, mode);
         XMLPortParam(Pickup, "activationType", setActivationTypeAsString, getActivationTypeAsString, xmlelement, mode);
         XMLPortParam(Pickup, "durationType", setDurationTypeAsString, getDurationTypeAsString, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -206,8 +193,7 @@
 
         Pickup* pickup = orxonox_cast<Pickup*>(item);
+        pickup->setRepresentationName(this->getRepresentationName());
         pickup->setActivationType(this->getActivationType());
         pickup->setDurationType(this->getDurationType());
-
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/Pickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/Pickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/Pickup.h	(revision 9318)
@@ -105,4 +105,7 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
+            virtual const std::string& getRepresentationName() const
+                { return this->representationName_; }
+
             /**
             @brief Get the activation type of the Pickup.
@@ -150,7 +153,11 @@
 
         protected:
-            void initializeIdentifier(void);
+            virtual bool createSpawner(void); //!< 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.
+            /**
+            @brief Sets the representation name which refers to the name of the PickupRepresentation that is used to represent this pickup.
+            */
+            inline void setRepresentationName(const std::string& name)
+                { this->representationName_ = name; }
 
             /**
@@ -173,4 +180,5 @@
             void initialize(void); //!< Initializes the member variables.
 
+            std::string representationName_; //!< The name of the associated PickupRepresentation.
             pickupActivationType::Value activationType_; //!< The activation type of the Pickup.
             pickupDurationType::Value durationType_; //!< The duration type of the Pickup.
Index: code/branches/presentation2012merge/src/modules/pickup/PickupCollection.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupCollection.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupCollection.cc	(revision 9318)
@@ -39,5 +39,4 @@
 #include "CollectiblePickup.h"
 #include "DroppedPickup.h"
-#include "PickupCollectionIdentifier.h"
 
 #include "PickupCollection.h"
@@ -54,9 +53,8 @@
         The creator of the object.
     */
-    PickupCollection::PickupCollection(BaseObject* creator) : BaseObject(creator), pickupCollectionIdentifier_(NULL)
+    PickupCollection::PickupCollection(BaseObject* creator) : BaseObject(creator)
     {
         RegisterObject(PickupCollection);
 
-        this->pickupCollectionIdentifier_ = new PickupCollectionIdentifier(this);
         this->processingUsed_ = false;
         this->processingPickedUp_ = false;
@@ -76,7 +74,4 @@
         }
         this->pickups_.clear();
-
-        if(this->pickupCollectionIdentifier_ != NULL)
-            this->pickupCollectionIdentifier_->destroy();
     }
 
@@ -89,4 +84,5 @@
         SUPER(PickupCollection, XMLPort, xmlelement, mode);
 
+        XMLPortParam(PickupCollection, "representation", setRepresentationName, getRepresentationName, xmlelement, mode);
         XMLPortObject(PickupCollection, CollectiblePickup, "pickupables", addPickupable, getPickupable, xmlelement, mode);
     }
@@ -217,4 +213,5 @@
 
         PickupCollection* pickup = orxonox_cast<PickupCollection*>(item);
+        pickup->setRepresentationName(this->getRepresentationName());
         // Clone all Pickupables this PickupCollection consist of.
         for(std::list<CollectiblePickup*>::iterator it = this->pickups_.begin(); it != this->pickups_.end(); ++it)
@@ -243,16 +240,4 @@
 
         return true;
-    }
-
-    /**
-    @brief
-        Get the PickupIdentifier of this PickupCollection.
-        This is in fact the PickupCollectionIdentifier.
-    @return
-        Returns a pointer to the PickupIdentifier of this PickupCollection.
-    */
-    const PickupIdentifier* PickupCollection::getPickupIdentifier(void) const
-    {
-        return this->pickupCollectionIdentifier_;
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/PickupCollection.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupCollection.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupCollection.h	(revision 9318)
@@ -50,6 +50,4 @@
         The PickupCollection combines different @ref orxonox::Pickupable "Pickupables" (more precisely @ref orxonox::CollectiblePickup "CollectiblePickups") to a coherent, single pickup and makes them seem (from the outside looking in) just as if they were just one @ref orxonox::Pickupable "Pickupable".
 
-        To differentiate between different types of @ref orxonox::PickupCollection "PickupCollections" (just as we differentiate between different types of @ref orxonox::Pickupable "Pickupables") we define a new identifyer called the @ref orxonox::PickupCollectionIdentifier "PickupCollectionIdentifier" which has pretty much the same properties as the @ref orxonox::PickupIdentifier "PickupIdentifier" but extende to @ref orxonox::PickupCollection "PickupCollections".
-
         A PickupCollection can be created in XML as follows:
         @code
@@ -85,5 +83,8 @@
             virtual bool isTarget(const PickupCarrier* carrier) const; //!< Get whether a given class, represented by the input Identifier, is a target of this PickupCollection.
 
-            virtual const PickupIdentifier* getPickupIdentifier(void) const; //!< Get the PickupIdentifier of this PickupCollection.
+            inline void setRepresentationName(const std::string& name)
+                { this->representationName_ = name; }
+            virtual const std::string& getRepresentationName() const
+                { return this->representationName_; }
 
             bool addPickupable(CollectiblePickup* pickup); //!< Add the input Pickupable to list of Pickupables combined by this PickupCollection.
@@ -101,6 +102,4 @@
             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.
-
         private:
             void changedUsedAction(void); //!< Helper method.
@@ -108,4 +107,5 @@
             void pickupsChanged(void); //!< Helper method.
 
+            std::string representationName_; //!< The name of the associated PickupRepresentation.
             std::list<CollectiblePickup*> pickups_; //!< The list of the pointers of all the Pickupables this PickupCollection consists of. They are weak pointers to facilitate testing, whether the pointers are still valid.
 
Index: code/branches/presentation2012merge/src/modules/pickup/PickupCollectionIdentifier.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupCollectionIdentifier.cc	(revision 9316)
+++ 	(revision )
@@ -1,104 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Damian 'Mozork' Frick
- *   Co-authors:
- *      ...
- *
-*/
-
-/**
-    @file PickupCollectionIdentifier.cc
-    @brief Implementation of PickupCollectionIdentifier.
-*/
-
-#include "core/CoreIncludes.h"
-
-#include "PickupCollectionIdentifier.h"
-#include "PickupCollection.h"
-
-namespace orxonox
-{
-
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    PickupCollectionIdentifier::PickupCollectionIdentifier(PickupCollection* collection) : PickupIdentifier(collection)
-    {
-        RegisterObject(PickupCollectionIdentifier);
-
-        this->collection_ = collection;
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    PickupCollectionIdentifier::~PickupCollectionIdentifier()
-    {
-
-    }
-
-    /**
-    @brief
-        Compares a PickupCollectionIdentifier with a PickupIdentifier and returns 0 if a == b, <0 if a < b and >0 if a > b for a.compare(b), where a is a PickupCollectionIdentifier and b is just some PickupIdentifier.
-    @param identifier
-        Pointer to the second PickupIdentifier, b.
-    @return
-        Returns an integer. 0 if the two compared PickupIdentifiers are the same, <0 if a < b and >0 if a > b.
-    */
-    int PickupCollectionIdentifier::compare(const PickupIdentifier* identifier) const
-    {
-        assert(identifier);
-
-        const PickupCollectionIdentifier* collectionIdentifier = orxonox_cast<const PickupCollectionIdentifier*>(identifier);
-
-        // If the input PickupIdentifier 'identifier' is no PickupCollectionIdentifier then just the two PickupIdentifiers are compared.
-        if(collectionIdentifier == NULL)
-        {
-            return this->PickupIdentifier::compare(identifier);
-        }
-
-        // If the number of Pickupables each of the two PickupCollectionIdentifiers contain differ, the one with less is considered smaller.
-        if(this->collection_->getPickups().size() != collectionIdentifier->collection_->getPickups().size())
-            return this->collection_->getPickups().size()-collectionIdentifier->collection_->getPickups().size();
-
-        // Compare the Pickupables of the two PickupCollectionIdentifiers one after the other. the one with the first 'smaller' one is considered smaller.
-        std::list<CollectiblePickup*>::const_iterator it1 = this->collection_->getPickups().begin();
-        std::list<CollectiblePickup*>::const_iterator it2 = collectionIdentifier->collection_->getPickups().begin();
-        for( ; it1 != this->collection_->getPickups().end(); ++it1, ++it2)
-        {
-            const PickupIdentifier* id1 = (*it1)->getPickupIdentifier();
-            const PickupIdentifier* id2 = (*it2)->getPickupIdentifier();
-
-            int result = id1->compare(id2);
-            if(result != 0)
-                return result;
-        }
-
-        // This means they are equal.
-        return 0;
-    }
-
-}
-
Index: code/branches/presentation2012merge/src/modules/pickup/PickupCollectionIdentifier.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupCollectionIdentifier.h	(revision 9316)
+++ 	(revision )
@@ -1,75 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Damian 'Mozork' Frick
- *   Co-authors:
- *      ...
- *
-*/
-
-/**
-    @file PickupCollectionIdentifier.h
-    @brief Declaration of PickupCollectionIdentifier.
-    @ingroup Pickup
-*/
-
-#ifndef _PickupCollectionIdentifier_H__
-#define _PickupCollectionIdentifier_H__
-
-#include "PickupPrereqs.h"
-
-#include <set>
-
-#include "pickup/PickupIdentifier.h"
-
-namespace orxonox
-{
-
-    /**
-    @brief
-        The PickupCollectionIdentifier is the specialization of the PickupIdentifier for the @ref orxonox::PickupCollection "PickupCollection" class.
-        It identifies @ref orxonox::PickupCollection "PickupCollections" based on the different @ref orxonox::CollectiblePickup "CollectiblePickups" they consist of.
-
-        @ref orxonox::Pickupable "Pickupables" (resp. @ref orxonox::CollectiblePickup "CollectiblePickups") can be added to the PickupCollectionIdentifier via the addPickup method.
-
-    @author
-        Damian 'Mozork' Frick
-
-    @ingroup Pickup
-    */
-    class _PickupExport PickupCollectionIdentifier : public PickupIdentifier
-    {
-
-        public:
-            PickupCollectionIdentifier(PickupCollection* pickup); //!< Constructor.
-            ~PickupCollectionIdentifier(); //!< Destructor.
-
-            virtual int compare(const PickupIdentifier* identifier) const; //!< Compares a PickupCollectionIdentifier with a PickupIdentifier.
-
-        private:
-            PickupCollection* collection_;
-
-    };
-
-}
-
-#endif // _PickupCollectionIdentifier_H__
Index: code/branches/presentation2012merge/src/modules/pickup/PickupManager.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupManager.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupManager.cc	(revision 9318)
@@ -87,5 +87,4 @@
 
         this->representations_.clear();
-        this->representationsNetworked_.clear();
 
         // Destroying all the PickupInventoryContainers that are still there.
@@ -106,8 +105,7 @@
     /**
     @brief
-        Registers a PickupRepresentation together with the PickupIdentifier of the Pickupable the PickupRepresentation represents, on the server (or in standalone mode).
-        For every type of Pickupable (uniquely identified by a PickupIdentifier) there can be one (and just one) PickupRepresentation registered.
-    @param identifier
-        The PickupIdentifier identifying the Pickupable.
+        Registers a PickupRepresentation.
+    @param name
+        The representation's name.
     @param representation
         A pointer to the PickupRepresentation.
@@ -115,14 +113,13 @@
         Returns true if successful and false if not.
     */
-    bool PickupManager::registerRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
-    {
-        assert(identifier);
+    bool PickupManager::registerRepresentation(const std::string& name, PickupRepresentation* representation)
+    {
         assert(representation);
 
         // If the list is not empty and Pickupable already has a Representation registered.
-        if(!this->representations_.empty() && this->representations_.find(identifier) != this->representations_.end())
+        if(!this->representations_.empty() && this->representations_.find(name) != this->representations_.end())
             return false;
 
-        this->representations_[identifier] = representation;
+        this->representations_[name] = representation;
 
         orxout(verbose, context::pickups) << "PickupRepresentation &" << representation << " registered with the PickupManager." << endl;
@@ -132,18 +129,13 @@
     /**
     @brief
-        Unegisters a PickupRepresentation together with the PickupIdentifier of the Pickupable the PickupRepresentation represents, on the server (or in standalone mode).
-    @param identifier
-        The PickupIdentifier identifying the Pickupable.
-    @param representation
-        A pointer to the PickupRepresentation.
+        Unegisters a PickupRepresentation.
+    @param name
+        The representation's name.
     @return
         Returns true if successful and false if not.
     */
-    bool PickupManager::unregisterRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
-    {
-        assert(identifier);
-        assert(representation);
-
-        std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare>::iterator it = this->representations_.find(identifier);
+    bool PickupManager::unregisterRepresentation(const std::string& name)
+    {
+        std::map<std::string, PickupRepresentation*>::iterator it = this->representations_.find(name);
         if(it == this->representations_.end()) // If the Pickupable is not registered in the first place.
             return false;
@@ -151,5 +143,5 @@
         this->representations_.erase(it);
 
-        orxout(verbose, context::pickups) << "PickupRepresentation &" << representation << " unregistered with the PickupManager." << endl;
+        orxout(verbose, context::pickups) << "PickupRepresentation &" << name << " unregistered with the PickupManager." << endl;
         return true;
     }
@@ -157,54 +149,14 @@
     /**
     @brief
-        Registers a PickupRepresentation on the host it was created.
-    @param representation
-        A pointer to the PickupRepresentation.
-    @return
-        Returns true if successful, false if not.
-    */
-    bool PickupManager::registerRepresentation(PickupRepresentation* representation)
-    {
-        assert(representation);
-
-        // If the list is not empty and PickupRepresentation is already registered.
-        if(!this->representationsNetworked_.empty() && this->representationsNetworked_.find(representation->getObjectID()) != this->representationsNetworked_.end())
-            return false;
-
-        this->representationsNetworked_[representation->getObjectID()] = representation;
-        return true;
-    }
-
-    /**
-    @brief
-        Unregisters a PickupRepresentation on the host it is being destroyed (which is the same host on which it was created).
-    @param representation
-        A pointer to the Pickuprepresentation.
-    @return
-        Returns true if successful, false if not.
-    */
-    bool PickupManager::unregisterRepresentation(PickupRepresentation* representation)
-    {
-        assert(representation);
-
-        std::map<uint32_t, PickupRepresentation*>::iterator it = this->representationsNetworked_.find(representation->getObjectID());
-        if(it == this->representationsNetworked_.end()) // If the Pickupable is not registered in the first place.
-            return false;
-
-        this->representationsNetworked_.erase(it);
-        return true;
-    }
-
-    /**
-    @brief
-        Get the PickupRepresentation representing the Pickupable with the input PickupIdentifier.
-    @param identifier
-        The PickupIdentifier.
+        Get the PickupRepresentation with the given name.
+    @param name
+        The name of the PickupRepresentation.
     @return
         Returns a pointer to the PickupRepresentation.
     */
-    PickupRepresentation* PickupManager::getRepresentation(const PickupIdentifier* identifier)
-    {
-        std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare>::iterator it = this->representations_.find(identifier);
-        if(it == this->representations_.end()) // If there is no PickupRepresentation associated with the input PickupIdentifier.
+    PickupRepresentation* PickupManager::getRepresentation(const std::string& name)
+    {
+        std::map<std::string, PickupRepresentation*>::iterator it = this->representations_.find(name);
+        if(it == this->representations_.end()) // If there is no PickupRepresentation associated with the input name.
         {
             orxout(verbose, context::pickups) << "PickupManager::getRepresentation() returned default representation." << endl;
@@ -353,8 +305,8 @@
         {
             // If there is no PickupRepresentation registered the default representation is used.
-            if(this->representations_.find(pickup->getPickupIdentifier()) == this->representations_.end())
-                PickupManager::pickupChangedPickedUpNetwork(index, pickup->isUsable(), this->defaultRepresentation_->getObjectID(), pickedUp);
+            if(this->representations_.find(pickup->getRepresentationName()) == this->representations_.end())
+                PickupManager::pickupChangedPickedUpNetwork(index, pickup->isUsable(), this->defaultRepresentation_->getObjectID(), pickup->getRepresentationName(), pickedUp);
             else
-                PickupManager::pickupChangedPickedUpNetwork(index, pickup->isUsable(), this->representations_[pickup->getPickupIdentifier()]->getObjectID(), pickedUp);
+                PickupManager::pickupChangedPickedUpNetwork(index, pickup->isUsable(), this->representations_[pickup->getRepresentationName()]->getObjectID(), pickup->getRepresentationName(), pickedUp);
         }
         // If the concerned host is somewhere in the network, we call pickupChangedPickedUpNetwork() on its PickupManager.
@@ -362,5 +314,5 @@
         {
             // If there is no PickupRepresentation registered the default representation is used.
-            if(this->representations_.find(pickup->getPickupIdentifier()) == this->representations_.end())
+            if(this->representations_.find(pickup->getRepresentationName()) == this->representations_.end())
             {
                 callStaticNetworkFunction(PickupManager::pickupChangedPickedUpNetwork, clientId, index, pickup->isUsable(), this->defaultRepresentation_->getObjectID(), pickedUp);
@@ -368,5 +320,5 @@
             else
             {
-                callStaticNetworkFunction(PickupManager::pickupChangedPickedUpNetwork, clientId, index, pickup->isUsable(), this->representations_[pickup->getPickupIdentifier()]->getObjectID(), pickedUp);
+                callStaticNetworkFunction(PickupManager::pickupChangedPickedUpNetwork, clientId, index, pickup->isUsable(), this->representations_[pickup->getRepresentationName()]->getObjectID(), pickedUp);
             }
         }
@@ -388,5 +340,5 @@
         The pickedUp status the Pickupable changed to.
     */
-    /*static*/ void PickupManager::pickupChangedPickedUpNetwork(uint32_t pickup, bool usable, uint32_t representationObjectId, bool pickedUp)
+    /*static*/ void PickupManager::pickupChangedPickedUpNetwork(uint32_t pickup, bool usable, uint32_t representationObjectId, const std::string& representationName, bool pickedUp)
     {
         PickupManager& manager = PickupManager::getInstance(); // Get the PickupManager singleton on this host.
@@ -402,4 +354,5 @@
             container->unusable = false;
             container->representationObjectId = representationObjectId;
+            container->representationName = representationName;
             // Insert the container into the pickupInventoryContainers_ list.
             manager.pickupInventoryContainers_.insert(std::pair<uint32_t, PickupInventoryContainer*>(pickup, container));
@@ -417,34 +370,4 @@
             manager.updateGUI(); // Tell the PickupInventory that something has changed.
         }
-    }
-
-    /**
-    @brief
-        Get the PickupRepresentation of an input Pickupable.
-        This method spares us the hassle to export the PickupIdentifier class to lua.
-    @param pickup
-        The number identifying the Pickupable whose PickupRepresentation should be returned.
-    @return
-        Returns the PickupRepresentation of the input Pickupable or NULL if an error occurred.
-    */
-    orxonox::PickupRepresentation* PickupManager::getPickupRepresentation(uint32_t pickup)
-    {
-        // Clear and rebuild the representationsNetworked_ list.
-        //TODO: Better solution?
-        this->representationsNetworked_.clear();
-        for(ObjectList<PickupRepresentation>::iterator it = ObjectList<PickupRepresentation>::begin(); it != ObjectList<PickupRepresentation>::end(); ++it)
-            this->representationsNetworked_[it->getObjectID()] = *it;
-
-        // Get the container belonging to the input pickup, if not found return the default representation.
-        std::map<uint32_t, PickupInventoryContainer*>::iterator it = this->pickupInventoryContainers_.find(pickup);
-        if(it == this->pickupInventoryContainers_.end())
-            return this->defaultRepresentation_;
-
-        // Get the PickupRepresentation of the input pickup (through the objecId of the representation stored in the PickupInventoryContainer belonging to the pickup), if not found return the default representation.
-        std::map<uint32_t, PickupRepresentation*>::iterator it2 = this->representationsNetworked_.find(it->second->representationObjectId);
-        if(it2 == this->representationsNetworked_.end())
-            return this->defaultRepresentation_;
-
-        return it2->second;
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/PickupManager.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupManager.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupManager.h	(revision 9318)
@@ -41,6 +41,4 @@
 #include "core/WeakPtr.h"
 
-#include "pickup/PickupIdentifier.h"
-
 #include "PickupRepresentation.h"
 
@@ -67,4 +65,5 @@
         bool unusable; //!< Whether the @ref orxonox::Pickupable "Pickupable" is droppable.
         uint32_t representationObjectId; //!< The objectId of the @ref orxonox::PickupRepresentation "PickupRepresentation" that represents the @ref orxonox::Pickupable "Pickupable".
+        std::string representationName; //!< The name of the associated PickupRepresentation
     };
     // tolua_end
@@ -74,5 +73,5 @@
         The PickupManager class manages @ref orxonox::Pickupable "Pickupables".
 
-        It has in essence two tasks to fulfill. Firstly it must link @ref orxonox::Pickupable "Pickupables" (through their @ref orxonox::PickupIdentifier "PickupIdentifiers") to their respective @ref orxonox::PickupRepresentation "PickupRepresentations". Secondly it manages the PickupInventory. (The PickupInventory is the GUI that displays @ref orxonox::Pickupable "Pickupables" for the covenience of the user.)
+        It has in essence two tasks to fulfill. Firstly it must link @ref orxonox::Pickupable "Pickupables" (through their representation-name attribute) to the respective @ref orxonox::PickupRepresentation "PickupRepresentations". Secondly it manages the PickupInventory. (The PickupInventory is the GUI that displays @ref orxonox::Pickupable "Pickupables" for the covenience of the user.)
 
         @section PickupManagerTechnicalDetails Technical details
@@ -86,6 +85,5 @@
 
         Firstly there are a number of lists (where by list I really mean any kind of ordered data structure) kept.
-        - The @ref orxonox::PickupManager::representations_ "representations_" list links @ref orxonox::PickupRepresentation "PickupRepresentations" with @ref orxonox::PickupIdentifier "PickupIdentifiers" and can be used to get the @ref orxonox::PickupRepresentation "PickupRepresentation" for a given @ref orxonox::Pickupable "Pickupable". It is only populated on the server (or in standalone mode). Each @ref orxonox::PickupRepresentation "PickupRepresentation" that is generated through XML registers itself with the PickupManager and is thereby added to the list.
-        - The @ref orxonox::PickupManager::representationsNetworked_ "representationsNetworked_" list is the networked (hence the name) equivalent to the @ref orxonox::PickupManager::representations_ "representations_" list. It links an objectId of a @ref orxonox::PickupRepresentation "PickupRepresentation" to a @ref orxonox::PickupRepresentation "PickupRepresentation". This list is maintained on all hosts, each representation registers itself (in its constructor) with the PickupManager. Since the representations are synchronised they are created on each host. The "same" instance on each host is identified by the same objectId and that is why we store the representations with the objectId as key. We can then use this list to get a @ref orxonox::PickupRepresentation "PickupRepresentation" for a specific @ref orxonox::Pickupable "Pickupable" (or more precisely a number identifiying that particular pickup, but we'll see that, when we look at the next list) on a client to be used in the PickupInventory.
+        - The @ref orxonox::PickupManager::representations_ "representations_" list links @ref orxonox::PickupRepresentation "PickupRepresentations" with its name and can be used to get the @ref orxonox::PickupRepresentation "PickupRepresentation" for a given @ref orxonox::Pickupable "Pickupable". It is only populated on the server (or in standalone mode). Each @ref orxonox::PickupRepresentation "PickupRepresentation" that is generated through XML registers itself with the PickupManager and is thereby added to the list.
         - The @ref orxonox::PickupManager::pickupInventoryContainers_ "pickupInventoryContainers_" list links a number identifying a @ref orxonox::Pickupable "Pickupable" to a data structure (the @ref orxonox::PickupInventoryContainer "PickupInventoryContainer"), which contains all necessary information about that @ref orxonox::Pickupable "Pickupable". This list is maintained on all hosts, a new container is inserted when a @ref orxonox::Pickupable "Pickupable" is picked up, but only if it has been picked up by the repsective host. This list is then used by the PickupInventory to access the required information and to get the correct @ref orxonox::PickupRepresentation "PickupRepresentation".
         - The @ref orxonox::PickupManager::pickups_ "pickups_" list links a number identifiying a @ref orxonox::Pickupable "Pickupable" to a (weak pointer to a) @ref orxonox::Pickupable "Pickupable". It is only maintained by the server (or in standalone mode), to be able to use, unuse and drop @ref orxonox::Pickupable "Pickupables" through the PickupInventory. Since @ref orxonox::Pickupable "Pickupables" only exist on the server a client that wants to change a pickups status has so send a request over the network (with the number identifying the pickup) to the server and then the server facilitates the change, using this list to map from the identifyer to the actual @ref orxonox::Pickupable "Pickupable".
@@ -114,22 +112,17 @@
             static PickupManager& getInstance() { return Singleton<PickupManager>::getInstance(); } // tolua_export
 
-            bool registerRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation); //!< Registers a PickupRepresentation together with the PickupIdentifier of the Pickupable the PickupRepresentation represents.
-            bool unregisterRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation); //!< Unegisters a PickupRepresentation together with the PickupIdentifier of the Pickupable the PickupRepresentation represents.
+            bool registerRepresentation(const std::string& name, PickupRepresentation* representation);
+            bool unregisterRepresentation(const std::string& name);
 
-            bool registerRepresentation(PickupRepresentation* representation); //!< Registers a PickupRepresentation on the host it was created.
-            bool unregisterRepresentation(PickupRepresentation* representation); //!< Unregisters a PickupRepresentation on the host it is being destroyed.
-
-            PickupRepresentation* getRepresentation(const PickupIdentifier* identifier); //!< Get the PickupRepresentation representing the Pickupable with the input PickupIdentifier.
+            PickupRepresentation* getRepresentation(const std::string& name); // tolua_export
 
             virtual void pickupChangedUsed(Pickupable* pickup, bool used); //!< Is called by the PickupListener to notify the PickupManager, that the input Pickupable has transited to the input used state.
             static void pickupChangedUsedNetwork(uint32_t pickup, bool inUse, bool usable, bool unusable); //!< Helper method to react to the change in the used status of a Pickupable.
             virtual void pickupChangedPickedUp(Pickupable* pickup, bool pickedUp); //!< Is called by the PickupListener to notify the PickupManager, that the input Pickupable has transited to the input pickedUp state.
-            static void pickupChangedPickedUpNetwork(uint32_t pickup, bool usable, uint32_t representationObjectId, bool pickedUp); //!< Helper method to react to the change in the pickedUp status of a Pickupable.
+            static void pickupChangedPickedUpNetwork(uint32_t pickup, bool usable, uint32_t representationObjectId, const std::string& representationName, bool pickedUp); //!< Helper method to react to the change in the pickedUp status of a Pickupable.
 
         // Methods to be used by the PickupInventory.
         public:
             // tolua_begin
-            orxonox::PickupRepresentation* getPickupRepresentation(uint32_t pickup); //!< Get the PickupRepresentation of an input indentifier for Pickupable.
-
             int getNumPickups(void); //!< Get the number of pickups currently picked up by the player.
             /**
@@ -163,6 +156,5 @@
             PickupRepresentation* defaultRepresentation_; //!< The default PickupRepresentation.
 
-            std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare> representations_; //!< Map linking PickupIdentifiers (representing types of Pickupables) and PickupRepresentations.
-            std::map<uint32_t, PickupRepresentation*> representationsNetworked_; //!< Map linking the PickupRepresentation's objectId to the PickupRepresentation itself. It is used for networking purposes.
+            std::map<std::string, PickupRepresentation*> representations_; //!< Map linking PickupRepresentations and their names.
 
             std::map<uint32_t, PickupInventoryContainer*> pickupInventoryContainers_; //!< Map linking a number identifying a Pickupable to a PickupInventoryContainer, which contains all necessary information about that Pickupable.
Index: code/branches/presentation2012merge/src/modules/pickup/PickupPrereqs.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupPrereqs.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupPrereqs.h	(revision 9318)
@@ -73,5 +73,4 @@
     class Pickup;
     class PickupCollection;
-    class PickupCollectionIdentifier;
     class PickupManager;
     class PickupRepresentation;
Index: code/branches/presentation2012merge/src/modules/pickup/PickupRepresentation.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupRepresentation.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupRepresentation.cc	(revision 9318)
@@ -52,5 +52,5 @@
         This is primarily for use of the PickupManager in creating a default PickupRepresentation.
     */
-    PickupRepresentation::PickupRepresentation() : BaseObject(NULL), Synchronisable(NULL), spawnerRepresentation_(NULL), pickup_(NULL)
+    PickupRepresentation::PickupRepresentation() : BaseObject(NULL), Synchronisable(NULL), spawnerRepresentation_(NULL)
     {
         RegisterObject(PickupRepresentation);
@@ -64,5 +64,5 @@
         Default Constructor. Registers the object and initializes its member variables.
     */
-    PickupRepresentation::PickupRepresentation(BaseObject* creator) : BaseObject(creator), Synchronisable(creator), spawnerRepresentation_(NULL), pickup_(NULL)
+    PickupRepresentation::PickupRepresentation(BaseObject* creator) : BaseObject(creator), Synchronisable(creator), spawnerRepresentation_(NULL)
     {
         RegisterObject(PickupRepresentation);
@@ -70,6 +70,4 @@
         this->initialize();
         this->registerVariables();
-
-        PickupManager::getInstance().registerRepresentation(this); // Registers the PickupRepresentation with the PickupManager.
     }
 
@@ -84,11 +82,5 @@
 
         if(this->isInitialized())
-        {
-            if(GameMode::isMaster() && this->pickup_ != NULL)
-            {
-                PickupManager::getInstance().unregisterRepresentation(this->pickup_->getPickupIdentifier(), this);
-            }
-            PickupManager::getInstance().unregisterRepresentation(this);
-        }
+            PickupManager::getInstance().unregisterRepresentation(this->getName());
     }
 
@@ -128,15 +120,5 @@
         XMLPortParam(PickupRepresentation, "spawnerTemplate", setSpawnerTemplate, getSpawnerTemplate, xmlelement, mode);
         XMLPortParam(PickupRepresentation, "inventoryRepresentation", setInventoryRepresentation, getInventoryRepresentation, xmlelement, mode);
-        XMLPortObject(PickupRepresentation, Pickupable, "pickup", setPickup, getPickup, xmlelement, mode);
         XMLPortObject(PickupRepresentation, StaticEntity, "spawner-representation", setSpawnerRepresentation, getSpawnerRepresentationIndex, xmlelement, mode);
-
-        if(GameMode::isMaster())
-        {
-            // Registers the PickupRepresentation with the PickupManager through the PickupIdentifier of the Pickupable it represents.
-            PickupManager::getInstance().registerRepresentation(this->pickup_->getPickupIdentifier(), this);
-        }
-
-        if(this->spawnerRepresentation_ != NULL)
-            this->spawnerRepresentation_->setVisible(false);
 
         orxout(verbose, context::pickups) << "PickupRepresentation created: name: '" << this->name_ << "', description: '" << this->description_ << "', spawnerTemplate: '" << this->spawnerTemplate_ << "'." << endl;
@@ -172,4 +154,18 @@
     }
 
+    void PickupRepresentation::changedName()
+    {
+        // Registers the PickupRepresentation with the PickupManager.
+        PickupManager::getInstance().unregisterRepresentation(this->getOldName());
+        PickupManager::getInstance().registerRepresentation(this->getName(), this);
+    }
+
+    void PickupRepresentation::setSpawnerRepresentation(StaticEntity* representation)
+    {
+        this->spawnerRepresentation_ = representation;
+        if(this->spawnerRepresentation_ != NULL)
+            this->spawnerRepresentation_->setVisible(false);
+    }
+
     /**
     @brief
Index: code/branches/presentation2012merge/src/modules/pickup/PickupRepresentation.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupRepresentation.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupRepresentation.h	(revision 9318)
@@ -41,5 +41,4 @@
 
 #include "interfaces/Pickupable.h"
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/StaticEntity.h"
 
@@ -54,5 +53,5 @@
     /**
     @brief
-        The PickupRepresentation class represents a specific pickup type (identified by its @ref orxonox::PickupIdentifier "PickupIdentifier"). It defines the information displayed in the GUI (PickupInventory) and how @ref orxonox::PickupSpawner "PickupSpawners" that spawn the pickup type look like.
+        The PickupRepresentation class represents a specific pickup type. It defines the information displayed in the GUI (PickupInventory) and how @ref orxonox::PickupSpawner "PickupSpawners" that spawn the pickup type look like.
         They are created through XML and are registered with the @ref orxonox::PickupManager "PickupManager".
 
@@ -64,9 +63,5 @@
             spawnerTemplate = "awesomePickupRepresentation"
             inventoryRepresentation = "AwesomePickup"
-        >
-            <pickup>
-                <SomePickup />
-            </pickup>
-        </PickupRepresentation>
+        />
         @endcode
         As you might have noticed, there is a parameter called <em>spawnerTemplate</em> and also another parameter called <em>inventoryRepresentation</em>. Let's first explain the second one, <em>inventoryRepresentation</em>.
@@ -133,11 +128,6 @@
             */
             inline const std::string& getInventoryRepresentation(void) const { return this->inventoryRepresentation_; } // tolua_export
-            /**
-            @brief Get the Pickupable represented by this PickupRepresentation.
-            @param index The index.
-            @return Returns (for index = 0) a pointer to the Pickupable. For index > 0 it returns NULL.
-            */
-            inline const Pickupable* getPickup(unsigned int index) const
-                { if(index == 0) return this->pickup_; return NULL; }
+
+            virtual void changedName();
 
             StaticEntity* createSpawnerRepresentation(PickupSpawner* spawner); //!< Create a spawnerRepresentation for a specific PickupSpawner.
@@ -168,6 +158,6 @@
             @param representation A pointer to the StaticEntity that is the spawnerRepresentation of this PickupRepresentation.
             */
-            inline void setSpawnerRepresentation(StaticEntity* representation)
-                { this->spawnerRepresentation_ = representation; }
+            void setSpawnerRepresentation(StaticEntity* representation);
+
             /**
             @brief Set the image representing the pickup in the PickupInventory.
@@ -176,10 +166,4 @@
             inline void setInventoryRepresentation(const std::string& image)
                 { this->inventoryRepresentation_ = image; }
-            /**
-            @brief Set the Pickupable that is represented by this PickupRepresentation.
-            @param pickup A pointer to the Pickupable.
-            */
-            inline void setPickup(Pickupable* pickup)
-                { this->pickup_ = pickup; }
 
         private:
@@ -195,6 +179,4 @@
             std::string inventoryRepresentation_; //!< The name of an image representing the pickup in the PickupInventory.
 
-            Pickupable* pickup_; //!< The Pickupable that is represented by this PickupRepresentation.
-
     }; // tolua_export
 
Index: code/branches/presentation2012merge/src/modules/pickup/PickupSpawner.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/PickupSpawner.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/PickupSpawner.cc	(revision 9318)
@@ -95,5 +95,5 @@
         else
         {
-            PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(this->pickup_->getPickupIdentifier());
+            PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(this->pickup_->getRepresentationName());
             this->attach(representation->createSpawnerRepresentation(this));
             this->setActive(true);
@@ -149,5 +149,5 @@
         else
         {
-            PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(this->pickup_->getPickupIdentifier());
+            PickupRepresentation* representation = PickupManager::getInstance().getRepresentation(this->pickup_->getRepresentationName());
             this->attach(representation->createSpawnerRepresentation(this));
             this->setActive(true);
Index: code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.cc	(revision 9318)
@@ -38,5 +38,4 @@
 #include "core/XMLPort.h"
 
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/SpaceShip.h"
 
@@ -78,14 +77,4 @@
     /**
     @brief
-        Initializes the PickupIdentifier of this pickup.
-    */
-    void DamageBoostPickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("duration", this->getDuration());
-        this->pickupIdentifier_->addParameter("damageMultiplier", this->getDamageMultiplier());
-    }
-
-    /**
-    @brief
         Method for creating a DamageBoostPickup object through XML.
     */
@@ -96,6 +85,4 @@
         XMLPortParam(DamageBoostPickup, "duration", setDuration, getDuration, xmlelement, mode);
         XMLPortParam(DamageBoostPickup, "damageMultiplier", setDamageMultiplier, getDamageMultiplier, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -196,5 +183,4 @@
         pickup->setDuration(this->getDuration());
         pickup->setDamageMultiplier(this->getDamageMultiplier());
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/DamageBoostPickup.h	(revision 9318)
@@ -79,5 +79,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
             void setDamageMultiplier(float damageMultiplier); //!< Sets the DamageMultiplier according to the XML.
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/DronePickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/DronePickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/DronePickup.cc	(revision 9318)
@@ -39,5 +39,4 @@
 
 #include "controllers/DroneController.h"
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/Drone.h"
 #include "worldentities/pawns/Pawn.h"
@@ -81,13 +80,4 @@
     /**
     @brief
-        Initializes the PickupIdentifier of this pickup.
-    */
-    void DronePickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("droneTemplate", this->getDroneTemplate());
-    }
-
-    /**
-    @brief
         Method for creating a DronePickup object through XML.
     */
@@ -96,6 +86,4 @@
         SUPER(DronePickup, XMLPort, xmlelement, mode);
         XMLPortParam(DronePickup, "droneTemplate", setDroneTemplate, getDroneTemplate, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -198,6 +186,4 @@
         DronePickup* pickup = orxonox_cast<DronePickup*>(item);
         pickup->setDroneTemplate(this->getDroneTemplate());
-
-        pickup->initializeIdentifier();
     }
 }
Index: code/branches/presentation2012merge/src/modules/pickup/items/DronePickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/DronePickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/DronePickup.h	(revision 9318)
@@ -75,6 +75,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
-
             void setDroneTemplate(const std::string& templatename); //!< Set the droneTemplate.
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/HealthPickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/HealthPickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/HealthPickup.cc	(revision 9318)
@@ -38,5 +38,4 @@
 #include "core/XMLPort.h"
 
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/Pawn.h"
 
@@ -87,15 +86,4 @@
     /**
     @brief
-        Initializes the PickupIdentifier of this pickup.
-    */
-    void HealthPickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("health", this->getHealth());
-        this->pickupIdentifier_->addParameter("healthType", this->getHealthType());
-        this->pickupIdentifier_->addParameter("healthRate", this->getHealthRate());
-    }
-
-    /**
-    @brief
         Method for creating a HealthPickup object through XML.
     */
@@ -110,6 +98,4 @@
         if(!this->isContinuous())
             this->setHealthRate(0.0f); // TODO: this logic should be inside tick(), not in XMLPort
-
-        this->initializeIdentifier();
     }
 
@@ -277,6 +263,4 @@
         pickup->setHealthRate(this->getHealthRate());
         pickup->setHealthType(this->getHealthType());
-
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/HealthPickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/HealthPickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/HealthPickup.h	(revision 9318)
@@ -121,6 +121,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
-
             void setHealth(float health); //!< Sets the health.
             void setHealthRate(float speed); //!< Set the rate at which health is transferred if the pickup is continuous.
Index: code/branches/presentation2012merge/src/modules/pickup/items/InvisiblePickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/InvisiblePickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/InvisiblePickup.cc	(revision 9318)
@@ -40,5 +40,4 @@
 #include "core/XMLPort.h"
 
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/Pawn.h"
 
@@ -79,13 +78,4 @@
     /**
     @brief
-        Initializes the PickupIdentifier of this pickup.
-    */
-    void InvisiblePickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("duration", this->getDuration());
-    }
-
-    /**
-    @brief
         Method for creating a HealthPickup object through XML.
     */
@@ -94,6 +84,4 @@
         SUPER(InvisiblePickup, XMLPort, xmlelement, mode);
         XMLPortParam(InvisiblePickup, "duration", setDuration, getDuration, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -157,5 +145,4 @@
         InvisiblePickup* pickup = orxonox_cast<InvisiblePickup*>(item);
         pickup->setDuration(this->getDuration());
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/InvisiblePickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/InvisiblePickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/InvisiblePickup.h	(revision 9318)
@@ -72,5 +72,5 @@
             InvisiblePickup(BaseObject* creator); //!< Constructor.
             virtual ~InvisiblePickup(); //!< Destructor.
-            
+
             virtual void XMLPort(Element& xmlelement, orxonox::XMLPort::Mode mode); //!< Method for creating a HealthPickup object through XML.
             virtual void changedUsed(void); //!< Is called when the pickup has transited from used to unused or the other way around.
@@ -91,6 +91,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
-
             bool setInvisible(bool invisibility); //!< Set the Pawn to be invisible or visible again.
             void setDuration(float duration); //!< Sets the time the InvisibilityPickup will last.
Index: code/branches/presentation2012merge/src/modules/pickup/items/MetaPickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/MetaPickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/MetaPickup.cc	(revision 9318)
@@ -36,5 +36,4 @@
 
 #include "interfaces/PickupCarrier.h"
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/Pawn.h"
 
@@ -86,13 +85,4 @@
     /**
     @brief
-        Helper method to initialize the PickupIdentifier.
-    */
-    void MetaPickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("metaType", this->getMetaType());
-    }
-
-    /**
-    @brief
         Method for creating a MetaPickup object through XML.
     */
@@ -102,6 +92,4 @@
 
         XMLPortParam(MetaPickup, "metaType", setMetaTypeAsString, getMetaTypeAsString, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -172,6 +160,4 @@
         MetaPickup* pickup = orxonox_cast<MetaPickup*>(item);
         pickup->setMetaType(this->getMetaType());
-
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/MetaPickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/MetaPickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/MetaPickup.h	(revision 9318)
@@ -106,6 +106,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
-
             /**
             @brief Set the meta type of the MetaPickup.
Index: code/branches/presentation2012merge/src/modules/pickup/items/ShieldPickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/ShieldPickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/ShieldPickup.cc	(revision 9318)
@@ -38,5 +38,4 @@
 #include "core/XMLPort.h"
 
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/Pawn.h"
 
@@ -80,15 +79,4 @@
     /**
     @brief
-        Initializes the PickupIdentifier of this pickup.
-    */
-    void ShieldPickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("duration", this->getDuration());
-        this->pickupIdentifier_->addParameter("ShieldHealth", this->getShieldHealth());
-        this->pickupIdentifier_->addParameter("ShieldAbsorption", this->getShieldAbsorption());
-    }
-
-    /**
-    @brief
         Method for creating a ShieldPickup object through XML.
     */
@@ -100,6 +88,4 @@
         XMLPortParam(ShieldPickup, "shieldabsorption", setShieldAbsorption, getShieldAbsorption, xmlelement, mode);
         XMLPortParam(ShieldPickup, "duration", setDuration, getDuration, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -188,5 +174,4 @@
         pickup->setShieldAbsorption(this->getShieldAbsorption());
         pickup->setShieldHealth(this->getShieldHealth());
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/ShieldPickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/ShieldPickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/ShieldPickup.h	(revision 9318)
@@ -104,5 +104,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
             void pickupTimerCallback(void); //!< Helper method. Is called by the Timer as soon as it expires.
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/ShrinkPickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/ShrinkPickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/ShrinkPickup.cc	(revision 9318)
@@ -40,5 +40,4 @@
 #include "core/XMLPort.h"
 
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/Pawn.h"
 
@@ -81,11 +80,4 @@
     }
 
-    void ShrinkPickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("shrinkFactor", this->getShrinkFactor());
-        this->pickupIdentifier_->addParameter("duration", this->getDuration());
-        this->pickupIdentifier_->addParameter("shrinkDuration", this->getShrinkDuration());
-    }
-
    /**
     @brief
@@ -99,6 +91,4 @@
         XMLPortParam(ShrinkPickup, "duration", setDuration, getDuration, xmlelement, mode);
         XMLPortParam(ShrinkPickup, "shrinkDuration", setShrinkDuration, getShrinkDuration, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -321,6 +311,4 @@
         pickup->setDuration(this->getDuration());
         pickup->setShrinkDuration(this->getShrinkDuration());
-
-        pickup->initializeIdentifier();
     }
 }
Index: code/branches/presentation2012merge/src/modules/pickup/items/ShrinkPickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/ShrinkPickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/ShrinkPickup.h	(revision 9318)
@@ -119,7 +119,4 @@
                 { if(speed <= 0.0f) { orxout(internal_warning, context::pickups) << "Invalid shrink duration in ShrinkPickup. Ignoring.." << endl; return; } this->shrinkDuration_ = speed; }
 
-        protected:
-            void initializeIdentifier(void);
-
         private:
             void initialize(void);
@@ -135,5 +132,5 @@
             float currentFactor_;       //!< The shrink factor that is currently applied.
             float timeRemainig_;        //!< The remaining shrink time.
-            
+
             Pawn* carrierToPawnHelper(void);
             Timer durationTimer_;
Index: code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.cc
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.cc	(revision 9318)
@@ -38,5 +38,4 @@
 #include "core/XMLPort.h"
 
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/SpaceShip.h"
 
@@ -80,15 +79,4 @@
     /**
     @brief
-        Initializes the PickupIdentifier of this pickup.
-    */
-    void SpeedPickup::initializeIdentifier(void)
-    {
-        this->pickupIdentifier_->addParameter("duration", this->getDuration());
-        this->pickupIdentifier_->addParameter("speedAdd", this->getSpeedAdd());
-        this->pickupIdentifier_->addParameter("speedMultiply", this->getSpeedMultiply());
-    }
-
-    /**
-    @brief
         Method for creating a SpeedPickup object through XML.
     */
@@ -100,6 +88,4 @@
         XMLPortParam(SpeedPickup, "speedAdd", setSpeedAdd, getSpeedAdd, xmlelement, mode);
         XMLPortParam(SpeedPickup, "speedMultiply", setSpeedMultiply, getSpeedMultiply, xmlelement, mode);
-
-        this->initializeIdentifier();
     }
 
@@ -189,6 +175,4 @@
         pickup->setSpeedAdd(this->getSpeedAdd());
         pickup->setSpeedMultiply(this->getSpeedMultiply());
-
-        pickup->initializeIdentifier();
     }
 
Index: code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.h
===================================================================
--- code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.h	(revision 9316)
+++ code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.h	(revision 9318)
@@ -103,5 +103,4 @@
 
         protected:
-            void initializeIdentifier(void); //!< Initializes the PickupIdentifier of this pickup.
             void pickupTimerCallback(void); //!< Function that gets called when timer ends.
 
Index: code/branches/presentation2012merge/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/presentation2012merge/src/orxonox/CMakeLists.txt	(revision 9316)
+++ code/branches/presentation2012merge/src/orxonox/CMakeLists.txt	(revision 9318)
@@ -50,5 +50,4 @@
 ADD_SUBDIRECTORY(items)
 ADD_SUBDIRECTORY(overlays)
-ADD_SUBDIRECTORY(pickup)
 ADD_SUBDIRECTORY(sound)
 ADD_SUBDIRECTORY(weaponsystem)
Index: code/branches/presentation2012merge/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/presentation2012merge/src/orxonox/OrxonoxPrereqs.h	(revision 9316)
+++ code/branches/presentation2012merge/src/orxonox/OrxonoxPrereqs.h	(revision 9318)
@@ -151,7 +151,4 @@
     class OrxonoxOverlay;
     class OverlayGroup;
-
-    // pickup
-    class PickupIdentifier;
 
     //sound
Index: code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.cc
===================================================================
--- code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.cc	(revision 9316)
+++ code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.cc	(revision 9318)
@@ -39,5 +39,4 @@
 
 #include "infos/PlayerInfo.h"
-#include "pickup/PickupIdentifier.h"
 #include "worldentities/pawns/Pawn.h"
 
@@ -52,5 +51,5 @@
         Constructor. Registers the objects and initializes its member variables.
     */
-    Pickupable::Pickupable() : pickupIdentifier_(NULL), used_(false), pickedUp_(false)
+    Pickupable::Pickupable() : used_(false), pickedUp_(false)
     {
         RegisterRootObject(Pickupable);
@@ -58,5 +57,4 @@
         this->carrier_ = NULL;
 
-        this->pickupIdentifier_ = new PickupIdentifier(this);
         this->beingDestroyed_ = false;
         this->enabled_ = true;
@@ -69,9 +67,4 @@
     Pickupable::~Pickupable()
     {
-        if(this->pickupIdentifier_ != NULL)
-        {
-            orxout(verbose, context::pickups) << "Pickupable (&" << this << ") destroyed." << endl;
-            this->pickupIdentifier_->destroy();
-        }
     }
 
Index: code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.h
===================================================================
--- code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.h	(revision 9316)
+++ code/branches/presentation2012merge/src/orxonox/interfaces/Pickupable.h	(revision 9318)
@@ -53,6 +53,4 @@
         Pickups (@ref orxonox::Pickupable "Pickupables") are objects that (quite unsurprisingly) can be picked up. Additionally they can be used and unused (transition from used to not used), and also dropped.
 
-        A class of Pickups can incorporate many different types of pickups (see @ref orxonox::PickupIdentifier "PickupIdentifier"), each type is uniquely defined by a @ref orxonox::PickupIdentifier "PickupIdentifier". Each pickup has such an identifier identiying its type. This means that two pickups of the same type have identifiers which are equal.
-
     @author
         Damian 'Mozork' Frick
@@ -70,4 +68,7 @@
             virtual ~Pickupable(); //!< Default destructor.
 
+            //! @brief Returns the representation name which refers to the name of the PickupRepresentation that is used to represent this pickup.
+            virtual const std::string& getRepresentationName() const = 0;
+
             /**
             @brief Get whether the Pickupable is currently in use or not.
@@ -144,11 +145,4 @@
             virtual void clone(OrxonoxClass*& item) {}
 
-            /**
-            @brief Get the PickupIdentifier of this Pickupable.
-            @return Returns a pointer to the PickupIdentifier of this Pickupable.
-            */
-            virtual const PickupIdentifier* getPickupIdentifier(void) const
-                { return this->pickupIdentifier_; }
-
             bool setUsed(bool used); //!< Sets the Pickupable to used or unused, depending on the input.
             bool setPickedUp(bool pickedUp); //!< Helper method to set the Pickupable to either picked up or not picked up.
@@ -158,9 +152,4 @@
 
         protected:
-            /**
-            @brief Helper method to initialize the PickupIdentifier.
-            */
-            void initializeIdentifier(void) {}
-
             virtual void preDestroy(void); //!< A method that is called by OrxonoxClass::destroy() before the object is actually destroyed.
             virtual void destroyPickup(void); //!< Destroys a Pickupable.
@@ -187,6 +176,4 @@
             */
             virtual bool createSpawner(void) = 0;
-
-            PickupIdentifier* pickupIdentifier_; //!< The PickupIdentifier of this Pickupable.
 
         private:
