Index: code/branches/sagerjFS16/src/orxonox/controllers/HumanController.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/HumanController.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/controllers/HumanController.cc	(revision 11174)
@@ -40,5 +40,5 @@
 namespace orxonox
 {
-    extern const std::string __CC_fire_name = "fire";
+    extern const std::string __CC_push_name = "push";
     extern const std::string __CC_suicide_name = "suicide";
     extern const std::string __CC_release_name = "release";
@@ -52,5 +52,5 @@
     SetConsoleCommand("HumanController", "toggleFormationFlight",  &HumanController::toggleFormationFlight).addShortcut().keybindMode(KeybindMode::OnPress);
     SetConsoleCommand("HumanController", "FFChangeMode",           &HumanController::FFChangeMode).addShortcut().keybindMode(KeybindMode::OnPress);
-    SetConsoleCommand("HumanController", __CC_fire_name,           &HumanController::fire          ).addShortcut().keybindMode(KeybindMode::OnHold);
+    SetConsoleCommand("HumanController", __CC_push_name,           &HumanController::push          ).addShortcut().keybindMode(KeybindMode::OnHold);
     SetConsoleCommand("HumanController", __CC_release_name,        &HumanController::release       ).addShortcut().keybindMode(KeybindMode::OnRelease);
     SetConsoleCommand("HumanController", "reload",                 &HumanController::reload        ).addShortcut();
@@ -157,15 +157,15 @@
     }
 
