Index: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc	(revision 11325)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc	(revision 11336)
@@ -53,5 +53,5 @@
         overlayElement_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", name ));
 
-        overlayElement_->setDimensions(0.075f,0.1f);
+        overlayElement_->setDimensions(0.075f,0.08f);
         
     }
@@ -67,5 +67,4 @@
     void HUDPickupItem::initializeMaterial(const std::string& s, float x, float y)
     {
-        orxout() << "material name is: " << s << endl;
         overlayElement_->setMaterialName(s);
         overlayElement_->setPosition(x, y);
@@ -79,15 +78,6 @@
         assert(overlayElement_);
         assert(this->background_);
-        // if(p->isBeingDestroyed()) //if the pickup is being destroyed, we do nothing
-        // {
-        //     orxout() << "now i didnt repaint" << endl;
-        //     return;
-        // } 
-        orxout() << "name overlay element: " << overlayElement_->getName() << endl;
-        // orxout() << this << " has called hide" << endl;
         overlayElement_->hide();
         this->background_->removeChild(overlayElement_->getName());
-        // this->background_->_update();
-        // orxout() << "after the call the element is visible: " << overlayElement_->isVisible() << endl;
     }
 }
Index: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h	(revision 11325)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h	(revision 11336)
@@ -26,27 +26,9 @@
         Ogre::PanelOverlayElement* overlayElement_;
         virtual ~HUDPickupItem();
-
-        // virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
-        // virtual void tick(float dt) override;
-        // virtual void changedOwner() override;
-        // virtual void changedOverlayGroup() override;
-        // virtual void changedVisibility() override;
-        // virtual void changedName() override;
-        // virtual void positionChanged() override;
-        // virtual void sizeChanged() override;
-
-        // void setPickup(Pickup* pickup);  
+        
         void initializeMaterial(const std::string& s, float x, float y);  
         void hideMe(Pickupable* p, bool repaint); 
 
-    private:
-        // void createHUDChilds();
-        // void positionHUDChilds();
-        // void destroyHUDChilds();
-        // void updateWeaponModeList();
-        // void updateSize();
-        // void updatePosition();
-
-        
+    private:        
         WeakPtr<Pawn> owner_;
         WeakPtr<Pickup> pickup_;
Index: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc	(revision 11325)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc	(revision 11336)
@@ -62,23 +62,22 @@
     }
 
-    void HUDPickupSystem::updatePickupList(std::vector<Pickupable*> picks)
+    void HUDPickupSystem::updatePickupList(std::vector<Pickupable*> picks, std::map<Pickupable*, uint32_t> indexes_)
     {
-        int i=0;
-        const float offsetX = 0.335f;
-        float offsetY = 0.77f;
-        const float x = 0.1f;
-
-        orxout() << "size: " << picks.size() << endl;
+        int i =0;
+        const float offsetX = 0.345f;
+        float offsetY = 0.82f;
+        const float x = 0.102f;
 
         if(picks.size()>0)
         {
-
             for(Pickupable* p : picks)
             {
-                // orxout() << "actual pick is: " << p << endl;
-                if(i%5==0)
+                i = indexes_.find(p)->second;
+                offsetY = 0.82f;
+
+                if(i>=5)
                 {
-                    offsetY+=0.04f;
-                    i=0;
+                    offsetY+=0.075f;
+                    i-=5;
                 }   
                 if(this->picks.count(p)==0)
@@ -86,11 +85,8 @@
                     HUDPickupItem* item = new HUDPickupItem(this->getContext());
                     item->initializeMaterial(this->getIcon(((Pickup*)p)->getRepresentationName()), offsetX+i*x, offsetY);
-                    orxout() << ((Pickup*)p)->getRepresentationName() << endl;
                 
                     item->setOverlayGroup(this->getOverlayGroup());
                     this->picks[p] = item;
                 }
-                
-                ++i;
             }
         }
@@ -105,12 +101,9 @@
         assert(pickup);
         HUDPickupItem* item = this->picks.find(pickup)->second;
-        orxout() << "removePickup: pickup= " << pickup << " item= " << item << endl;
+        orxout(internal_info, context::pickups) << "removePickup: pickup= " << pickup << " item= " << item << endl;
         assert(item);
-        // item->setOverlayGroup(nullptr);
         item->hideMe(pickup, repaint);
         assert(overlayElement_);
-        // overlayElement_->_update();
         assert(this->background_);
-        // this->background_->_update();
         this->picks.erase(pickup);
     }
@@ -124,5 +117,5 @@
     {
         if(repName.find("invisible", 0)!=std::string::npos) return "Eye";
-        else if(repName.find("tri", 0)!=std::string::npos) return "Asterix";
+        else if(repName.find("tri", 0)!=std::string::npos) return "Asterisk";
         else if(repName.find("health", 0)!=std::string::npos || repName.find("Health", 0)!=std::string::npos) return "Cross";
         else if(repName.find("shield", 0)!=std::string::npos) return "Shield";
@@ -132,5 +125,4 @@
         else if(repName.find("speed", 0)!=std::string::npos) return "3arrowsup";
         else if(repName.find("drone", 0)!=std::string::npos) return "Damage";
-        //        else if(repName.find("xxxxxxx", 0)!=std::string::npos) return "Splash";
         else return "Unknown";
     }
