Index: code/branches/sound/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/sound/src/orxonox/OrxonoxPrereqs.h	(revision 2968)
+++ code/branches/sound/src/orxonox/OrxonoxPrereqs.h	(revision 2980)
@@ -257,5 +257,9 @@
     class GSServer;
     class GSClient;
-    class GSGUI;
+    class GSGUI; 
+
+    //sound
+    class SoundBase;
+    class SoundManger;
 }
 
Index: code/branches/sound/src/orxonox/objects/Level.cc
===================================================================
--- code/branches/sound/src/orxonox/objects/Level.cc	(revision 2968)
+++ code/branches/sound/src/orxonox/objects/Level.cc	(revision 2980)
@@ -41,4 +41,5 @@
 #include "objects/gametypes/Gametype.h"
 #include "overlays/OverlayGroup.h"
+#include "sound/SoundBase.h"
 
 #include "util/Math.h"
@@ -57,6 +58,4 @@
         if (this->xmlfilename_.length() >= Core::getMediaPathString().length())
             this->xmlfilename_ = this->xmlfilename_.substr(Core::getMediaPathString().length());
-            
-        this->sndmgr_ = new SoundManager();
     }
 
@@ -70,9 +69,7 @@
             if (this->xmlfile_)
                 Loader::unload(this->xmlfile_);
-            
+
             if(this->ambientsound_ != NULL)
                 delete this->ambientsound_;
-            
-            delete this->sndmgr_;
         }
     }
@@ -84,5 +81,5 @@
         XMLPortParam(Level, "description", setDescription, getDescription, xmlelement, mode);
         XMLPortParam(Level, "gametype", setGametypeString, getGametypeString, xmlelement, mode).defaultValues("Gametype");
-        
+
         XMLPortParamLoadOnly(Level, "ambientsound", loadAmbientSound, xmlelement, mode);
 
@@ -165,5 +162,4 @@
             {
                 this->ambientsound_ = new SoundBase();
-                this->sndmgr_->addSound(this->ambientsound_);
             }
 
Index: code/branches/sound/src/orxonox/objects/Level.h
===================================================================
--- code/branches/sound/src/orxonox/objects/Level.h	(revision 2968)
+++ code/branches/sound/src/orxonox/objects/Level.h	(revision 2980)
@@ -33,6 +33,4 @@
 
 #include "network/synchronisable/Synchronisable.h"
-#include "sound/SoundBase.h"
-#include "sound/SoundManager.h"
 #include "core/BaseObject.h"
 
@@ -73,5 +71,5 @@
             XMLFile*               xmlfile_;
             std::list<BaseObject*> objects_;
-            SoundManager*          sndmgr_;
+
             SoundBase*             ambientsound_;
     };
Index: code/branches/sound/src/orxonox/objects/items/Engine.cc
===================================================================
--- code/branches/sound/src/orxonox/objects/items/Engine.cc	(revision 2968)
+++ code/branches/sound/src/orxonox/objects/items/Engine.cc	(revision 2980)
@@ -36,4 +36,5 @@
 #include "objects/worldentities/pawns/SpaceShip.h"
 #include "tools/Shader.h"
+#include "sound/SoundBase.h"
 
 namespace orxonox
@@ -95,4 +96,6 @@
         XMLPortParam(Engine, "accelerationleftright", setAccelerationLeftRight, setAccelerationLeftRight, xmlelement, mode);
         XMLPortParam(Engine, "accelerationupdown",    setAccelerationUpDown,    setAccelerationUpDown,    xmlelement, mode);
+
+        XMLPortParamLoadOnly(Engine, "sound", loadSound, xmlelement, mode);
     }
 
