Index: code/branches/gameimmersion/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/gameimmersion/src/orxonox/worldentities/ControllableEntity.cc	(revision 8254)
+++ code/branches/gameimmersion/src/orxonox/worldentities/ControllableEntity.cc	(revision 8379)
@@ -84,5 +84,4 @@
         this->client_angular_velocity_ = Vector3::ZERO;
 
-
         this->setConfigValues();
         this->setPriority( Priority::VeryHigh );
Index: code/branches/gameimmersion/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/branches/gameimmersion/src/orxonox/worldentities/ControllableEntity.h	(revision 8254)
+++ code/branches/gameimmersion/src/orxonox/worldentities/ControllableEntity.h	(revision 8379)
@@ -93,5 +93,11 @@
             virtual void reload() {}
 
-            virtual void boost() {}
+            /**
+            @brief Tells the ControllableEntity to either start or stop boosting.
+                   This doesn't mean, that the ControllableEntity will do so, there might be additional restrictions on boosting, but if it can, then it will.
+            @param bBoost If true the ControllableEntity is told to start boosting, if false it is told to stop.
+            */
+            virtual void boost(bool bBoost) {}
+            
             virtual void greet() {}
             virtual void switchCamera();
Index: code/branches/gameimmersion/src/orxonox/worldentities/pawns/SpaceShip.cc
===================================================================
--- code/branches/gameimmersion/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 8254)
+++ code/branches/gameimmersion/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 8379)
@@ -55,5 +55,4 @@
         this->localAngularAcceleration_.setValue(0, 0, 0);
         this->bBoost_ = false;
-        this->bPermanentBoost_ = false;
         this->steering_ = Vector3::ZERO;
         this->engine_ = 0;
@@ -83,5 +82,5 @@
 	this->cameraOriginalOrientation = c->getOrientation();
 
-	this->shakeFrequency_ = 20;
+	this->shakeFrequency_ = 50;
 	this->shakeAmplitude_ = 40;
 	this->shakeDt_ = 0;
@@ -114,4 +113,8 @@
         registerVariable(this->auxilaryThrust_, VariableDirection::ToClient);
         registerVariable(this->rotationThrust_, VariableDirection::ToClient);
+        registerVariable(this->boostPower_, VariableDirection::ToClient);
+        registerVariable(this->boostPowerRate_, VariableDirection::ToClient);
+        registerVariable(this->boostRate_, VariableDirection::ToClient);
+        registerVariable(this->boostCooldownDuration_, VariableDirection::ToClient);
     }
 
@@ -163,5 +166,5 @@
 
 
-	Camera* c = this->getCamera();
+
             if(this->bBoost_)
             {
@@ -177,4 +180,6 @@
 		{
 			this->shakeDt_ += dt;
+			
+			Camera* c = this->getCamera();
 
 			//Shaking Camera effect
@@ -201,10 +206,4 @@
 		}
             }
-	    else
-	    {
-		    //reset the camera, if the boost is not active
-		    //TODO: don't call this every tick
-		    this->resetCamera();
-	    }
         }
     }
@@ -254,26 +253,25 @@
     }
 
-    // TODO: something seems to call this function every tick, could probably handled a little more efficiently!
-    void SpaceShip::setBoost(bool bBoost)
-    {
-        if(bBoost == this->bBoost_)
-            return;
-
-        if(bBoost)
-            this->boost();
-        else
-        {
+    void SpaceShip::fire()
+    {
+    }
+
+    /**
+    @brief
+        Starts or stops boosting.
+    @param bBoost
+        Whether to start or stop boosting.
+    */
+    void SpaceShip::boost(bool bBoost)
+    {
+	Camera* c = this->getCamera();
+	
+        if(bBoost && !this->bBoostCooldown_)
+            this->bBoost_ = true;
+        if(!bBoost)
+	{
             this->bBoost_ = false;
-        }
-    }
-
-    void SpaceShip::fire()
-    {
-    }
-
-    void SpaceShip::boost()
-    {
-        if(!this->bBoostCooldown_)
-            this->bBoost_ = true;
+	    this->resetCamera();
+	}
     }
 
@@ -326,4 +324,12 @@
 	    
 	    assert(c != 0);
+	  
+	    if (c == 0)
+	    {
+		    COUT(2) << "Failed to reset camera!";
+	    	    return;
+	    }
+	    
+	    shakeDt_ = 0;
 	    
 	    c->setAngularVelocity(Vector3(0,0,0));
Index: code/branches/gameimmersion/src/orxonox/worldentities/pawns/SpaceShip.h
===================================================================
--- code/branches/gameimmersion/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 8254)
+++ code/branches/gameimmersion/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 8379)
@@ -59,5 +59,5 @@
 
             virtual void fire();
-            virtual void boost();
+            virtual void boost(bool bBoost); // Starts or stops boosting.
 
             void setEngine(Engine* engine);
@@ -70,5 +70,4 @@
                 { return this->steering_; }
 
-            void setBoost(bool bBoost);
             inline bool getBoost() const
                 { return this->bBoost_; }
@@ -79,9 +78,4 @@
                 { return this->enginetemplate_; }
 
-            inline void setPermanentBoost(bool bPermanent)
-                { this->bPermanentBoost_ = bPermanent; }
-            inline bool getPermanentBoost() const
-                { return this->bPermanentBoost_; }
-
         protected:
             virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const;
@@ -90,5 +84,4 @@
             bool bBoost_;
             bool bBoostCooldown_;
-            bool bPermanentBoost_;
             float boostPower_;
             float initialBoostPower_;