-    void HumanController::fire(unsigned int firemode)
-    {
-        if (HumanController::localController_s)
-            HumanController::localController_s->doFire(firemode);
-    }
-
-    void HumanController::doFire(unsigned int firemode)
-    {
-        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
-        {
-            HumanController::localController_s->controllableEntity_->fire(firemode);
+    void HumanController::push(unsigned int firemode)
+    {
+        if (HumanController::localController_s)
+            HumanController::localController_s->doPush(firemode);
+    }
+
+    void HumanController::doPush(unsigned int firemode)
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
+        {
+            HumanController::localController_s->controllableEntity_->push(firemode);
             //if human fires, set slaves free. See FormationController::forceFreeSlaves()
             if (HumanController::localController_s->state_==MASTER && HumanController::localController_s->formationMode_ == NORMAL)
Index: code/branches/sagerjFS16/src/orxonox/controllers/HumanController.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/HumanController.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/controllers/HumanController.h	(revision 11174)
@@ -61,6 +61,6 @@
             virtual void pitch(const Vector2& value);
 
-            static void fire(unsigned int firemode);
-            virtual void doFire(unsigned int firemode);
+            static void push(unsigned int firemode);
+            virtual void doPush(unsigned int firemode);
             static void release(unsigned int firemode);
             virtual void doRelease(unsigned int firemode);
Index: code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.cc	(revision 11174)
@@ -276,5 +276,5 @@
     }
 
-    void NewHumanController::doFire(unsigned int firemode)
+    void NewHumanController::doPush(unsigned int firemode)
     {
         if (!this->controllableEntity_)
@@ -291,5 +291,5 @@
         else
         {
-            HumanController::doFire(firemode); //call for formationflight
+            HumanController::doPush(firemode); //call for formationflight
         }
     }
Index: code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.h	(revision 11174)
@@ -54,5 +54,5 @@
             static void decelerate();
 
-            virtual void doFire(unsigned int firemode) override;
+            virtual void doPush(unsigned int firemode) override;
             virtual void doRelease(unsigned int firemode) override;
 
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/Weapon.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/Weapon.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/Weapon.cc	(revision 11174)
@@ -99,5 +99,5 @@
         Fire this Weapon with the the WeaponMode defined by @param mode
     */
-    void Weapon::fire(unsigned int mode)
+    void Weapon::push(unsigned int mode)
     {
         // To avoid firing with more than one mode at the same time, we lock the weapon (reloading) for
@@ -125,5 +125,5 @@
         {
             float reloading_time = 0;
-            if (it->second->fire(&reloading_time))
+            if (it->second->push(&reloading_time))
             {
                 this->bReloading_ = true;
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/Weapon.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/Weapon.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/Weapon.h	(revision 11174)
@@ -52,5 +52,5 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            void fire(unsigned int mode);
+            void push(unsigned int mode);
             void release(unsigned int mode);
             void reload();
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.cc	(revision 11174)
@@ -168,8 +168,22 @@
     }
 
+    bool WeaponMode::push(float* reloadTime)
+    {
+        if( this->chargeable_)
+        {
+            // setting up a timer for knowing how long the weapon was charged 
+            // and passes the value to this->cTime_
+        } else {
+            return fire(reloadTime);
+        }
+        
+    }
+
     bool WeaponMode::release(float* reloadTime)
     {
-        this->release();
-        return false;
+        if( this->chargeable_)
+        {
+            return fire(reloadTime);
+        }
     }
 
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.h	(revision 11174)
@@ -57,6 +57,7 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
+            virtual bool push(float* reloadTime);
+            virtual bool release(float* reloadTime);
             virtual bool fire(float* reloadTime);
-            virtual bool release(float* reloadTime);
             bool reload();
 
@@ -165,5 +166,4 @@
 
             virtual void fire() = 0;
-            virtual void release() {};
 
             unsigned int initialMunition_;
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponPack.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponPack.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponPack.cc	(revision 11174)
@@ -74,8 +74,8 @@
         Fire all weapons in this WeaponSet with the defined weaponmode.
     */
-    void WeaponPack::fire(unsigned int weaponmode)
+    void WeaponPack::push(unsigned int weaponmode)
     {
         for (Weapon* weapon : this->weapons_)
-            weapon->fire(weaponmode);
+            weapon->push(weaponmode);
     }
 
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponPack.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponPack.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponPack.h	(revision 11174)
@@ -46,5 +46,5 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            void fire(unsigned int weaponmode);
+            void push(unsigned int weaponmode);
             void release(unsigned int weaponmode);
             void reload();
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSet.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSet.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSet.cc	(revision 11174)
@@ -60,10 +60,10 @@
     }
 
-    void WeaponSet::fire()
+    void WeaponSet::push()
     {
         // Fire all WeaponPacks with their defined weaponmode
         for (const auto& mapEntry : this->weaponpacks_)
             if (mapEntry.second != WeaponSystem::WEAPON_MODE_UNASSIGNED)
-                mapEntry.first->fire(mapEntry.second);
+                mapEntry.first->push(mapEntry.second);
     }
 
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSet.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSet.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSet.h	(revision 11174)
@@ -46,5 +46,5 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
 
-            void fire();
+            void push();
             void release();
             void reload();
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.cc	(revision 11174)
@@ -287,9 +287,9 @@
         Fires the @ref orxonox::WeaponSet with the specified firemode.
     */
-    void WeaponSystem::fire(unsigned int firemode)
+    void WeaponSystem::push(unsigned int firemode)
     {
         std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.find(firemode);
         if (it != this->weaponSets_.end() && it->second)
-            it->second->fire();
+            it->second->push();
     }
 
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.h	(revision 11174)
@@ -74,5 +74,5 @@
             void changeWeaponmode(WeaponPack * wPack, WeaponSet * wSet, unsigned int weaponmode);
 
-            void fire(unsigned int firemode);
+            void push(unsigned int firemode);
             void release(unsigned int firemode);
             void reload();
Index: code/branches/sagerjFS16/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/worldentities/ControllableEntity.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/worldentities/ControllableEntity.cc	(revision 11174)
@@ -299,9 +299,9 @@
     }
 
-    void ControllableEntity::fire(unsigned int firemode)
+    void ControllableEntity::push(unsigned int firemode)
     {
         if(GameMode::isMaster())
         {
-            this->fired(firemode);
+            this->pushed(firemode);
         }
         else
Index: code/branches/sagerjFS16/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/worldentities/ControllableEntity.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/worldentities/ControllableEntity.h	(revision 11174)
@@ -96,7 +96,7 @@
                 { this->rotateRoll(Vector2(value, 0)); }
 
-            void fire(unsigned int firemode);
+            void push(unsigned int firemode);
             void release(unsigned int firemode);
-            virtual void fired(unsigned int firemode) {}
+            virtual void pushed(unsigned int firemode) {}
             virtual void released(unsigned int firemode) {}
             virtual void reload() {}
Index: code/branches/sagerjFS16/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/worldentities/pawns/Pawn.cc	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/worldentities/pawns/Pawn.cc	(revision 11174)
@@ -428,8 +428,8 @@
     */
 
-    void Pawn::fired(unsigned int firemode)
-    {
-        if (this->weaponSystem_)
-            this->weaponSystem_->fire(firemode);
+    void Pawn::pushed(unsigned int firemode)
+    {
+        if (this->weaponSystem_)
+            this->weaponSystem_->push(firemode);
     }
 
Index: code/branches/sagerjFS16/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/worldentities/pawns/Pawn.h	(revision 11170)
+++ code/branches/sagerjFS16/src/orxonox/worldentities/pawns/Pawn.h	(revision 11174)
@@ -157,5 +157,5 @@
             virtual void kill();
 
-            virtual void fired(unsigned int firemode) override;
+            virtual void pushed(unsigned int firemode) override;
             virtual void released(unsigned int firemode) override;
             virtual void postSpawn();