@@ -219,4 +222,6 @@
     {
         this->ship_ = ship;
+        this->sound_->attachToEntity(ship);
+
         if (ship)
         {
@@ -240,3 +245,18 @@
             return Vector3::ZERO;
     }
+
+    void Engine::loadSound(const std::string filename)
+    {
+        if(filename == "") return;
+        else
+        {
+            if(this->sound_ == NULL)
+            {
+                this->sound_ = new SoundBase(this->ship_);
+            }
+
+            this->sound_->loadFile(filename);
+            this->sound_->play(true);
+        }
+    }
 }
Index: code/branches/sound/src/orxonox/objects/items/Engine.h
===================================================================
--- code/branches/sound/src/orxonox/objects/items/Engine.h	(revision 2968)
+++ code/branches/sound/src/orxonox/objects/items/Engine.h	(revision 2980)
@@ -107,4 +107,6 @@
             virtual const Vector3& getDirection() const;
 
+            void loadSound(const std::string filename);
+
         private:
             void networkcallback_shipID();
@@ -129,4 +131,6 @@
             Shader* boostBlur_;
             float blurStrength_;
+
+            SoundBase* sound_;
     };
 }
Index: code/branches/sound/src/orxonox/sound/SoundBase.cc
===================================================================
--- code/branches/sound/src/orxonox/sound/SoundBase.cc	(revision 2968)
+++ code/branches/sound/src/orxonox/sound/SoundBase.cc	(revision 2980)
@@ -31,21 +31,23 @@
 #include "orxonox/objects/worldentities/WorldEntity.h"
 #include "util/Math.h"
+#include "SoundBase.h"
 #include "SoundManager.h"
-#include "SoundBase.h"
 
 namespace orxonox 
 {
-    SoundBase::SoundBase()
-    {
-        this->source_ = 0;
-        this->buffer_ = 0;
-        this->entity_ = NULL;
-    }
+    SoundManager* SoundBase::soundmanager_s = NULL;
 
     SoundBase::SoundBase(WorldEntity* entity)
     {
+        if(SoundBase::soundmanager_s == NULL)
+        {
+            SoundBase::soundmanager_s = new SoundManager();
+        }
+
         this->source_ = 0;
         this->buffer_ = 0;
         this->entity_ = entity;
+
+        SoundBase::soundmanager_s->addSound(this);
     }
 
Index: code/branches/sound/src/orxonox/sound/SoundBase.h
===================================================================
--- code/branches/sound/src/orxonox/sound/SoundBase.h	(revision 2968)
+++ code/branches/sound/src/orxonox/sound/SoundBase.h	(revision 2980)
@@ -36,4 +36,5 @@
     class SoundManager;
     class WorldEntity;
+
     /**
      * The SoudBase class is the base class for all sound file loader classes.
@@ -44,6 +45,5 @@
     {
     public:
-        SoundBase();
-        SoundBase(WorldEntity* entity);
+        SoundBase(WorldEntity* entity = NULL);
         ~SoundBase();
 
@@ -67,4 +67,6 @@
 
         ALint getSourceState();
+
+        static SoundManager* soundmanager_s;
     }; // class SoundBase
 } // namepsace orxonox
Index: code/branches/sound/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/branches/sound/src/orxonox/sound/SoundManager.cc	(revision 2968)
+++ code/branches/sound/src/orxonox/sound/SoundManager.cc	(revision 2980)
@@ -54,5 +54,5 @@
             if(SoundManager::device_s == NULL)
             {
-                COUT(3) << "OpenAL: open sound device..." << std::endl;
+                COUT(3) << "OpenAL: Open sound device..." << std::endl;
                 SoundManager::device_s = alcOpenDevice(NULL);
             }
@@ -64,4 +64,5 @@
             else
             {
+                COUT(3) << "OpenAL: Sound device opened";
                 this->context_ = alcCreateContext(SoundManager::device_s, NULL);
                 if(this->context_ == NULL)
@@ -71,4 +72,5 @@
                 else
                 {
+                    COUT(3) << "OpenAL: Context " << this->context_ << "loaded";
                     alcMakeContextCurrent(this->context_);
                 }
