Index: code/branches/pickup4/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/pickup4/src/orxonox/CMakeLists.txt	(revision 6593)
+++ code/branches/pickup4/src/orxonox/CMakeLists.txt	(revision 6632)
@@ -58,4 +58,5 @@
     MoodManager.h
     controllers/HumanController.h
+    interfaces/PickupCarrier.h
     sound/SoundManager.h
   DEFINE_SYMBOL
Index: code/branches/pickup4/src/orxonox/interfaces/InterfaceCompilation.cc
===================================================================
--- code/branches/pickup4/src/orxonox/interfaces/InterfaceCompilation.cc	(revision 6593)
+++ code/branches/pickup4/src/orxonox/interfaces/InterfaceCompilation.cc	(revision 6632)
@@ -60,4 +60,5 @@
         RegisterRootObject(PickupCarrier);
         
+        this->setCarrierName("PickupCarrier");
     }
     
Index: code/branches/pickup4/src/orxonox/interfaces/PickupCarrier.h
===================================================================
--- code/branches/pickup4/src/orxonox/interfaces/PickupCarrier.h	(revision 6593)
+++ code/branches/pickup4/src/orxonox/interfaces/PickupCarrier.h	(revision 6632)
@@ -45,8 +45,9 @@
 #include "core/OrxonoxClass.h"
 
-namespace orxonox
-{
-
-    //! Pre-declarations.
+namespace orxonox // tolua_export
+{ // tolua_export
+
+    //! Forward-declarations.
+    class PickupManager;
     class Pickup;
     class HealthPickup;
@@ -59,9 +60,11 @@
         Damian 'Mozork' Frick
     */
-    class _OrxonoxExport PickupCarrier : virtual public OrxonoxClass
-    {
+    class _OrxonoxExport PickupCarrier  // tolua_export
+        : virtual public OrxonoxClass
+    { // tolua_export
         //! So that the different Pickupables have full access to their PickupCarrier.
+        friend class Pickupable;
+        friend class PickupManager;
         //! Friends. 
-        friend class Pickupable;
         friend class Pickup;
         friend class HealthPickup;
@@ -116,6 +119,6 @@
                     
                     //! Go recursively through all children to check whether they are a target.
-                    std::list<PickupCarrier*>* children = this->getCarrierChildren();
-                    for(std::list<PickupCarrier*>::const_iterator it = children->begin(); it != children->end(); it++)
+                    std::vector<PickupCarrier*>* children = this->getCarrierChildren();
+                    for(std::vector<PickupCarrier*>::const_iterator it = children->begin(); it != children->end(); it++)
                     {
                         if((*it)->isTarget(pickup))
@@ -143,6 +146,6 @@
                     
                     //! Go recursively through all children to check whether they are the target.
-                    std::list<PickupCarrier*>* children = this->getCarrierChildren();
-                    for(std::list<PickupCarrier*>::iterator it = children->begin(); it != children->end(); it++)
+                    std::vector<PickupCarrier*>* children = this->getCarrierChildren();
+                    for(std::vector<PickupCarrier*>::iterator it = children->begin(); it != children->end(); it++)
                     {
                         if(pickup->isTarget(*it))
@@ -162,4 +165,6 @@
             */
             virtual const Vector3& getCarrierPosition(void) = 0;
+            
+            const std::string& getCarrierName(void) { return this->carrierName_; } // tolua_export
             
         protected:        
@@ -170,5 +175,5 @@
             @return Returns a pointer to a list of all direct children. 
             */
-            virtual std::list<PickupCarrier*>* getCarrierChildren(void) = 0;
+            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) = 0;
             /**
             @brief Get the parent of this PickupSpawner
@@ -184,10 +189,46 @@
             std::set<Pickupable*>& getPickups(void)
                 { return this->pickups_; }
+                
+            void setCarrierName(const std::string& name)
+                { this->carrierName_ = name; }
         
         private:
             std::set<Pickupable*> pickups_; //!< The list of Pickupables carried by this PickupCarrier.
-            
-    };
-}
+            std::string carrierName_;
+            
+            unsigned int getNumCarrierChildren(void)
+                {
+                    std::vector<PickupCarrier*>* list = this->getCarrierChildren();
+                    unsigned int size = list->size();
+                    delete list;
+                    return size;
+                }
+            
+            PickupCarrier* getCarrierChild(unsigned int index)
+                {
+                    std::vector<PickupCarrier*>* list = this->getCarrierChildren();
+                    if(list->size() < index)
+                        return NULL;
+                    PickupCarrier* carrier = (*list)[index];
+                    delete list;
+                    return carrier;
+                }
+            
+            Pickupable* getPickup(unsigned int index)
+                {
+                    std::set<Pickupable*>::iterator it;
+                    for(it = this->pickups_.begin(); index != 0 && it != this->pickups_.end(); it++)
+                        index--;
+                    if(it == this->pickups_.end())
+                        return NULL;
+                    return *it;
+                }
+            
+            unsigned int getNumPickups(void)
+                { return this->pickups_.size(); }
+            
+            
+    }; // tolua_export
+} // tolua_export
 
 #endif /* _PickupCarrier_H__ */
Index: code/branches/pickup4/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/pickup4/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 6593)
+++ code/branches/pickup4/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 6632)
@@ -327,8 +327,15 @@
         {
             OrxonoxOverlay* overlay= it->second;
+            COUT(1) << "MUP" << std::endl;
             if(overlay->isVisible())
+            {
                 overlay->hide();
+                COUT(1) << "HIDE " << name << std::endl;
+            }
             else
+            {
                 overlay->show();
+                COUT(1) << "SHOW " << name << std::endl;
+            }
         }
     }
Index: code/branches/pickup4/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/branches/pickup4/src/orxonox/worldentities/pawns/Pawn.h	(revision 6593)
+++ code/branches/pickup4/src/orxonox/worldentities/pawns/Pawn.h	(revision 6632)
@@ -37,8 +37,9 @@
 #include "worldentities/ControllableEntity.h"
 
-namespace orxonox
-{
-    class _OrxonoxExport Pawn : public ControllableEntity, public RadarViewable, public PickupCarrier
-    {
+namespace orxonox // tolua_export
+{ // tolua_export
+    class _OrxonoxExport Pawn // tolua_export
+        : public ControllableEntity, public RadarViewable, public PickupCarrier
+    { // tolua_export
         friend class WeaponSystem;
 
@@ -132,6 +133,6 @@
             bool bAlive_;
 
-            virtual std::list<PickupCarrier*>* getCarrierChildren(void)
-                { return new std::list<PickupCarrier*>(); }
+            virtual std::vector<PickupCarrier*>* getCarrierChildren(void)
+                { return new std::vector<PickupCarrier*>(); }
             virtual PickupCarrier* getCarrierParent(void)
                 { return NULL; }
@@ -155,6 +156,6 @@
 
             Vector3 aimPosition_;
-    };
-}
+    }; // tolua_export
+} // tolua_export
 
 #endif /* _Pawn_H__ */
