Index: code/branches/resource2/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/resource2/src/orxonox/gamestates/GSGraphics.cc	(revision 5653)
+++ code/branches/resource2/src/orxonox/gamestates/GSGraphics.cc	(revision 5654)
@@ -96,5 +96,5 @@
         // load debug overlay
         COUT(3) << "Loading Debug Overlay..." << std::endl;
-        this->debugOverlay_ = new XMLFile(Core::getDataPathString() + "overlay/debug.oxo");
+        this->debugOverlay_ = new XMLFile("debug.oxo");
         Loader::open(debugOverlay_);
 
Index: code/branches/resource2/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/resource2/src/orxonox/gamestates/GSLevel.cc	(revision 5653)
+++ code/branches/resource2/src/orxonox/gamestates/GSLevel.cc	(revision 5654)
@@ -246,5 +246,5 @@
         // call the loader
         COUT(0) << "Loading level..." << std::endl;
-        startFile_s = new XMLFile(Core::getDataPathString() + "levels" + '/' + LevelManager::getInstance().getDefaultLevel());
+        startFile_s = new XMLFile(LevelManager::getInstance().getDefaultLevel());
         Loader::open(startFile_s);
     }
Index: code/branches/resource2/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/resource2/src/orxonox/gamestates/GSRoot.cc	(revision 5653)
+++ code/branches/resource2/src/orxonox/gamestates/GSRoot.cc	(revision 5654)
@@ -33,7 +33,6 @@
 #include "core/Game.h"
 #include "core/GameMode.h"
-#include "core/LuaBind.h"
+#include "core/LuaState.h"
 #include "network/NetworkFunction.h"
-#include "ToluaBindCore.h"
 #include "ToluaBindOrxonox.h"
 #include "tools/Timer.h"
@@ -56,6 +55,5 @@
 
         // Tell LuaBind about all tolua interfaces
-        LuaBind::getInstance().addToluaInterface(&tolua_Core_open, "Core");
-        LuaBind::getInstance().addToluaInterface(&tolua_Orxonox_open, "Orxonox");
+        LuaState::addToluaInterface(&tolua_Orxonox_open, "Orxonox");
     }
 
@@ -86,5 +84,5 @@
         }
 
-        // create the global LevelManager
+        // create the LevelManager
         this->levelManager_ = new LevelManager();
     }
Index: code/branches/resource2/src/orxonox/objects/Level.cc
===================================================================
--- code/branches/resource2/src/orxonox/objects/Level.cc	(revision 5653)
+++ code/branches/resource2/src/orxonox/objects/Level.cc	(revision 5654)
@@ -53,7 +53,4 @@
         this->registerVariables();
         this->xmlfilename_ = this->getFilename();
-
-        if (this->xmlfilename_.length() >= Core::getDataPathString().length())
-            this->xmlfilename_ = this->xmlfilename_.substr(Core::getDataPathString().length());
     }
 
Index: code/branches/resource2/src/orxonox/objects/Script.cc
===================================================================
--- code/branches/resource2/src/orxonox/objects/Script.cc	(revision 5653)
+++ code/branches/resource2/src/orxonox/objects/Script.cc	(revision 5654)
@@ -29,40 +29,36 @@
 #include "Script.h"
 
-#include <tinyxml/ticpp.h>
 #include "core/CoreIncludes.h"
-#include "core/LuaBind.h"
+#include "core/LuaState.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
 {
-  CreateFactory(Script);
+    CreateFactory(Script);
 
-  Script::Script(BaseObject* creator) : BaseObject(creator)
-  {
-    RegisterObject(Script);
+    Script::Script(BaseObject* creator) : BaseObject(creator)
+    {
+        RegisterObject(Script);
 
-    code_ = "";
-  }
+        // Get a new LuaState
+        luaState_ = new LuaState();
+    }
 
-  Script::~Script()
-  {
-  }
+    Script::~Script()
+    {
+        if (this->isInitialized())
+            delete luaState_;
+    }
 
-  /**
-  @brief XML loading and saving.
-  @param xmlelement The XML-element
-  @param loading Loading (true) or saving (false)
-   */
-  void Script::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-  {
-    BaseObject::XMLPort(xmlelement, mode);
+    void Script::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        BaseObject::XMLPort(xmlelement, mode);
 
-    code_ = xmlelement.GetText(false);
-  }
+        XMLPortParam(Script, "code", setCode, getCode, xmlelement, mode);
+    }
 
