Index: branches/powerups/src/defs/class_id.h
===================================================================
--- branches/powerups/src/defs/class_id.h	(revision 5870)
+++ branches/powerups/src/defs/class_id.h	(revision 5871)
@@ -74,4 +74,5 @@
 
 
+
   // subsuper-classes
   CL_MASK_SUBSUPER_CLASS        =    0x00fff000,
@@ -84,5 +85,5 @@
   CL_PROJECTILE                 =    0x00110000,
   CL_WEAPON                     =    0x00120000,
-
+  CL_EXTENDABLE                 =    0x00140000,
   // subsuper-classes derivations taken : 1, 5, a, b, c.     << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
 
Index: branches/powerups/src/lib/sound/sound_engine.cc
===================================================================
--- branches/powerups/src/lib/sound/sound_engine.cc	(revision 5870)
+++ branches/powerups/src/lib/sound/sound_engine.cc	(revision 5871)
@@ -281,5 +281,5 @@
 
   // INITIALIZING THE DEVICE:
-  ALchar deviceName[] =
+  ALubyte deviceName[] =
 #ifdef __WIN32__
       "native";
Index: branches/powerups/src/world_entities/extendable.cc
===================================================================
--- branches/powerups/src/world_entities/extendable.cc	(revision 5871)
+++ branches/powerups/src/world_entities/extendable.cc	(revision 5871)
@@ -0,0 +1,50 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   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, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "proto_class.h"
+
+using namespace std;
+
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+ProtoClass::ProtoClass ()
+{
+   this->setClassID(CL_PROTO_ID, "ProtoClass");
+
+   /* If you make a new class, what is most probably the case when you write this file
+      don't forget to:
+       1. Add the new file new_class.cc to the ./src/Makefile.am
+       2. Add the class identifier to ./src/class_id.h eg. CL_NEW_CLASS
+
+      Advanced Topics:
+      - if you want to let your object be managed via the ObjectManager make sure to read
+        the object_manager.h header comments. You will use this most certanly only if you
+        make many objects of your class, like a weapon bullet.
+   */
+}
+
+
+/**
+ * standard deconstructor
+*/
+ProtoClass::~ProtoClass ()
+{
+  // delete what has to be deleted here
+}
Index: branches/powerups/src/world_entities/extendable.h
===================================================================
--- branches/powerups/src/world_entities/extendable.h	(revision 5871)
+++ branches/powerups/src/world_entities/extendable.h	(revision 5871)
@@ -0,0 +1,25 @@
+/*!
+ * @file proto_class.h
+ * @brief Definition of ...
+*/
+
+#ifndef _EXTENDABLE_H
+#define _EXTENDABLE_H
+
+// FORWARD DECLARATION
+
+
+
+//! A class for ...
+class Extendable : public BaseObject {
+
+ public:
+//   Extendable();
+//   virtual ~Extendable();
+  virtual bool pickup(PowerUp* powerUp) { return false; }
+
+ private:
+
+};
+
+#endif /* _EXTENDABLE_H */
Index: branches/powerups/src/world_entities/power_ups/power_up.cc
===================================================================
--- branches/powerups/src/world_entities/power_ups/power_up.cc	(revision 5870)
+++ branches/powerups/src/world_entities/power_ups/power_up.cc	(revision 5871)
@@ -18,4 +18,5 @@
 
 #include "power_up.h"
+#include "extendable.h"
 
 
@@ -24,19 +25,37 @@
 
 
-PowerUp::PowerUp ()
+PowerUp::PowerUp (PowerUpType type)
 {
-  this->setClassID(CL_POWER_UP, "PowerUp");
-
+  this->init();
 }
 
+PowerUp::PowerUp(const TiXmlElement* root)
+{
+  this->init();
+  this->loadParams(root);
+}
 
+void PowerUp::init() {
+  this->setClassID(CL_POWER_UP, "PowerUp");
+  this->type = type;
+}
 
 PowerUp::~PowerUp () {}
 
 
-void PowerUp::loadParam(const TiXmlElement* root)
+void PowerUp::loadParams(const TiXmlElement* root)
 {
   static_cast<WorldEntity*>(this)->loadParams(root);
-
 }
 
+
+void PowerUp::collidesWith (WorldEntity* entity, const Vector& location)
+{
+ if(entity->isA(CL_EXTENDABLE))
+  {
+    if(dynamic_cast<Extendable*>(entity)->pickup(this))
+    {
+      this->setVisibiliy(false);
+    }
+  }
+}
Index: branches/powerups/src/world_entities/power_ups/power_up.h
===================================================================
--- branches/powerups/src/world_entities/power_ups/power_up.h	(revision 5870)
+++ branches/powerups/src/world_entities/power_ups/power_up.h	(revision 5871)
@@ -9,10 +9,23 @@
 #include "world_entity.h"
 
+typedef enum PowerUpType
+{
+  PWR_UP_NULL,
+  PWR_UP_SHIELD,
+  PWR_UP_WEAPON,
+} PowerUpType;
+
 class PowerUp : public WorldEntity {
 
- public:
-  PowerUp ();
+public:
+  PowerUp(PowerUpType type = PWR_UP_NULL);
+  PowerUp(const TiXmlElement* root);
   virtual ~PowerUp ();
-  void loadParam(const TiXmlElement* root);
+  void loadParams(const TiXmlElement* root);
+  void collidesWith (WorldEntity* entity, const Vector& location);
+
+private:
+  PowerUpType type;
+  void init();
 };
 
