Index: code/trunk/src/orxonox/objects/Ambient.cc
===================================================================
--- code/trunk/src/orxonox/objects/Ambient.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/Ambient.cc	(revision 1052)
@@ -42,12 +42,18 @@
 #include "GraphicsEngine.h"
 #include "core/XMLPort.h"
+#include "core/ConsoleCommand.h"
 
 namespace orxonox
 {
+    ConsoleCommand(Ambient, setAmbientLightTest, AccessLevel::Offline, false).setDefaultValues(ColourValue(1, 1, 1, 1));
+
     CreateFactory(Ambient);
+
+    Ambient* Ambient::instance_s;
 
     Ambient::Ambient()
     {
         RegisterObject(Ambient);
+        Ambient::instance_s = this;
     }
 
@@ -84,9 +90,9 @@
         @return The XML-element
     */
-    void Ambient::XMLPort(Element& xmlelement, bool loading)
+    void Ambient::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
-        BaseObject::XMLPort(xmlelement, loading);
+        BaseObject::XMLPort(xmlelement, mode);
 
-        XMLPortParamLoadOnly(Ambient, "colourvalue", setAmbientLight, xmlelement, loading);
+        XMLPortParamLoadOnly(Ambient, "colourvalue", setAmbientLight, xmlelement, mode);
     }
 }
Index: code/trunk/src/orxonox/objects/Ambient.h
===================================================================
--- code/trunk/src/orxonox/objects/Ambient.h	(revision 1040)
+++ code/trunk/src/orxonox/objects/Ambient.h	(revision 1052)
@@ -43,9 +43,12 @@
 
             void loadParams(TiXmlElement* xmlElem);
-            virtual void XMLPort(Element& xmlelement, bool loading);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             void setAmbientLight(const ColourValue& colour);
 
+            static void setAmbientLightTest(const ColourValue& colour)
+                { Ambient::instance_s->setAmbientLight(colour); }
+
         private:
-
+            static Ambient* instance_s;
 
     };
Index: code/trunk/src/orxonox/objects/Explosion.cc
===================================================================
--- code/trunk/src/orxonox/objects/Explosion.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/Explosion.cc	(revision 1052)
@@ -34,4 +34,6 @@
 
 #include "core/CoreIncludes.h"
+#include "core/Executor.h"
+
 #include "util/Math.h"
 #include "GraphicsEngine.h"
@@ -51,5 +53,5 @@
         if (owner)
         {
-            this->destroyTimer_.setTimer(this->lifetime_, false, this, &Explosion::destroyObject);
+            this->destroyTimer_.setTimer(this->lifetime_, false, this, createExecutor(createFunctor(&Explosion::destroyObject)));
 
             Vector3 position = owner->getNode()->getWorldPosition();
Index: code/trunk/src/orxonox/objects/Model.cc
===================================================================
--- code/trunk/src/orxonox/objects/Model.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/Model.cc	(revision 1052)
@@ -68,9 +68,9 @@
         @return The XML-element
     */
-    void Model::XMLPort(Element& xmlelement, bool loading)
+    void Model::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
-        WorldEntity::XMLPort(xmlelement, loading);
+        WorldEntity::XMLPort(xmlelement, mode);
 
-        XMLPortParamLoadOnly(Model, "mesh", setMesh, xmlelement, loading);
+        XMLPortParamLoadOnly(Model, "mesh", setMesh, xmlelement, mode);
 
         create();
@@ -84,5 +84,6 @@
     bool Model::create(){
       WorldEntity::create();
-      if(meshSrc_.compare("")!=0){
+      if ((this->meshSrc_ != "") && (this->meshSrc_.size() > 0))
+      {
         this->mesh_.setMesh(meshSrc_);
         this->attachObject(this->mesh_.getEntity());
Index: code/trunk/src/orxonox/objects/Model.h
===================================================================
--- code/trunk/src/orxonox/objects/Model.h	(revision 1040)
+++ code/trunk/src/orxonox/objects/Model.h	(revision 1052)
@@ -43,5 +43,5 @@
             virtual ~Model();
             virtual void loadParams(TiXmlElement* xmlElem);
-            virtual void XMLPort(Element& xmlelement, bool loading);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             void setMesh(const std::string& meshname);
             bool create();
Index: code/trunk/src/orxonox/objects/Projectile.cc
===================================================================
--- code/trunk/src/orxonox/objects/Projectile.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/Projectile.cc	(revision 1052)
@@ -29,5 +29,8 @@
 #include "Projectile.h"
 
-#include "../core/CoreIncludes.h"
+#include "core/CoreIncludes.h"
+#include "core/Executor.h"
+#include "core/ConfigValueIncludes.h"
+
 #include "SpaceShip.h"
 #include "Explosion.h"
@@ -59,5 +62,5 @@
         }
 
-        this->destroyTimer_.setTimer(this->lifetime_, false, this, &Projectile::destroyObject);
+        this->destroyTimer_.setTimer(this->lifetime_, false, this, createExecutor(createFunctor(&Projectile::destroyObject)));
     }
 
@@ -70,4 +73,6 @@
         SetConfigValue(lifetime_, 10.0).description("The time in seconds a projectile stays alive");
         SetConfigValue(speed_, 2000.0).description("The speed of a projectile in units per second");
+
+        this->setVelocity(Vector3(1, 0, 0) * this->speed_);
     }
 
Index: code/trunk/src/orxonox/objects/Skybox.cc
===================================================================
--- code/trunk/src/orxonox/objects/Skybox.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/Skybox.cc	(revision 1052)
@@ -76,9 +76,9 @@
         @return The XML-element
     */
-    void Skybox::XMLPort(Element& xmlelement, bool loading)
+    void Skybox::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
-        BaseObject::XMLPort(xmlelement, loading);
+        BaseObject::XMLPort(xmlelement, mode);
 
-        XMLPortParamLoadOnly(Skybox, "src", setSkybox, xmlelement, loading);
+        XMLPortParamLoadOnly(Skybox, "src", setSkybox, xmlelement, mode);
     }
 }