-  void Script::execute()
-  {
-    LuaBind& lua = LuaBind::getInstance();
-    lua.loadString(this->code_);
-    lua.run();
-  }
+    void Script::execute()
+    {
+        luaState_->doString(code_);
+    }
 }
Index: code/branches/resource2/src/orxonox/objects/Script.h
===================================================================
--- code/branches/resource2/src/orxonox/objects/Script.h	(revision 5653)
+++ code/branches/resource2/src/orxonox/objects/Script.h	(revision 5654)
@@ -37,15 +37,19 @@
 namespace orxonox
 {
-  class _OrxonoxExport Script : public BaseObject
-  {
+    class _OrxonoxExport Script : public BaseObject
+    {
     public:
-      Script(BaseObject* creator);
-      ~Script();
-      void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-      void execute();
+        Script(BaseObject* creator);
+        ~Script();
+        void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+        void execute();
+
+        void setCode(const std::string& code) { code_ = code; }
+        const std::string& getCode() const { return code_; }
 
     private:
-      std::string code_;
-  };
+        std::string code_;
+        LuaState* luaState_;
+    };
 }
 
Index: code/branches/resource2/src/orxonox/sound/SoundBase.cc
===================================================================
--- code/branches/resource2/src/orxonox/sound/SoundBase.cc	(revision 5653)
+++ code/branches/resource2/src/orxonox/sound/SoundBase.cc	(revision 5654)
@@ -36,4 +36,5 @@
 #include "util/Math.h"
 #include "core/Core.h"
+#include "core/Resource.h"
 #include "orxonox/objects/worldentities/WorldEntity.h"
 #include "SoundManager.h"
@@ -134,7 +135,5 @@
     }
 
-    bool SoundBase::loadFile(std::string filename) {
-        filename = Core::getDataPathString() + "/audio/" + filename;
-
+    bool SoundBase::loadFile(const std::string& filename) {
         if(!SoundManager::getInstance().isSoundAvailable())
         {
@@ -144,5 +143,18 @@
 
         COUT(3) << "Sound: OpenAL ALUT: loading file " << filename << std::endl;
-        this->buffer_ = alutCreateBufferFromFile(filename.c_str());
+        // Get DataStream from the resources
+        shared_ptr<ResourceInfo> fileInfo = Resource::getInfo(filename);
+        if (fileInfo == NULL) {
+            COUT(2) << "Warning: Sound file '" << filename << "' not found" << std::endl;
+            return false;
+        }
+        DataStreamPtr stream = Resource::open(filename);
+        // Read everything into a temporary buffer
+        char* buffer = new char[fileInfo->size];
+        stream->read(buffer, fileInfo->size);
+
+        this->buffer_ = alutCreateBufferFromFileImage(buffer, fileInfo->size);
+        delete[] buffer;
+
         if(this->buffer_ == AL_NONE) {
             COUT(2) << "Sound: OpenAL ALUT: " << alutGetErrorString(alutGetError()) << std::endl;
Index: code/branches/resource2/src/orxonox/sound/SoundBase.h
===================================================================
--- code/branches/resource2/src/orxonox/sound/SoundBase.h	(revision 5653)
+++ code/branches/resource2/src/orxonox/sound/SoundBase.h	(revision 5654)
@@ -55,5 +55,5 @@
         bool isStopped();
 
-        bool loadFile(std::string filename);
+        bool loadFile(const std::string& filename);
 
     private:
