Index: branches/presentation/src/story_entities/game_world.cc
===================================================================
--- branches/presentation/src/story_entities/game_world.cc	(revision 9178)
+++ branches/presentation/src/story_entities/game_world.cc	(revision 9179)
@@ -62,9 +62,8 @@
 #include "game_rules.h"
 
-using namespace std;
-
 #include "script_class.h"
 CREATE_SCRIPTABLE_CLASS(GameWorld, CL_GAME_WORLD,
                         addMethod("setPlaymode", ExecutorLua1<GameWorld,const std::string&>(&GameWorld::setPlaymode))
+                        ->addMethod("setSoundtrack", ExecutorLua1<GameWorld, const std::string&>(&GameWorld::setSoundtrack))
                        );
 
@@ -158,6 +157,6 @@
 
   PRINTF(3)("> Loading world: '%s'\n", getLoadFile().c_str());
-//  TiXmlElement* element;
-//  GameLoader* loader = GameLoader::getInstance();
+  //  TiXmlElement* element;
+  //  GameLoader* loader = GameLoader::getInstance();
 
   if( getLoadFile().empty())
@@ -233,4 +232,14 @@
 
 
+void GameWorld::setSoundtrack(const std::string& soundTrack)
+{
+  if (this->dataTank != NULL)
+  {
+    this->dataTank->setSoundTrack(soundTrack);
+    this->dataTank->music->play();
+  }
+}
+
+
 /**
  *  starts the GameWorld
@@ -312,5 +321,5 @@
     /* update the state */
     //this->update (); /// LESS REDUNDANCY.
-//      PNode::getNullParent()->updateNode(this->dtS);
+    //      PNode::getNullParent()->updateNode(this->dtS);
     PNode::getNullParent()->updateNode(this->dtS);
 
@@ -460,5 +469,11 @@
       this->dataTank->objectManager->getObjectList(OM_GROUP_00_PROJ));
   CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
-      this->dataTank->objectManager->getObjectList(OM_GROUP_01));
+  this->dataTank->objectManager->getObjectList(OM_GROUP_01));
+
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_01),
+  this->dataTank->objectManager->getObjectList(OM_GROUP_02));
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_02),
+  this->dataTank->objectManager->getObjectList(OM_GROUP_01_PROJ));
+
 
   CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