Index: code/trunk/src/orxonox/objects/Skybox.h
===================================================================
--- code/trunk/src/orxonox/objects/Skybox.h	(revision 1040)
+++ code/trunk/src/orxonox/objects/Skybox.h	(revision 1052)
@@ -15,5 +15,5 @@
 
             void loadParams(TiXmlElement* xmlElem);
-            virtual void XMLPort(Element& xmlelement, bool loading);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             void setSkybox(const std::string& skyboxname);
 
Index: code/trunk/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/trunk/src/orxonox/objects/SpaceShip.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/SpaceShip.cc	(revision 1052)
@@ -41,4 +41,5 @@
 #include "util/Math.h"
 #include "core/CoreIncludes.h"
+#include "core/ConfigValueIncludes.h"
 #include "core/Debug.h"
 #include "GraphicsEngine.h"
@@ -47,8 +48,16 @@
 #include "Projectile.h"
 #include "core/XMLPort.h"
+#include "core/ConsoleCommand.h"
 
 namespace orxonox
 {
+    ConsoleCommand(SpaceShip, setMaxSpeedTest, AccessLevel::Debug, false);
+    ConsoleCommandGeneric(test1, SpaceShip, createExecutor(createFunctor(&SpaceShip::setMaxSpeedTest), "setMaxSpeed", AccessLevel::Debug), false);
+    ConsoleCommandGeneric(test2, SpaceShip, createExecutor(createFunctor(&SpaceShip::setMaxSpeedTest), "setMaxBlubber", AccessLevel::Debug), false);
+    ConsoleCommandGeneric(test3, SpaceShip, createExecutor(createFunctor(&SpaceShip::setMaxSpeedTest), "setRofl", AccessLevel::Debug), false);
+
     CreateFactory(SpaceShip);
+
+    SpaceShip* SpaceShip::instance_s;
 
     SpaceShip::SpaceShip()
@@ -56,4 +65,6 @@
         RegisterObject(SpaceShip);
         this->registerAllVariables();
+
+        SpaceShip::instance_s = this;
 
         this->setConfigValues();
@@ -309,16 +320,16 @@
         @return The XML-element
     */
-    void SpaceShip::XMLPort(Element& xmlelement, bool loading)
-    {
-        Model::XMLPort(xmlelement, loading);
-
-        XMLPortParamLoadOnly(SpaceShip, "camera", setCamera, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "maxSpeed", setMaxSpeed, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "maxSideAndBackSpeed", setMaxSideAndBackSpeed, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "maxRotation", setMaxRotation, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "transAcc", setTransAcc, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "rotAcc", setRotAcc, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "transDamp", setTransDamp, xmlelement, loading);
-        XMLPortParamLoadOnly(SpaceShip, "rotDamp", setRotDamp, xmlelement, loading);
+    void SpaceShip::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        Model::XMLPort(xmlelement, mode);
+
+        XMLPortParamLoadOnly(SpaceShip, "camera", setCamera, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "maxSpeed", setMaxSpeed, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "maxSideAndBackSpeed", setMaxSideAndBackSpeed, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "maxRotation", setMaxRotation, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "transAcc", setTransAcc, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "rotAcc", setRotAcc, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "transDamp", setTransDamp, xmlelement, mode);
+        XMLPortParamLoadOnly(SpaceShip, "rotDamp", setRotDamp, xmlelement, mode);
     }
 
Index: code/trunk/src/orxonox/objects/SpaceShip.h
===================================================================
--- code/trunk/src/orxonox/objects/SpaceShip.h	(revision 1040)
+++ code/trunk/src/orxonox/objects/SpaceShip.h	(revision 1052)
@@ -49,5 +49,5 @@
             void setConfigValues();
             virtual void loadParams(TiXmlElement* xmlElem);
-            virtual void XMLPort(Element& xmlelement, bool loading);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual void tick(float dt);
 
@@ -61,4 +61,7 @@
             void setRotDamp(float value);
 
+            static void setMaxSpeedTest(float value)
+                { SpaceShip::instance_s->setMaxSpeed(value); }
+
             bool mouseMoved(const OIS::MouseEvent &e);
             bool mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id);
