Index: code/branches/orxonox_tutorial/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/OrxonoxPrereqs.h	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/OrxonoxPrereqs.h	(revision 1855)
@@ -90,4 +90,5 @@
     class SpaceShip;
     class SpaceShipAI;
+    class TutorialShip;
     class WorldEntity;
 
Index: code/branches/orxonox_tutorial/src/orxonox/OrxonoxStableHeaders.h
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/OrxonoxStableHeaders.h	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/OrxonoxStableHeaders.h	(revision 1855)
@@ -37,5 +37,5 @@
 #include "util/OrxonoxPlatform.h"
 
-#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC && !defined(ORXONOX_DISABLE_PCH)
+#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC && !defined(ORXONOX_DISABLE_PCH) && 0
 
 // including std headers here is useless since they're already precompiled
Index: code/branches/orxonox_tutorial/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/gamestates/GSLevel.cc	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/gamestates/GSLevel.cc	(revision 1855)
@@ -136,5 +136,5 @@
         // call the loader
         COUT(0) << "Loading level..." << std::endl;
-        startLevel_ = new Level(Settings::getDataPath() + "levels/sample.oxw");
+        startLevel_ = new Level(Settings::getDataPath() + "levels/tutorial.oxw");
         Loader::open(startLevel_);
     }
Index: code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.cc	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.cc	(revision 1855)
@@ -64,5 +64,5 @@
     SetConsoleCommand(SpaceShip, movePitch, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
     SetConsoleCommand(SpaceShip, moveRoll, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
-    SetConsoleCommand(SpaceShip, fire, true).accessLevel(AccessLevel::User).keybindMode(KeybindMode::OnHold);
+    //SetConsoleCommand(SpaceShip, fire, true).accessLevel(AccessLevel::User).keybindMode(KeybindMode::OnHold);
     SetConsoleCommandAliasMulti(SpaceShip, setMaxSpeedTest, "setMaxSpeed", 1, false).accessLevel(AccessLevel::Debug);
     SetConsoleCommandAliasMulti(SpaceShip, setMaxSpeedTest, "setMaxBlubber", 2, false).accessLevel(AccessLevel::Debug);
@@ -258,20 +258,22 @@
 
             // START CREATING ADDITIONAL EFFECTS
-            /*this->backlight_ = new Backlight(this->maxSpeed_, 0.8);
-            this->attachObject(this->backlight_);
-            this->backlight_->setPosition(-2.35, 0, 0.2);
-            this->backlight_->setColour(this->getProjectileColour());
-
-            this->smoke_ = new ParticleSpawner();
-            this->smoke_->setParticle("Orxonox/smoke5", LODParticle::normal, 0, 0, 3);
-            this->attachObject(this->smoke_);
-
-            this->fire_ = new ParticleSpawner();
-            this->fire_->setParticle("Orxonox/fire3", LODParticle::normal, 0, 0, 1);
-            this->attachObject(this->fire_);
-            */
+            if (this->hasSpecialEffects())
+            {
+                this->backlight_ = new Backlight(this->maxSpeed_, 0.8);
+                this->attachObject(this->backlight_);
+                this->backlight_->setPosition(-2.35, 0, 0.2);
+                this->backlight_->setColour(this->getProjectileColour());
+
+                this->smoke_ = new ParticleSpawner();
+                this->smoke_->setParticle("Orxonox/smoke5", LODParticle::normal, 0, 0, 3);
+                this->attachObject(this->smoke_);
+
+                this->fire_ = new ParticleSpawner();
+                this->fire_->setParticle("Orxonox/fire3", LODParticle::normal, 0, 0, 1);
+                this->attachObject(this->fire_);
+            }
             // END CREATING ADDITIONAL EFFECTS
 
-            if (this->isExactlyA(Class(SpaceShip)))
+            if (!this->isExactlyA(Class(SpaceShipAI)))
             {
                 // START of testing crosshair
@@ -300,5 +302,6 @@
     {
         SetConfigValue(bInvertYAxis_, false).description("Set this to true for joystick-like mouse behaviour (mouse up = ship down).");
-        SetConfigValue(reloadTime_, 0.125).description("The reload time of the weapon in seconds");
+        //SetConfigValue(reloadTime_, 0.125).description("The reload time of the weapon in seconds");
+        reloadTime_ = 9999999.9f;
         SetConfigValue(testvector_, Vector3()).description("asdfblah");
     }
@@ -376,5 +379,5 @@
         COUT(4) << "requesting focus for camera" << std::endl;
         //CameraHandler::getInstance()->requestFocus(cam_);
-        if(this->isExactlyA(Class(SpaceShip))){
+        if(!this->isExactlyA(Class(SpaceShipAI))){
           getFocus();
           COUT(4) << "getting focus for obj id: " << objectID << std::endl;
@@ -484,5 +487,5 @@
 
             projectile->setObjectMode(0x3);
-            this->timeToReload_ = this->reloadTime_;
+            this->timeToReload_ = this->getReloadTime();
         }
 
Index: code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.h
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.h	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.h	(revision 1855)
@@ -98,4 +98,7 @@
             void setMoveLateral(float value);
             void doFire();
+            
+            virtual float getReloadTime() { return this->reloadTime_; }
+            virtual bool hasSpecialEffects() { return false; }
 
             inline const Vector3& getDir() const
Index: code/branches/orxonox_tutorial/src/orxonox/objects/TutorialShip.cc
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/objects/TutorialShip.cc	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/objects/TutorialShip.cc	(revision 1855)
@@ -45,5 +45,7 @@
 namespace orxonox
 {
-    SetConsoleCommand(TutorialShip, fire, true);
+    SetConsoleCommand(TutorialShip, fire, true).keybindMode(KeybindMode::OnHold);
+
+    CreateFactory(TutorialShip);
 
     TutorialShip::TutorialShip()
@@ -52,4 +54,8 @@
 
         // reset variables
+        this->hasSpecialEffects_ = false;
+
+        // set config values
+        this->setConfigValues();
     }
 
@@ -65,12 +71,10 @@
     void TutorialShip::setConfigValues()
     {
-        //SetConfigValue(bInvertYAxis_, false).description("Set this to true for joystick-like mouse behaviour (mouse up = ship down).");
-        //SetConfigValue(reloadTime_, 0.125).description("The reload time of the weapon in seconds");
-        //SetConfigValue(testvector_, Vector3()).description("asdfblah");
+        SetConfigValue(reloadTime_, 0.125).description("The reload time of the weapon in seconds");
     }
 
-    void TutorialShip::registerAllVariables()
-    {
-    }
+    //void TutorialShip::registerAllVariables()
+    //{
+    //}
     
     /**
@@ -82,7 +86,26 @@
     void TutorialShip::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
+        XMLPortParam(TutorialShip, "specialEffects", setSpecialEffects, hasSpecialEffects, xmlelement, mode);
+
+        // Calls SpaceShip::XMLPort
         SUPER(TutorialShip, XMLPort, xmlelement, mode);
+    }
 
-        //XMLPortParam(SpaceShip, "camera", setCamera, getCamera, xmlelement, mode);
+    bool TutorialShip::hasSpecialEffects()
+    {
+        return this->hasSpecialEffects_;
+    }
+
+    void TutorialShip::setSpecialEffects(bool value)
+    {
+        this->hasSpecialEffects_ = value;
+    }
+
+    /**
+        @brief Returns the weapon reload time. Used virtually by the base class.
+    */
+    float TutorialShip::getReloadTime()
+    {
+        return this->reloadTime_;
     }
 
@@ -95,4 +118,5 @@
     void TutorialShip::fire()
     {
+        SpaceShip::getLocalShip()->doFire();
     }
 }
Index: code/branches/orxonox_tutorial/src/orxonox/objects/TutorialShip.h
===================================================================
--- code/branches/orxonox_tutorial/src/orxonox/objects/TutorialShip.h	(revision 1853)
+++ code/branches/orxonox_tutorial/src/orxonox/objects/TutorialShip.h	(revision 1855)
@@ -50,8 +50,13 @@
 
             bool create();
-            void registerAllVariables();
+            //void registerAllVariables();
             void setConfigValues();
             void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             void tick(float dt);
+            float getReloadTime();
+
+            // XML parameter loading
+            bool hasSpecialEffects();
+            void setSpecialEffects(bool value);
 
             // Methods for console commands
@@ -59,4 +64,6 @@
 
         private:
+            float reloadTime_;
+            bool hasSpecialEffects_;
     };
 }
Index: code/branches/orxonox_tutorial/visual_studio/vc8/orxonox.vcproj
===================================================================
--- code/branches/orxonox_tutorial/visual_studio/vc8/orxonox.vcproj	(revision 1853)
+++ code/branches/orxonox_tutorial/visual_studio/vc8/orxonox.vcproj	(revision 1855)
@@ -292,24 +292,4 @@
 				</File>
 				<File
-					RelativePath="..\..\src\orxonox\objects\SpaceShip_backend.cc"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-						/>
-					</FileConfiguration>
-				</File>
-				<File
 					RelativePath="..\..\src\orxonox\objects\SpaceShipAI.cc"
 					>
