Index: code/branches/resource/src/core/TclBind.cc
===================================================================
--- code/branches/resource/src/core/TclBind.cc	(revision 3343)
+++ code/branches/resource/src/core/TclBind.cc	(revision 3344)
@@ -38,4 +38,5 @@
 #include "ConsoleCommand.h"
 #include "TclThreadManager.h"
+#include "SpecialConfig.h"
 
 namespace orxonox
@@ -51,5 +52,5 @@
         singletonRef_s = this;
         this->interpreter_ = 0;
-        this->bSetTclLibPath_ = false;
+        this->bSetTclDataPath_ = false;
         this->setDataPath(datapath);
     }
@@ -65,15 +66,16 @@
     {
         // String has POSIX slashes
-        this->tclLibPath_ = datapath + "tcl" + TCL_VERSION + '/';
-        this->bSetTclLibPath_ = true;
+        this->tclDataPath_ = datapath + "tcl" + '/';
+        this->bSetTclDataPath_ = true;
 
-        this->createTclInterpreter();
+        this->initializeTclInterpreter();
     }
 
-    void TclBind::createTclInterpreter()
+    void TclBind::initializeTclInterpreter()
     {
-        if (this->bSetTclLibPath_ && !this->interpreter_)
+        if (this->bSetTclDataPath_ && !this->interpreter_)
         {
-            this->interpreter_ = new Tcl::interpreter(this->tclLibPath_);
+            this->interpreter_ = this->createTclInterpreter();
+
             this->interpreter_->def("orxonox::query", TclBind::tcl_query, Tcl::variadic());
             this->interpreter_->def("orxonox::crossquery", TclThreadManager::tcl_crossquery, Tcl::variadic());
@@ -88,5 +90,4 @@
                 this->interpreter_->eval("set id 0");
                 this->interpreter_->eval("rename exit tcl::exit; proc exit {} { execute exit }");
-                this->interpreter_->eval("redef_puts");
             }
             catch (Tcl::tcl_error const &e)
@@ -94,16 +95,28 @@
             catch (std::exception const &e)
             {   COUT(1) << "Error while creating Tcl-interpreter: " << e.what() << std::endl;   }
+            catch (...)
+            {   COUT(1) << "Error while creating Tcl-interpreter." << std::endl;   }
         }
     }
 
-    void TclBind::createNewTclInterpreter()
+    Tcl::interpreter* TclBind::createTclInterpreter()
     {
-        if (this->interpreter_)
+#ifdef DEPENDENCY_PACKAGE_ENABLE
+        Tcl::interpreter* interpreter = new Tcl::interpreter(ORXONOX_TCL_LIBRARY_PATH);
+#else
+        Tcl::interpreter* interpreter = new Tcl::interpreter();
+#endif
+        try
         {
-            delete this->interpreter_;
-            this->interpreter_ = 0;
+            interpreter->eval("source " + TclBind::getInstance().tclDataPath_ + "/init.tcl");
         }
+        catch (Tcl::tcl_error const &e)
+        {   COUT(1) << "Tcl error while creating Tcl-interpreter: " << e.what() << std::endl;   }
+        catch (std::exception const &e)
+        {   COUT(1) << "Error while creating Tcl-interpreter: " << e.what() << std::endl;   }
+        catch (...)
+        {   COUT(1) << "Error while creating Tcl-interpreter." << std::endl;   }
 
-        this->createTclInterpreter();
+        return interpreter;
     }
 
Index: code/branches/resource/src/core/TclBind.h
===================================================================
--- code/branches/resource/src/core/TclBind.h	(revision 3343)
+++ code/branches/resource/src/core/TclBind.h	(revision 3344)
@@ -49,7 +49,7 @@
 
             void setDataPath(const std::string& datapath);
-            std::string getTclLibPath() const { return this->tclLibPath_; }
-            void createTclInterpreter();
-            void createNewTclInterpreter();
+            const std::string& getTclDataPath() const { return this->tclDataPath_; }
+            void initializeTclInterpreter();
+            static Tcl::interpreter* createTclInterpreter();
             Tcl::interpreter* getTclInterpreter() const { return this->interpreter_; }
 
@@ -63,6 +63,6 @@
 
             Tcl::interpreter* interpreter_;
-            std::string tclLibPath_;
-            bool bSetTclLibPath_;
+            std::string tclDataPath_;
+            bool bSetTclDataPath_;
 
             static TclBind* singletonRef_s;
Index: code/branches/resource/src/core/TclThreadManager.cc
===================================================================
--- code/branches/resource/src/core/TclThreadManager.cc	(revision 3343)
+++ code/branches/resource/src/core/TclThreadManager.cc	(revision 3344)
@@ -240,5 +240,5 @@
         TclInterpreterBundle* newbundle = new TclInterpreterBundle();
         newbundle->id_ = id;
-        newbundle->interpreter_ = new Tcl::interpreter(TclBind::getInstance().getTclLibPath());
+        newbundle->interpreter_ = TclBind::createTclInterpreter();
 
         // Initialize the new interpreter
@@ -268,6 +268,4 @@
 
             // Redefine some native functions
-            newbundle->interpreter_->eval("redef_puts");
-
 //            newbundle->interpreter_->eval("rename while tcl::while");
 //            newbundle->interpreter_->eval("proc while {test command} { tcl::while {[uplevel 1 expr $test]} {uplevel 1 $command} }"); // (\"$test\" && [orxonox::running " + id + "]])