@@ -536,7 +551,7 @@
 void GameWorld::renderPassReflection()
 {
-    // clear buffer
+  // clear buffer
   glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
-//  glLoadIdentity();
+  //  glLoadIdentity();
 
   const std::list<BaseObject*>* reflectedWaters;
@@ -562,6 +577,6 @@
       // draw everything to be included in the reflection
       this->drawEntityList(State::getObjectManager()->getReflectionList());
-//       for (unsigned int i = 0; i < this->dataTank->drawLists.size(); ++i)
-//         this->drawEntityList(State::getObjectManager()->getObjectList(this->dataTank->drawLists[i]));
+      //       for (unsigned int i = 0; i < this->dataTank->drawLists.size(); ++i)
+      //         this->drawEntityList(State::getObjectManager()->getObjectList(this->dataTank->drawLists[i]));
 
       // clean up from reflection rendering
@@ -578,5 +593,5 @@
 void GameWorld::renderPassRefraction()
 {
-    // clear buffer
+  // clear buffer
   glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
   //glLoadIdentity();
@@ -602,6 +617,6 @@
       // draw everything to be included in the reflection
       this->drawEntityList(State::getObjectManager()->getReflectionList());
-//       for (unsigned int i = 0; i < this->dataTank->drawLists.size(); ++i)
-//         this->drawEntityList(State::getObjectManager()->getObjectList(this->dataTank->drawLists[i]));
+      //       for (unsigned int i = 0; i < this->dataTank->drawLists.size(); ++i)
+      //         this->drawEntityList(State::getObjectManager()->getObjectList(this->dataTank->drawLists[i]));
 
       // clean up from reflection rendering
Index: branches/presentation/src/story_entities/game_world.h
===================================================================
--- branches/presentation/src/story_entities/game_world.h	(revision 9178)
+++ branches/presentation/src/story_entities/game_world.h	(revision 9179)
@@ -31,83 +31,85 @@
 class GameWorld : public StoryEntity
 {
-  public:
-    GameWorld ();
-    virtual ~GameWorld ();
+public:
+  GameWorld ();
+  virtual ~GameWorld ();
 
-    virtual void loadParams(const TiXmlElement* root);
+  virtual void loadParams(const TiXmlElement* root);
 
-    /* functions from story-entity */
-    virtual ErrorMessage init();
-    virtual ErrorMessage loadData();
-    virtual ErrorMessage unloadData();
+  /* functions from story-entity */
+  virtual ErrorMessage init();
+  virtual ErrorMessage loadData();
+  virtual ErrorMessage unloadData();
 
-    virtual bool start();
-    virtual bool stop();
-    virtual bool pause();
-    virtual bool resume();
-    virtual void run();
+  virtual bool start();
+  virtual bool stop();
+  virtual bool pause();
+  virtual bool resume();
+  virtual void run();
 
-    void setPlaymode(Playable::Playmode playmode);
-    void setPlaymode(const std::string& playmode);
-    /**  this returns the current game time @returns elapsed game time     */
-    inline double getGameTime() { return this->gameTime; }
-    /** sets the game speed @param speed speed of the Game */
-    inline void setSpeed(float speed) { this->speed = speed; };
-    /**  returns the track path of this world @returns the track path */
-
-    void togglePNodeVisibility();
-    void toggleBVVisibility(int level);
-
-    inline void setSky(WorldEntity* sky) { this->dataTank->sky = sky; }
+  void setPlaymode(Playable::Playmode playmode);
+  void setPlaymode(const std::string& playmode);
+  /**  this returns the current game time @returns elapsed game time     */
+  inline double getGameTime() { return this->gameTime; }
+  /** sets the game speed @param speed speed of the Game */
+  inline void setSpeed(float speed) { this->speed = speed; };
+  /**  returns the track path of this world @returns the track path */
 
 
-  protected:
-    /* world - running functions */
-    virtual void synchronize();
-    virtual void handleInput();
-    virtual void tick(ObjectManager::EntityList worldEntity, float dt);
-    virtual void tick();
-    virtual void update();
-    virtual void checkGameRules();
-    virtual void collisionDetection();
-    virtual void collisionReaction();
+  void setSoundtrack(const std::string& soundTrack);
+  void togglePNodeVisibility();
+  void toggleBVVisibility(int level);
 
-    void applyCameraSettings();
-    void drawEntityList(const ObjectManager::EntityList& drawList ) const;
-    virtual void renderPassReflection();
-    virtual void renderPassRefraction();
-    virtual void renderPassAll();
+  inline void setSky(WorldEntity* sky) { this->dataTank->sky = sky; }
 
 
-    virtual void display();
+protected:
+  /* world - running functions */
+  virtual void synchronize();
+  virtual void handleInput();
+  virtual void tick(ObjectManager::EntityList worldEntity, float dt);
+  virtual void tick();
+  virtual void update();
+  virtual void checkGameRules();
+  virtual void collisionDetection();
+  virtual void collisionReaction();
+
+  void applyCameraSettings();
+  void drawEntityList(const ObjectManager::EntityList& drawList ) const;
+  virtual void renderPassReflection();
+  virtual void renderPassRefraction();
+  virtual void renderPassAll();
 
 
-  private:
-    void displayLoadScreen();
-    void releaseLoadScreen();
+  virtual void display();
 
 
-  protected:
-    GameWorldData*      dataTank;                     //!< reference to the GameWorld Data Tank
-    TiXmlElement*       dataXML;                      //!< The XML-Element this World has been loaded with.
+private:
+  void displayLoadScreen();
+  void releaseLoadScreen();
 
-    bool                showPNodes;                   //!< if the PNodes should be visible.
-    bool                showBV;                       //!< if the Bounding Volumes should be visible.
-    int                 showBVLevel;                  //!< the depth level of the displayed bounding volumes
 
-    /* world timing */
-    double              lastFrame;                    //!< last time of frame (in MiliSeconds)
-    Uint32              cycle;                        //!< The cycle we are in (starts with 0 and rises with every frame)
-    float               dtS;                          //!< The time needed for caluculations in seconds
-    float               speed;                        //!< how fast the game flows
-    double              gameTime;                     //!< this is where the game time is saved
-    double              frameTimes[TICK_SMOOTH_VALUE];//!< The time used for the last TICK_SMOOTH_VALUE's frames.
+protected:
+  GameWorldData*      dataTank;                     //!< reference to the GameWorld Data Tank
+  TiXmlElement*       dataXML;                      //!< The XML-Element this World has been loaded with.
 
-    GameRules*          gameRules;                    //!< Pointer to the data structure containig the game rules
+  bool                showPNodes;                   //!< if the PNodes should be visible.
+  bool                showBV;                       //!< if the Bounding Volumes should be visible.
+  int                 showBVLevel;                  //!< the depth level of the displayed bounding volumes
 
-  private:
-    /* external modules interfaces */
-    ScriptManager       scriptManager;
-    OrxShell::Shell*    shell;
+  /* world timing */
+  double              lastFrame;                    //!< last time of frame (in MiliSeconds)
+  Uint32              cycle;                        //!< The cycle we are in (starts with 0 and rises with every frame)
+  float               dtS;                          //!< The time needed for caluculations in seconds
+  float               speed;                        //!< how fast the game flows
+  double              gameTime;                     //!< this is where the game time is saved
+  double              frameTimes[TICK_SMOOTH_VALUE];//!< The time used for the last TICK_SMOOTH_VALUE's frames.
+
+  GameRules*          gameRules;                    //!< Pointer to the data structure containig the game rules
+
+private:
+  /* external modules interfaces */
+  ScriptManager       scriptManager;
+  OrxShell::Shell*    shell;
 };
 
Index: branches/presentation/src/story_entities/game_world_data.cc
===================================================================
--- branches/presentation/src/story_entities/game_world_data.cc	(revision 9178)
+++ branches/presentation/src/story_entities/game_world_data.cc	(revision 9179)
@@ -249,12 +249,14 @@
   this->tickLists.push_back(OM_GROUP_01);
   this->tickLists.push_back(OM_GROUP_01_PROJ);
+  this->tickLists.push_back(OM_GROUP_02);
 
   this->drawLists.push_back(OM_ENVIRON_NOTICK);
   this->drawLists.push_back(OM_ENVIRON);
-  this->drawLists.push_back(OM_COMMON);
   this->drawLists.push_back(OM_GROUP_00);
   this->drawLists.push_back(OM_GROUP_00_PROJ);
   this->drawLists.push_back(OM_GROUP_01);
   this->drawLists.push_back(OM_GROUP_01_PROJ);
+  this->drawLists.push_back(OM_GROUP_02);
+  this->drawLists.push_back(OM_COMMON);
 
   /* init the pnode tree */
@@ -390,4 +392,5 @@
     std::string oggFile = ResourceManager::getFullName(name);
     this->music = new OrxSound::OggPlayer(oggFile);
+    this->music->debug();
     if (this->localPlayer != NULL)
       this->localPlayer->hud().notifyUser(std::string("Playing SoundTrack: ") + this->music->artist() + " - " + this->music->title());
Index: branches/presentation/src/util/hud.cc
===================================================================
--- branches/presentation/src/util/hud.cc	(revision 9178)
+++ branches/presentation/src/util/hud.cc	(revision 9179)
@@ -187,4 +187,5 @@
     this->_radar->setCenterNode(State::getPlayer()->getPlayable());
     this->_radar->addEntityList(&State::getObjectManager()->getObjectList((OM_LIST)(State::getPlayer()->getPlayable()->getOMListNumber()+1)), Color(.4, .4, 1.0));
+    this->_radar->addEntityList(&State::getObjectManager()->getObjectList(OM_GROUP_02), Color(1.0, .2, .2));
     this->_radar->setAbsCoor2D(0.8 * this->resX, 0.01 * this->resY);
     this->_radar->setWidgetSize(0.2 * this->resX, 0.2 * this->resY);
Index: branches/presentation/src/world_entities/npcs/attractor_mine.cc
===================================================================
--- branches/presentation/src/world_entities/npcs/attractor_mine.cc	(revision 9178)
+++ branches/presentation/src/world_entities/npcs/attractor_mine.cc	(revision 9179)
@@ -51,4 +51,6 @@
 {
   this->setClassID(CL_ATTRACTOR_MINE, "AttractorMine");
+
+  this->toList(OM_GROUP_02);
 
   if ((float)rand()/RAND_MAX > .5f)
Index: branches/presentation/src/world_entities/npcs/npc.cc
===================================================================
--- branches/presentation/src/world_entities/npcs/npc.cc	(revision 9178)
+++ branches/presentation/src/world_entities/npcs/npc.cc	(revision 9179)
@@ -19,7 +19,4 @@
 
 #include "npc.h"
-
-
-using namespace std;
 
 