@@ -67,4 +70,6 @@
 
         private:
+            static SpaceShip* instance_s;
+
             Vector3 testvector_;
             bool bInvertYAxis_;
Index: code/trunk/src/orxonox/objects/WorldEntity.cc
===================================================================
--- code/trunk/src/orxonox/objects/WorldEntity.cc	(revision 1040)
+++ code/trunk/src/orxonox/objects/WorldEntity.cc	(revision 1052)
@@ -176,16 +176,16 @@
         @return The XML-element
     */
-    void WorldEntity::XMLPort(Element& xmlelement, bool loading)
-    {
-        BaseObject::XMLPort(xmlelement, loading);
-
-        XMLPortParam(WorldEntity, "position", setPositionLoader2, getPosition, xmlelement, loading);
-        XMLPortParamLoadOnly(WorldEntity, "direction", setDirectionLoader, xmlelement, loading);
-        XMLPortParamLoadOnly(WorldEntity, "yawpitchroll", setYawPitchRoll, xmlelement, loading);
-        XMLPortParam(WorldEntity, "scale", setTotalScale, getScale, xmlelement, loading);
-        XMLPortParam(WorldEntity, "rotationAxis", setRotationAxisLoader, getRotationAxis, xmlelement, loading);
-        XMLPortParam(WorldEntity, "rotationRate", setRotationRate, getRotationRate, xmlelement, loading);
-
-        XMLPortObject(WorldEntity, WorldEntity, "attached", attachWorldEntity, getAttachedWorldEntity, xmlelement, loading);
+    void WorldEntity::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        BaseObject::XMLPort(xmlelement, mode);
+
+        XMLPortParam(WorldEntity, "position", setPositionLoader2, getPosition, xmlelement, mode);
+        XMLPortParamLoadOnly(WorldEntity, "direction", setDirectionLoader, xmlelement, mode);
+        XMLPortParamLoadOnly(WorldEntity, "yawpitchroll", setYawPitchRoll, xmlelement, mode);
+        XMLPortParam(WorldEntity, "scale", setTotalScale, getScale, xmlelement, mode);
+        XMLPortParam(WorldEntity, "rotationAxis", setRotationAxisLoader, getRotationAxis, xmlelement, mode);
+        XMLPortParam(WorldEntity, "rotationRate", setRotationRate, getRotationRate, xmlelement, mode);
+
+        XMLPortObject(WorldEntity, WorldEntity, "attached", attachWorldEntity, getAttachedWorldEntity, xmlelement, mode, false, true);
     }
 
@@ -219,5 +219,5 @@
     }
 
-    const WorldEntity* WorldEntity::getAttachedWorldEntity(unsigned int index)
+    const WorldEntity* WorldEntity::getAttachedWorldEntity(unsigned int index) const
     {
         if (index < this->attachedWorldEntities_.size())
Index: code/trunk/src/orxonox/objects/WorldEntity.h
===================================================================
--- code/trunk/src/orxonox/objects/WorldEntity.h	(revision 1040)
+++ code/trunk/src/orxonox/objects/WorldEntity.h	(revision 1052)
@@ -51,9 +51,9 @@
             virtual void tick(float dt);
             virtual void loadParams(TiXmlElement* xmlElem);
-            virtual void XMLPort(Element& xmlelement, bool loading);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             inline bool create(){ return true; }
 
             void attachWorldEntity(WorldEntity* entity);
-            const WorldEntity* getAttachedWorldEntity(unsigned int index);
+            const WorldEntity* getAttachedWorldEntity(unsigned int index) const;
 
             inline Ogre::SceneNode* getNode()