Index: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h	(revision 11325)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h	(revision 11336)
@@ -56,16 +56,9 @@
         virtual ~HUDPickupSystem();
 
-        // virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
-        // virtual void changedOwner() override;
-        // virtual void changedOverlayGroup() override;
-        // virtual void changedVisibility() override;
-        // virtual void changedName() override;
-        // virtual void positionChanged() override;
-        // virtual void sizeChanged() override;
-        void updatePickupList(std::vector<Pickupable*> picks);  
+        void updatePickupList(std::vector<Pickupable*> picks, std::map<Pickupable*, uint32_t> indexes_);  
         void createPickupList();  
         void removePickup(Pickupable* pickup);
 
-        bool repaint=true;
+        bool repaint=true; //if we shouldnt repaint, set this to false
 
     private:
Index: code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc
===================================================================
--- code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc	(revision 11325)
+++ code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc	(revision 11336)
@@ -266,10 +266,7 @@
         assert(pickup);
 
-
         for (HUDPickupSystem* hud : ObjectList<HUDPickupSystem>())
             pickupSystem = hud;
         
-        assert(pickupSystem); //pickupSystem HAS to be there!
-
         if(!GameMode::isMaster()) // If this is neither standalone nor the server.
             return;
@@ -300,9 +297,8 @@
             this->pickups_[index] = pickup;
 
-            orxout() << "the pickup is: " << pickup << endl;
-
             this->picks.push_back(pickup);
 
-            pickupSystem->updatePickupList(picks);
+            if(pickupSystem)
+                pickupSystem->updatePickupList(picks, indexes_);
             
         }
@@ -319,5 +315,6 @@
             this->picks.erase(std::remove(this->picks.begin(), this->picks.end(), pickup), this->picks.end()); //remove pickup from vector
 
-            pickupSystem->removePickup(pickup);
+            if(pickupSystem)
+                pickupSystem->removePickup(pickup);
         }
 
@@ -349,8 +346,7 @@
     //This function is called by the command line or by the key binding
     //it uses or unuses the pickup, depending on its current state
+    //or drops it (depends what you comment/uncomment)
     void PickupManager::useUnusePickup(uint32_t index) 
     {
-        orxout() << "Hello there I was here " << index << endl;
-
         PickupManager& manager = PickupManager::getInstance();
 
@@ -360,11 +356,11 @@
         if(pickup==nullptr)
         {
-            orxout() << "The pickup does not exist." << endl;
             return;                       //pickup does not exist
         }
 
-        orxout() << "The pickup is being used: " << pickup->isUsed() << endl;
-
+        //if the pickup should be dropped upon key press
         manager.dropPickup(index);
+
+        //if the pickup should be used/unused upon key press
 
         // if(pickup->isUsed())
@@ -563,5 +559,5 @@
         }
         //all slots are full and we have to drop sth
-        orxout() << "everything was full and we have now dropped the first element" << endl;
+        orxout(internal_info, context::pickups) << "everything was full and we have now dropped the first element" << endl;
         this->dropPickup(0);
         return 0;
Index: code/branches/HUD_HS16/src/modules/pickup/PickupManager.h
===================================================================
--- code/branches/HUD_HS16/src/modules/pickup/PickupManager.h	(revision 11325)
+++ code/branches/HUD_HS16/src/modules/pickup/PickupManager.h	(revision 11336)
@@ -172,7 +172,4 @@
             void updateGUI(void); //!< Updates the PickupInventory GUI.
             uint32_t getPickupIndex(void); //!< Get a new index for a Pickupable.
-
-            void addKeyBindingForNewPickup(Pickupable* pickup, uint32_t index);
-            void removeKeyBindingForOldPickup(Pickupable* pickup, uint32_t index);
             
     }; // tolua_export
Index: code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.cc	(revision 11325)
+++ code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.cc	(revision 11336)
@@ -50,4 +50,5 @@
 #include "PlayerManager.h"
 #include "GSRoot.h"
+// #include "overlays/hud/HUDPickupSystem.h"
 
 namespace orxonox
@@ -126,4 +127,11 @@
             InputManager::getInstance().leaveState("game");
 
+        // HUDPickupSystem* pickupSystem;
+
+        // for (HUDPickupSystem* hud : ObjectList<HUDPickupSystem>())
+        //     pickupSystem = hud;
+
+        // pickupSystem->repaint=false;
+
         // disconnect all HumanPlayers
         PlayerManager::getInstance().disconnectAllClients();
Index: code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.h	(revision 11325)
+++ code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.h	(revision 11336)
@@ -31,4 +31,5 @@
 
 #include "OrxonoxPrereqs.h"
+// #include "overlays/OverlaysPrereqs.h"
 
 #include <string>
