Index: code/branches/FICN/CMakeLists.txt
===================================================================
--- code/branches/FICN/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/CMakeLists.txt	(revision 768)
@@ -1,4 +1,6 @@
 PROJECT(Orxonox)
 #set some global variables, which are used throughout the project
+SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
+SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/lib)
 
 OPTION(TESTING_ENABLED "Do you want to enable Testing")
@@ -22,5 +24,5 @@
   PATHS "/usr/bin /bin")
   IF(NOT UNAME_CMD)
-    MESSAGE("Unable to find uname. Tardis-Check cannot be done.")
+    MESSAGE(ERROR "Unable to find uname. Tardis-Check cannot be done.")
   ENDIF(NOT UNAME_CMD)
 
@@ -33,5 +35,5 @@
 
   IF (NOT "${UNAME_RV}" STREQUAL "0")
-    MESSAGE("ERROR: uname terminated unclean.")
+    MESSAGE(ERROR "ERROR: uname terminated unclean.")
   ENDIF (NOT "${UNAME_RV}" STREQUAL "0")
 
@@ -45,5 +47,5 @@
     MESSAGE("System is a TARDIS: Setting Compiler to g++-4.1.1")
     SET(CMAKE_CXX_COMPILER "g++-4.1.1")
-    # reset eNet serach path
+    # reset Boost serach path
     SET(Boost_INCLUDE_DIR "/usr/pack/boost-1.34.1-sd/i686-debian-linux3.1/include")
   ENDIF(IS_TARDIS)
@@ -75,4 +77,6 @@
 INCLUDE_DIRECTORIES(${OGRE_INCLUDE_DIR} ${OIS_INCLUDE_DIR} ${CEGUI_INCLUDE_DIR} ${CEGUI_OGRE_INCLUDE_DIR} ${ENet_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${OPENAL_INCLUDE_DIR} ${ALUT_INCLUDE_DIR} ${VORBIS_INCLUDE_DIR} ${OGG_INCLUDE_DIR})
 
+#Set the execution directory
+
 #add main source dir
 ADD_SUBDIRECTORY(src)
Index: code/branches/FICN/bin/levels/sample.oxw
===================================================================
--- code/branches/FICN/bin/levels/sample.oxw	(revision 752)
+++ code/branches/FICN/bin/levels/sample.oxw	(revision 768)
@@ -12,5 +12,5 @@
 
 
- <audio>
+ <!--audio>
 		<ambient>
 			<ogg src="allgorythm-lift_up" />
@@ -20,5 +20,5 @@
 			<ogg src="tha_silent_partner_-_void" />
 		</ambient>
-  </audio>
+  </audio-->
 
   <!-- Keep a minimum distance of >100 to the object, otherwise the camara thinks it's in the object -->
@@ -30,5 +30,5 @@
   <world>
     <Ambient colourvalue="1,1,1" />
-    <Skybox src="Orxonox/StarfieldSkyBox" />
+    <Skybox src="Orxonox/StarSkyBox" />
 
     <!--Fighter camera="true" position="0,0,0" scale="10" yaw="-90" pitch="-90" mesh="assf3.mesh"  forward="500" rotateupdown="200" rotaterightleft="200" looprightleft="200" /-->
Index: code/branches/FICN/bin/main.bat
===================================================================
--- code/branches/FICN/bin/main.bat	(revision 752)
+++ code/branches/FICN/bin/main.bat	(revision 768)
@@ -1,2 +1,4 @@
+title Orxonox
+path O:\FICN_test\bin\lib;%path%
 main.exe
 pause
Index: code/branches/FICN/src/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/CMakeLists.txt	(revision 768)
@@ -1,9 +1,8 @@
-PROJECT(Orxonox)
-
 INCLUDE_DIRECTORIES(.)
 
+ADD_SUBDIRECTORY(util)
+ADD_SUBDIRECTORY(orxonox/core)
+ADD_SUBDIRECTORY(audio)
+ADD_SUBDIRECTORY(network)
 ADD_SUBDIRECTORY(loader)
-ADD_SUBDIRECTORY(network)
 ADD_SUBDIRECTORY(orxonox)
-ADD_SUBDIRECTORY(audio)
-ADD_SUBDIRECTORY(util)
Index: code/branches/FICN/src/audio/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/audio/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/audio/CMakeLists.txt	(revision 768)
@@ -1,5 +1,3 @@
-PROJECT(Orxonox)
-
-SET(SRC_FILES
+SET ( AUDIO_SRC_FILES
   AudioIncludes.h
   AudioManager.cc
@@ -9,21 +7,19 @@
 )
 
+IF (WIN32)
+  ADD_LIBRARY( audio ${AUDIO_SRC_FILES } )
+ELSE (WIN32)
+  ADD_LIBRARY( audio SHARED ${AUDIO_SRC_FILES})
+ENDIF (WIN32)
 
-INCLUDE_DIRECTORIES(..)
+SET_TARGET_PROPERTIES( audio PROPERTIES LINK_FLAGS "--no-undefined" )
 
-IF(WIN32)
-  ADD_LIBRARY(audio ${SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(audio SHARED ${SRC_FILES})
-ENDIF(WIN32)
-
-TARGET_LINK_LIBRARIES(
-  audio
+TARGET_LINK_LIBRARIES( audio
   ${OPENAL_LIBRARY}
   ${ALUT_LIBRARY}
   ${VORBISFILE_LIBRARY}
-  ${VORBISENC_LIBRARY}
   ${VORBIS_LIBRARY}
   ${OGG_LIBRARY}
+  core
 )
 
Index: code/branches/FICN/src/loader/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/loader/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/loader/CMakeLists.txt	(revision 768)
@@ -1,14 +1,13 @@
-PROJECT(Orxonox)
-
-# TODO find a cleaner way to include xmlParser
 SET( LOADER_SRC_FILES
   LevelLoader.cc
 )
 
-IF(WIN32)
-  ADD_LIBRARY(loader ${LOADER_SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(loader SHARED ${LOADER_SRC_FILES})
-ENDIF(WIN32)
+IF (WIN32)
+  ADD_LIBRARY( loader ${LOADER_SRC_FILES } )
+ELSE (WIN32)
+  ADD_LIBRARY( loader SHARED ${LOADER_SRC_FILES})
+ENDIF (WIN32)
+
+SET_TARGET_PROPERTIES( loader PROPERTIES LINK_FLAGS "--no-undefined" )
 
 TARGET_LINK_LIBRARIES( loader
Index: code/branches/FICN/src/network/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/network/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/network/CMakeLists.txt	(revision 768)
@@ -1,4 +1,2 @@
-PROJECT(Orxonox)
-
 SET( NETWORK_SRC_FILES
   Client.cc
@@ -17,10 +15,17 @@
 
 IF(WIN32)
-  ADD_LIBRARY(network ${NETWORK_SRC_FILES})
+  ADD_LIBRARY( network ${NETWORK_SRC_FILES})
 ELSE(WIN32)
-  ADD_LIBRARY(network SHARED ${NETWORK_SRC_FILES})
+  ADD_LIBRARY( network SHARED ${NETWORK_SRC_FILES})
 ENDIF(WIN32)
 
-TARGET_LINK_LIBRARIES(network ${ZLIB_LIBRARY} ${ENet_LIBRARY} ${Boost_thread_LIBRARIES})
+SET_TARGET_PROPERTIES( network PROPERTIES LINK_FLAGS "--no-undefined" )
+
+TARGET_LINK_LIBRARIES( network
+  ${ZLIB_LIBRARY}
+  ${ENet_LIBRARY}
+  ${Boost_thread_LIBRARIES}
+  core
+)
 
 # build those parts only on request.
Index: code/branches/FICN/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/orxonox/CMakeLists.txt	(revision 768)
@@ -1,74 +1,46 @@
-PROJECT(Orxonox)
-
-ADD_SUBDIRECTORY(core)
-ADD_SUBDIRECTORY(hud)
-IF(NOT WIN32)
-  ADD_SUBDIRECTORY(objects)
-  ADD_SUBDIRECTORY(tools)
-ENDIF(NOT WIN32)
-ADD_SUBDIRECTORY(particle)
-
-INCLUDE_DIRECTORIES(tools)
-
 SET( ORXONOX_SRC_FILES
+  GraphicsEngine.cc
+  Main.cc
   Orxonox.cc
   SpaceshipSteering.cc
-  Main.cc
-  GraphicsEngine.cc
+  hud/HUD.cc
+  particle/ParticleInterface.cc
+  tools/BillboardSet.cc
+  tools/Light.cc
+  tools/Mesh.cc
+  objects/Ambient.cc
+  objects/Camera.cc
+  objects/Explosion.cc
+  objects/Fighter.cc
+  objects/Model.cc
+  objects/NPC.cc
+  objects/Projectile.cc
+  objects/Skybox.cc
+  objects/SpaceShip.cc
+# objects/SpaceshipSteeringObject.cc
+# objects/test1.cc
+# objects/test2.cc
+# objects/test3.cc
+  objects/WorldEntity.cc
+  objects/weapon/AmmunitionDump.cc
+  objects/weapon/BarrelGun.cc
+  objects/weapon/BaseWeapon.cc
+  objects/weapon/Bullet.cc
+  objects/weapon/BulletManager.cc
+  objects/weapon/WeaponStation.cc
 )
 
-IF(WIN32)
-  SET( OBJECTS_SRC_FILES
-    objects/WorldEntity.cc
-    objects/test1.cc
-    objects/test2.cc
-    objects/test3.cc
-    objects/Ambient.cc
-    objects/Skybox.cc
-    objects/Camera.cc
-#    objects/SpaceshipSteeringObject.cc
-    objects/Fighter.cc
-    objects/Model.cc
-    objects/SpaceShip.cc
-    objects/NPC.cc
-    objects/Projectile.cc
-    objects/weapon_system/AmmunitionDump.cc
-    objects/weapon_system/BarrelGun.cc
-    objects/weapon_system/BaseWeapon.cc
-    objects/weapon_system/Bullet.cc
-    objects/weapon_system/BulletManager.cc
-    objects/weapon_system/WeaponStation.cc
-    objects/Explosion.cc
-    tools/BillboardSet.cc
-    tools/Light.cc
-    tools/Mesh.cc
-  )
-ELSE(WIN32)
-  SET(LINK_OBJECTS_LIBRARY objects)
-  SET(LINK_TOOLS_LIBRARY tools)
-ENDIF(WIN32)
+ADD_EXECUTABLE( main ${ORXONOX_SRC_FILES} )
 
-IF(WIN32)
-#  ADD_LIBRARY(orxonox ${ORXONOX_SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(orxonox SHARED ${ORXONOX_SRC_FILES})
-ENDIF(WIN32)
+SET_TARGET_PROPERTIES( main PROPERTIES LINK_FLAGS "--no-undefined" )
 
-ADD_EXECUTABLE(../../bin/main ${ORXONOX_SRC_FILES} ${OBJECTS_SRC_FILES})
-
-SET_TARGET_PROPERTIES(../../bin/main PROPERTIES LINK_FLAGS "--no-undefined" )
-
-TARGET_LINK_LIBRARIES( ../../bin/main
+TARGET_LINK_LIBRARIES( main
   ${OGRE_LIBRARIES}
   ${OIS_LIBRARIES}
-  loader
+  util
+  core
   audio
   network
-  core
-  hud
-  ${LINK_OBJECTS_LIBRARY}
-  ${LINK_TOOLS_LIBRARY}
-  util
-  particle
+  loader
 )
 
Index: code/branches/FICN/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/FICN/src/orxonox/Orxonox.cc	(revision 752)
+++ code/branches/FICN/src/orxonox/Orxonox.cc	(revision 768)
@@ -70,5 +70,5 @@
 #include "core/Debug.h"
 #include "hud/HUD.h"
-#include "objects/weapon_system/BulletManager.h"
+#include "objects/weapon/BulletManager.h"
 #include "GraphicsEngine.h"
 
Index: code/branches/FICN/src/orxonox/OrxonoxPlatform.h
===================================================================
--- code/branches/FICN/src/orxonox/OrxonoxPlatform.h	(revision 752)
+++ code/branches/FICN/src/orxonox/OrxonoxPlatform.h	(revision 768)
@@ -211,5 +211,8 @@
 
 // disable: "conversion from 'double' to 'float', possible loss of data
-//#   pragma warning (disable : 4244)
+#   pragma warning (disable : 4244)
+
+// disable: "conversion from 'size_t' to 'unsigned int', possible loss of data
+#   pragma warning (disable : 4267)
 
 // disable: "truncation from 'double' to 'float'
Index: code/branches/FICN/src/orxonox/SpaceshipSteering.cc
===================================================================
--- code/branches/FICN/src/orxonox/SpaceshipSteering.cc	(revision 752)
+++ code/branches/FICN/src/orxonox/SpaceshipSteering.cc	(revision 768)
@@ -104,5 +104,5 @@
       if(speedRotateUpDown_ < 0)
         speedRotateUpDown_ += accelerationRotateUpDown_*time;
-      if(abs(speedRotateUpDown_)<accelerationRotateUpDown_*time)
+      if(fabsf(speedRotateUpDown_)<accelerationRotateUpDown_*time)
         speedRotateUpDown_ = 0;
     }
@@ -128,5 +128,5 @@
       if(speedRotateRightLeft_ < 0)
         speedRotateRightLeft_ += accelerationRotateRightLeft_*time;
-      if(abs(speedRotateRightLeft_)<accelerationRotateRightLeft_*time)
+      if(fabsf(speedRotateRightLeft_)<accelerationRotateRightLeft_*time)
         speedRotateRightLeft_ = 0;
     }
@@ -152,5 +152,5 @@
       if(speedLoopRightLeft_ < 0)
         speedLoopRightLeft_ += accelerationLoopRightLeft_*time;
-      if(abs(speedLoopRightLeft_)<accelerationLoopRightLeft_*time)
+      if(fabsf(speedLoopRightLeft_)<accelerationLoopRightLeft_*time)
         speedLoopRightLeft_ = 0;
     }
Index: code/branches/FICN/src/orxonox/core/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/core/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/orxonox/core/CMakeLists.txt	(revision 768)
@@ -1,4 +1,2 @@
-PROJECT(Orxonox)
-
 SET( CORE_SRC_FILES
   BaseObject.cc
@@ -17,7 +15,8 @@
 )
 
-IF(WIN32)
-  ADD_LIBRARY(core SHARED ${CORE_SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(core SHARED ${CORE_SRC_FILES})
-ENDIF(WIN32)
+ADD_LIBRARY( core SHARED ${CORE_SRC_FILES})
+SET_TARGET_PROPERTIES( core PROPERTIES LINK_FLAGS "--no-undefined" )
+
+TARGET_LINK_LIBRARIES( core
+  util
+)
Index: code/branches/FICN/src/orxonox/hud/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/hud/CMakeLists.txt	(revision 752)
+++ 	(revision )
@@ -1,11 +1,0 @@
-PROJECT(Orxonox)
-
-SET( HUD_SRC_FILES
-  HUD.cc
-)
-
-IF(WIN32)
-  ADD_LIBRARY(hud ${HUD_SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(hud SHARED ${HUD_SRC_FILES})
-ENDIF(WIN32)
Index: code/branches/FICN/src/orxonox/objects/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/objects/CMakeLists.txt	(revision 752)
+++ 	(revision )
@@ -1,34 +1,0 @@
-PROJECT(Orxonox)
-
-INCLUDE_DIRECTORIES(../tools)
-
-SET( OBJECTS_SRC_FILES
-  Ambient.cc
-  Camera.cc
-  Explosion.cc
-  Fighter.cc
-  Model.cc
-  NPC.cc
-  Projectile.cc
-  Skybox.cc
-  SpaceShip.cc
-#  SpaceshipSteeringObject.cc
-  WorldEntity.cc
-  test1.cc
-  test2.cc
-  test3.cc
-  weapon_system/AmmunitionDump.cc
-  weapon_system/BarrelGun.cc
-  weapon_system/BaseWeapon.cc
-  weapon_system/Bullet.cc
-  weapon_system/BulletManager.cc
-  weapon_system/WeaponStation.cc
-)
-
-ADD_LIBRARY(objects SHARED ${OBJECTS_SRC_FILES})
-
-TARGET_LINK_LIBRARIES( objects
-  util
-  orxonox
-  tools
-)
Index: code/branches/FICN/src/orxonox/objects/Explosion.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/Explosion.h	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/Explosion.h	(revision 768)
@@ -5,5 +5,5 @@
 
 #include "WorldEntity.h"
-#include "Timer.h"
+#include "../tools/Timer.h"
 
 namespace orxonox
Index: code/branches/FICN/src/orxonox/objects/Fighter.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/Fighter.cc	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/Fighter.cc	(revision 768)
@@ -38,6 +38,6 @@
 #include "../Orxonox.h"
 #include "../particle/ParticleInterface.h"
-#include "weapon_system/AmmunitionDump.h"
-#include "weapon_system/BarrelGun.h"
+#include "weapon/AmmunitionDump.h"
+#include "weapon/BarrelGun.h"
 
 #include "Fighter.h"
Index: code/branches/FICN/src/orxonox/objects/Model.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/Model.h	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/Model.h	(revision 768)
@@ -5,5 +5,5 @@
 
 #include "WorldEntity.h"
-#include "Mesh.h"
+#include "../tools/Mesh.h"
 
 class TiXmlElement; // Forward declaration
Index: code/branches/FICN/src/orxonox/objects/Projectile.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/Projectile.h	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/Projectile.h	(revision 768)
@@ -5,6 +5,6 @@
 
 #include "WorldEntity.h"
-#include "BillboardSet.h"
-#include "Timer.h"
+#include "../tools/BillboardSet.h"
+#include "../tools/Timer.h"
 
 namespace orxonox
Index: code/branches/FICN/src/orxonox/objects/SpaceShip.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/SpaceShip.h	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/SpaceShip.h	(revision 768)
@@ -8,5 +8,5 @@
 
 #include "Model.h"
-#include "BillboardSet.h"
+#include "../tools/BillboardSet.h"
 
 class TiXmlElement;          // Forward declaration
Index: code/branches/FICN/src/orxonox/objects/WorldEntity.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/WorldEntity.h	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/WorldEntity.h	(revision 768)
@@ -13,5 +13,5 @@
 #include "orxonox/core/BaseObject.h"
 #include "Tickable.h"
-#include "Mesh.h"
+#include "../tools/Mesh.h"
 
 namespace orxonox
Index: code/branches/FICN/src/orxonox/objects/test2.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/test2.h	(revision 752)
+++ code/branches/FICN/src/orxonox/objects/test2.h	(revision 768)
@@ -3,5 +3,5 @@
 
 #include "orxonox/core/BaseObject.h"
-#include "Timer.h"
+#include "../tools/Timer.h"
 
 namespace orxonox
Index: code/branches/FICN/src/orxonox/objects/weapon/AmmunitionDump.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/AmmunitionDump.cc	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/AmmunitionDump.cc	(revision 768)
@@ -0,0 +1,113 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "orxonox/Orxonox.h"
+#include "BulletManager.h"
+#include "util/tinyxml/tinyxml.h"
+
+#include "AmmunitionDump.h"
+
+
+namespace orxonox {
+  CreateFactory(AmmunitionDump);
+
+  AmmunitionDump::AmmunitionDump()
+    : numberOfAmmos_(Orxonox::getSingleton()->getBulletMgr()->getNumberOfAmmos()),
+      stock_(new int[numberOfAmmos_]),
+      capacity_(new int[numberOfAmmos_])
+  {
+    RegisterObject(AmmunitionDump);
+
+    for (int i = 0; i < numberOfAmmos_; i++)
+    {
+      stock_[i] = 0;
+      capacity_[i] = 0;
+    }
+  }
+
+
+  AmmunitionDump::~AmmunitionDump()
+  {
+    if (stock_)
+      delete stock_;
+    if (capacity_)
+      delete capacity_;
+  }
+
+  void AmmunitionDump::setDumpSize(const std::string &name, int size)
+  {
+    if (size < 0)
+      return;
+    int id = Orxonox::getSingleton()->getBulletMgr()->getAmmunitionID(name);
+    if (id == -1)
+      return;
+    capacity_[id] = size;
+  }
+
+
+  int AmmunitionDump::store(const std::string &name, int quantity)
+  {
+    int id = Orxonox::getSingleton()->getBulletMgr()->getAmmunitionID(name);
+    if (id == -1)
+      return quantity;
+    stock_[id] += quantity;
+    if (stock_[id] > capacity_[id])
+    {
+      quantity = capacity_[id] - stock_[id];
+      stock_[id] = capacity_[id];
+      return quantity;
+    }
+    else
+      return 0;
+  }
+
+
+  int AmmunitionDump::getAmmunition(const std::string &name, int quantity)
+  {
+    int id = Orxonox::getSingleton()->getBulletMgr()->getAmmunitionID(name);
+    if (id == -1)
+      return 0;
+    if (stock_[id] >= quantity)
+      stock_[id] -= quantity;
+    else
+    {
+      quantity = stock_[id];
+      stock_[id] = 0;
+    }
+    return quantity;
+  }
+
+
+  int AmmunitionDump::getStockSize(const std::string &name)
+  {
+    int id = Orxonox::getSingleton()->getBulletMgr()->getAmmunitionID(name);
+    // FIXME changed = to ==, check if correct
+    if (id == -1)
+      return -1;
+    return stock_[id];
+  }
+}
Index: code/branches/FICN/src/orxonox/objects/weapon/AmmunitionDump.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/AmmunitionDump.h	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/AmmunitionDump.h	(revision 768)
@@ -0,0 +1,71 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _AmmunitionDump_H__
+#define _AmmunitionDump_H__
+
+#include <string>
+
+#include <OgrePrerequisites.h>
+
+#include "../../OrxonoxPrereqs.h"
+
+#include "network/Synchronisable.h"
+//#include "../core/CoreIncludes.h"
+#include "orxonox/core/BaseObject.h"
+
+
+namespace orxonox {
+  class _OrxonoxExport AmmunitionDump : public BaseObject, public network::Synchronisable
+  {
+  public:
+    AmmunitionDump();
+	  ~AmmunitionDump();
+
+    void setDumpSize(const std::string &name, int size);
+
+    int store(const std::string &name, int quantiy);
+
+    int getAmmunition(const std::string &name, int quantity);
+
+    int getStockSize(const std::string &name);
+
+    virtual void loadParams(TiXmlElement* xmlElem) { BaseObject::loadParams(xmlElem); };
+
+
+  protected:
+    inline bool create() { return true; }
+
+    int numberOfAmmos_;
+    int *stock_;
+    int *capacity_;
+  };
+  ExportClass(AmmunitionDump, Orxonox);
+}
+
+#endif /* _AmmunitionDump_H__ */
Index: code/branches/FICN/src/orxonox/objects/weapon/BarrelGun.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/BarrelGun.cc	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/BarrelGun.cc	(revision 768)
@@ -0,0 +1,144 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include <OgreStringConverter.h>
+#include <OgreSceneNode.h>
+#include <OgreEntity.h>
+#include <OgreSceneManager.h>
+
+#include "util/Math.h"
+#include "Bullet.h"
+#include "BulletManager.h"
+#include "AmmunitionDump.h"
+#include "BaseWeapon.h"
+
+#include "BarrelGun.h"
+
+
+namespace orxonox {
+  CreateFactory(BarrelGun);
+
+  BarrelGun::BarrelGun()
+  {
+    RegisterObject(BarrelGun);
+
+    primaryFirePower_ = 100;
+    secondaryFirePower_ = 500;
+    primaryFiringRate_ = 1.0/7.0;
+    secondaryFiringRate_ = 1.0/2.0;
+    primaryBulletSpeed_ = 800;
+    secondaryBulletSpeed_ = 500;
+    magazineSize_ = 25;
+  }
+
+
+  BarrelGun::~BarrelGun()
+  {
+  }
+
+
+  void BarrelGun::primaryFire()
+  {
+    if (leftAmmo_ < 1)
+    {
+      currentState_ = IDLE;
+      return;
+    }
+
+    Ogre::SceneNode *temp = sceneMgr_->getRootSceneNode()->createChildSceneNode(
+          getNode()->getWorldPosition(),
+          getNode()->getWorldOrientation());
+
+    Ogre::Entity* bulletEntity = sceneMgr_->createEntity("BulletEntity"
+      + Ogre::StringConverter::toString(bulletCounter_++), "Barrel.mesh");
+
+    Vector3 speed = (temp->getOrientation() * Vector3(1, 0, 0))
+          .normalisedCopy() * primaryBulletSpeed_;
+    speed += getVelocity();
+
+	  temp->setScale(Vector3(1, 1, 1) * 1.5);
+    temp->roll(Degree(90));
+
+    Bullet* bullet = new Bullet();
+    bullet->setNode(temp);
+    bullet->attachObject(bulletEntity);
+    bullet->setVelocity(speed);
+	  bulletManager_->addBullet(bullet);
+
+    --leftAmmo_;
+  }
+
+
+  void BarrelGun::primaryFiring(float time)
+  {
+    if (time > primaryFiringRate_)
+    {
+      currentState_ = IDLE;
+    }
+  }
+
+
+  void BarrelGun::secondaryFire()
+  {
+    if (leftAmmo_ < 5)
+    {
+      currentState_ = IDLE;
+      return;
+    }
+
+    Ogre::SceneNode *temp = sceneMgr_->getRootSceneNode()->createChildSceneNode(
+          getNode()->getWorldPosition(),
+          getNode()->getWorldOrientation());
+
+    Ogre::Entity* bulletEntity = sceneMgr_->createEntity("BulletEntity"
+      + Ogre::StringConverter::toString(bulletCounter_++), "Barrel.mesh");
+
+    Vector3 speed = (temp->getOrientation() * Vector3(1, 0, 0))
+          .normalisedCopy() * secondaryBulletSpeed_*0.5;
+    speed += getVelocity();
+
+	  temp->setScale(Vector3(1, 1, 1) * 3);
+	  temp->roll(Degree(90));
+
+    Bullet* bullet = new Bullet();
+    bullet->setNode(temp);
+    bullet->attachObject(bulletEntity);
+    bullet->setVelocity(speed);
+	  bulletManager_->addBullet(bullet);
+
+
+    leftAmmo_ -= 5;
+  }
+
+
+  void BarrelGun::secondaryFiring(float time)
+  {
+    if (time > secondaryFiringRate_)
+      currentState_ = IDLE;
+  }
+
+}
Index: code/branches/FICN/src/orxonox/objects/weapon/BarrelGun.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/BarrelGun.h	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/BarrelGun.h	(revision 768)
@@ -0,0 +1,65 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _BarrelGun_H__
+#define _BarrelGun_H__
+
+#include <OgrePrerequisites.h>
+
+#include "../../OrxonoxPrereqs.h"
+
+#include "BaseWeapon.h"
+
+
+namespace orxonox {
+  class _OrxonoxExport BarrelGun : public BaseWeapon
+  {
+ public:
+    BarrelGun();
+	  virtual ~BarrelGun();
+
+    //virtual void tick(float dt);
+
+  protected:
+    void primaryFire();
+
+    void primaryFiring(float);
+
+    void secondaryFire();
+
+    void secondaryFiring(float);
+
+  public:
+
+  protected:
+
+  };
+  ExportClass(BarrelGun, Orxonox);
+}
+
+#endif /* _BarrelGun_H__ */
Index: code/branches/FICN/src/orxonox/objects/weapon/BaseWeapon.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/BaseWeapon.cc	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/BaseWeapon.cc	(revision 768)
@@ -0,0 +1,183 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include <OgreStringConverter.h>
+#include <OgreSceneNode.h>
+#include <OgreEntity.h>
+#include <OgreSceneManager.h>
+
+#include "util/Math.h"
+#include "../../Orxonox.h"
+#include "Bullet.h"
+#include "BulletManager.h"
+#include "AmmunitionDump.h"
+
+#include "BaseWeapon.h"
+
+
+namespace orxonox {
+  float BaseWeapon::nextActionValidityPeriod_s = 0.5;
+
+  BaseWeapon::BaseWeapon()
+    : sceneMgr_(Orxonox::getSingleton()->getSceneManager()),
+      bulletCounter_(0),
+      bulletManager_(Orxonox::getSingleton()->getBulletMgr()),
+      ammoDump_(NULL),
+      primaryFireRequest_(false), secondaryFireRequest_(false),
+      totalTime_(0.0f), actionStartTime_(0.0f),
+      currentState_(IDLE), secondaryFired_(false),
+      nextAction_(NOTHING), actionAdded_(false),
+      timeSinceNextActionAdded_(0.0f),
+      leftAmmo_(0)
+  {
+    RegisterObject(BaseWeapon);
+  }
+
+
+  BaseWeapon::~BaseWeapon()
+  {
+  }
+
+
+  bool BaseWeapon::addAction(const Action act)
+  {
+    if (nextAction_ == NOTHING)
+    {
+      nextAction_ = act;
+      actionAdded_ = true;
+      return true;
+    }
+    else
+      return false;
+  }
+
+
+  void BaseWeapon::primaryFireRequest()
+  {
+    primaryFireRequest_ = true;
+  }
+
+
+  void BaseWeapon::secondaryFireRequest()
+  {
+    secondaryFireRequest_ = true;
+  }
+
+
+  void BaseWeapon::tick(float dt)
+  {
+    totalTime_ += dt;
+    // process action adder
+    if (actionAdded_)
+    {
+      timeSinceNextActionAdded_ = totalTime_;
+      actionAdded_ = false;
+    }
+
+    switch (currentState_)
+    {
+    case IDLE:
+      break;
+
+    case PRIMARY_FIRE:
+      primaryFiring(totalTime_ - actionStartTime_);
+      break;
+
+    case SECONDARY_FIRE:
+      secondaryFiring(totalTime_ - actionStartTime_);
+      break;
+
+    case RELOADING:
+      break;
+
+    case CHANGING_AMMO:
+      break;
+    }
+
+    if (currentState_ == IDLE)
+    {
+      // first, process next action
+      if (nextAction_ != NOTHING)
+      {
+        actionStartTime_ = totalTime_;
+        switch (nextAction_)
+        {
+        case RELOAD:
+          leftAmmo_ += ammoDump_->getAmmunition("Barrel", magazineSize_ - leftAmmo_);
+          break;
+
+        case CHANGE_AMMO:
+          break;
+
+        case SPECIAL:
+          break;
+
+        default:
+          break;
+        }
+
+        // pay attention when multithreaded!
+        nextAction_ = NOTHING;
+      }
+      else
+      {
+        // secondly, execute firing
+        if (primaryFireRequest_ && !(secondaryFired_ && secondaryFireRequest_))
+        {
+          actionStartTime_ = totalTime_;
+          currentState_ = PRIMARY_FIRE;
+          secondaryFired_ = false;
+          primaryFire();
+        }
+        else if (secondaryFireRequest_)
+        {
+          actionStartTime_ = totalTime_;
+          currentState_ = SECONDARY_FIRE;
+          secondaryFired_ = true;
+          secondaryFire();
+        }
+      }
+    }
+
+    primaryFireRequest_ = false;
+    secondaryFireRequest_ = false;
+
+    if (totalTime_ - timeSinceNextActionAdded_ > nextActionValidityPeriod_s)
+      nextAction_ = NOTHING;
+  }
+
+
+  int BaseWeapon::getAmmoState()
+  {
+    return leftAmmo_;
+  }
+
+  void BaseWeapon::setAmmoDump(AmmunitionDump* dump)
+  {
+    this->ammoDump_ = dump;
+  }
+}
Index: code/branches/FICN/src/orxonox/objects/weapon/BaseWeapon.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/BaseWeapon.h	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/BaseWeapon.h	(revision 768)
@@ -0,0 +1,127 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _BaseWeapon_H__
+#define _BaseWeapon_H__
+
+#include <OgrePrerequisites.h>
+
+#include "../../OrxonoxPrereqs.h"
+
+#include "../Model.h"
+
+
+namespace orxonox {
+  class _OrxonoxExport BaseWeapon : public Model
+  {
+  public:
+    enum Action {
+      NOTHING  = 0,
+      RELOAD   = 1,
+      CHANGE_AMMO  = 2,
+      SPECIAL  = 3
+    };
+
+  protected:
+    enum State {
+      IDLE = 0,
+      PRIMARY_FIRE = 1,
+      SECONDARY_FIRE = 2,
+      RELOADING = 3,
+      CHANGING_AMMO = 4,
+    };
+
+  public:
+    BaseWeapon();
+	  virtual ~BaseWeapon();
+
+    bool addAction(const Action);
+
+    void primaryFireRequest();
+
+    void secondaryFireRequest();
+
+    int getAmmoState();
+
+    void setAmmoDump(AmmunitionDump*);
+
+    inline virtual void loadParams(TiXmlElement* xmlElem) { Model::loadParams(xmlElem); };
+
+    virtual void tick(float dt);
+
+  protected:
+    virtual void primaryFire() = 0;
+
+    virtual void primaryFiring(float) = 0;
+
+    virtual void secondaryFire() = 0;
+
+    virtual void secondaryFiring(float) = 0;
+
+    virtual void registerAllVariables() { };
+
+  public:
+
+  protected:
+    Ogre::SceneManager *sceneMgr_;
+
+    int bulletCounter_;
+    BulletManager *bulletManager_;
+
+    AmmunitionDump *ammoDump_;
+
+    bool primaryFireRequest_;
+    bool secondaryFireRequest_;
+
+    float totalTime_;
+    float actionStartTime_;
+
+    State currentState_;
+    bool secondaryFired_;
+
+    Action nextAction_;
+    bool actionAdded_;
+    float timeSinceNextActionAdded_;
+    static float nextActionValidityPeriod_s;
+
+    // weapon properties
+    int leftAmmo_;
+    float primaryFirePower_;
+    float secondaryFirePower_;
+    float primaryFiringRate_;
+    float secondaryFiringRate_;
+    Real primaryBulletSpeed_;
+    Real secondaryBulletSpeed_;
+
+    int magazineSize_;
+
+  };
+  ExportAbstractClass(BaseWeapon, Orxonox);
+}
+
+#endif /* _BaseWeapon_H__ */
Index: code/branches/FICN/src/orxonox/objects/weapon/Bullet.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/Bullet.cc	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/Bullet.cc	(revision 768)
@@ -0,0 +1,41 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "Bullet.h"
+
+namespace orxonox {
+  CreateFactory(Bullet);
+
+  Bullet::Bullet()
+  {
+    RegisterObject(Bullet);
+  }
+
+  Bullet::~Bullet()
+  {
+  }
+}
Index: code/branches/FICN/src/orxonox/objects/weapon/Bullet.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/Bullet.h	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/Bullet.h	(revision 768)
@@ -0,0 +1,52 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _Bullet_H__
+#define _Bullet_H__
+
+#include <OgrePrerequisites.h>
+
+#include "../../OrxonoxPrereqs.h"
+
+#include "../Model.h"
+
+namespace orxonox {
+  class _OrxonoxExport Bullet : public Model
+  {
+  public:
+	  Bullet();
+	  ~Bullet();
+
+    virtual void tick(float dt) { }
+
+    inline virtual void loadParams(TiXmlElement* xmlElem) { Model::loadParams(xmlElem); };
+ };
+  ExportClass(Bullet, Orxonox);
+}
+
+#endif /* _Bullet_H__ */
Index: code/branches/FICN/src/orxonox/objects/weapon/BulletManager.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/BulletManager.cc	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/BulletManager.cc	(revision 768)
@@ -0,0 +1,102 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "BulletManager.h"
+#include "Bullet.h"
+
+
+namespace orxonox {
+  CreateFactory(BulletManager);
+
+  BulletManager::BulletManager() : bulletsSize_(8), bulletsIndex_(0)
+  {
+    RegisterObject(BulletManager);
+    bullets_ = new Bullet*[bulletsSize_];
+  }
+
+
+  BulletManager::~BulletManager()
+  {
+    // clean up the bullet list
+    if (bullets_)
+    {
+      for (int i = 0; i < bulletsIndex_; i++)
+        delete bullets_[i];
+      delete bullets_;
+    }
+  }
+
+
+  void BulletManager::addBullet(Bullet *bullet)
+  {
+    // resize array if neccessary (double the size then)
+    if (bulletsIndex_ >= bulletsSize_)
+    {
+      // redimension the array
+      Bullet **tempArray = new Bullet*[2*bulletsSize_];
+      for (int i = 0; i < bulletsSize_; i++)
+        tempArray[i] = bullets_[i];
+      bulletsSize_ *= 2;
+      delete bullets_;
+      bullets_ = tempArray;
+    }
+
+    // add the bullet to the list
+    bullets_[bulletsIndex_++] = bullet;
+  }
+
+
+  void BulletManager::tick(float dt)
+  {
+    // update the bullet positions
+    for (int i = 0; i < bulletsIndex_; i++)
+    {
+      bullets_[i]->getNode()->translate(bullets_[i]->getVelocity()*dt);
+      //bullets_[i]->getNode()->yaw(Degree(dt*100));
+      //bullets_[i]->getNode()->roll(Degree(dt*300));
+    }
+  }
+
+  int BulletManager::getAmmunitionID(const std::string &ammoName)
+  {
+    std::string ammoTypes[] = { "Energy Cell", "Barrel", "Lead Shot" };
+    int ammoTypesLength = 3;
+
+    for (int i = 0; i < ammoTypesLength; i++)
+    {
+      if (ammoTypes[i] == ammoName)
+        return i;
+    }
+    return -1;
+  }
+
+  int BulletManager::getNumberOfAmmos()
+  {
+    return 3;
+  }
+
+}
Index: code/branches/FICN/src/orxonox/objects/weapon/BulletManager.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/BulletManager.h	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/BulletManager.h	(revision 768)
@@ -0,0 +1,72 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _BulletManager_H__
+#define _BulletManager_H__
+
+#include <string>
+
+#include <OgrePrerequisites.h>
+
+#include "../../OrxonoxPrereqs.h"
+
+#include "network/Synchronisable.h"
+#include "util/tinyxml/tinyxml.h"
+#include "../../core/CoreIncludes.h"
+#include "orxonox/core/BaseObject.h"
+#include "../Tickable.h"
+
+namespace orxonox {
+  class _OrxonoxExport BulletManager : public BaseObject, public network::Synchronisable, public Tickable
+  {
+  public:
+    BulletManager();
+	  virtual ~BulletManager();
+
+    void addBullet(Bullet*);
+
+    int getAmmunitionID(const std::string&);
+
+    int getNumberOfAmmos();
+
+    virtual void tick(float dt);
+
+    inline virtual void loadParams(TiXmlElement* xmlElem) { BaseObject::loadParams(xmlElem); };
+
+  protected:
+    inline bool create() { return true; }
+
+    // Bullet array
+	  Bullet **bullets_;
+	  int bulletsSize_;
+	  int bulletsIndex_;
+  };
+  ExportClass(BulletManager, Orxonox);
+}
+
+#endif /* _BulletManager_H__ */
Index: code/branches/FICN/src/orxonox/objects/weapon/WeaponStation.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/WeaponStation.cc	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/WeaponStation.cc	(revision 768)
@@ -0,0 +1,68 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "BaseWeapon.h"
+#include "WeaponStation.h"
+
+
+namespace orxonox {
+  WeaponStation::WeaponStation(int stationSize)
+        : slots_(new BaseWeapon*[stationSize]),
+          lastActiveSlotIndex_(-1), stationSize_(stationSize)
+  {
+  	//slots_ = new BaseWeapon*[stationSize];
+  }
+
+
+  WeaponStation::~WeaponStation()
+  {
+    if (slots_)
+      delete slots_;
+    // when factory available: delete weapons too
+  }
+
+
+  bool WeaponStation::addWeapon(BaseWeapon *weapon)
+  {
+    if (lastActiveSlotIndex_ == stationSize_ - 1)
+      return false;
+
+    // this is ugly, but for the time being, it has to fit.
+    slots_[++lastActiveSlotIndex_] = weapon;
+    selectedSlot_ = slots_ + lastActiveSlotIndex_;
+    return true;
+  }
+
+
+  BaseWeapon* WeaponStation::selectWeapon(int slotNumber)
+  {
+    if (slotNumber < lastActiveSlotIndex_)
+      return NULL;
+    return slots_[slotNumber];
+  }
+
+}
Index: code/branches/FICN/src/orxonox/objects/weapon/WeaponStation.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/weapon/WeaponStation.h	(revision 768)
+++ code/branches/FICN/src/orxonox/objects/weapon/WeaponStation.h	(revision 768)
@@ -0,0 +1,65 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _WeaponStation_H__
+#define _WeaponStation_H__
+
+#include <OgrePrerequisites.h>
+
+#include "../../OrxonoxPrereqs.h"
+
+
+namespace orxonox {
+  class _OrxonoxExport WeaponStation
+  {
+  public:
+    WeaponStation(int slotSize);
+	  ~WeaponStation();
+
+    bool addWeapon(BaseWeapon*);
+
+    //bool removeCurrentWeapon();
+
+    // TODO: access every weapon by name
+    BaseWeapon* selectWeapon(int slotNumber);
+
+  protected:
+
+  public:
+
+  protected:
+    // slot management
+    BaseWeapon **slots_;
+    BaseWeapon **selectedSlot_;
+    int lastActiveSlotIndex_;
+    int stationSize_;
+
+  };
+}
+
+#endif /* _WeaponStation_H__ */
Index: code/branches/FICN/src/orxonox/particle/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/particle/CMakeLists.txt	(revision 752)
+++ 	(revision )
@@ -1,11 +1,0 @@
-PROJECT(Orxonox)
-
-SET(SRC_FILES
-  ParticleInterface.cc
-)
-
-IF(WIN32)
-  ADD_LIBRARY(particle ${SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(particle SHARED ${SRC_FILES})
-ENDIF(WIN32)
Index: code/branches/FICN/src/orxonox/tools/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/tools/CMakeLists.txt	(revision 752)
+++ 	(revision )
@@ -1,13 +1,0 @@
-PROJECT(Orxonox)
-
-SET(SRC_FILES
-  BillboardSet.cc
-  Light.cc
-  Mesh.cc
-)
-
-IF(WIN32)
-  ADD_LIBRARY(tools ${SRC_FILES})
-ELSE(WIN32)
-  ADD_LIBRARY(tools SHARED ${SRC_FILES})
-ENDIF(WIN32)
Index: code/branches/FICN/src/util/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/util/CMakeLists.txt	(revision 752)
+++ code/branches/FICN/src/util/CMakeLists.txt	(revision 768)
@@ -1,26 +1,20 @@
 PROJECT(Orxonox)
 
-PROJECT(Orxonox)
+AUX_SOURCE_DIRECTORY(tinyxml TINYXML_SRC_FILES)
 
-INCLUDE_DIRECTORIES(tinyxml)
-
-SET (SRC_FILES
-  tinyxml/tinystr.cc
-  tinyxml/tinyxml.cc
-  tinyxml/tinyxmlerror.cc
-  tinyxml/tinyxmlparser.cc
-  tinyxml/ticpp.cc
+SET (UTIL_SRC_FILES
+  ${TINYXML_SRC_FILES}
   substring.cc
 )
 
 IF(WIN32)
-  ADD_LIBRARY(util ${SRC_FILES})
+  ADD_LIBRARY( util ${UTIL_SRC_FILES} )
 ELSE(WIN32)
-  ADD_LIBRARY(util SHARED ${SRC_FILES})
+  ADD_LIBRARY( util SHARED ${UTIL_SRC_FILES} )
 ENDIF(WIN32)
-
+SET_TARGET_PROPERTIES( util PROPERTIES LINK_FLAGS "--no-undefined" )
 
 
 IF(TESTING_ENABLED)
-ADD_SUBDIRECTORY(testing)
+  ADD_SUBDIRECTORY(testing)
 ENDIF(TESTING_ENABLED)
Index: code/branches/FICN/visual_studio/FICN.sln
===================================================================
--- code/branches/FICN/visual_studio/FICN.sln	(revision 752)
+++ 	(revision )
@@ -1,106 +1,0 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Network", "network.vcproj", "{35575B59-E1AE-40E8-89C4-2862B5B09B68}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "core.vcproj", "{271715F3-5B90-4110-A552-70C788084A86}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Orxonox", "benixonox.vcproj", "{0B6C5CFD-F91B-432A-80A3-2610F61E060B}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{35575B59-E1AE-40E8-89C4-2862B5B09B68} = {35575B59-E1AE-40E8-89C4-2862B5B09B68}
-		{E283910F-F911-40FB-A09D-D025CA821912} = {E283910F-F911-40FB-A09D-D025CA821912}
-		{4733BD1A-E04C-458D-8BFB-5010250EA497} = {4733BD1A-E04C-458D-8BFB-5010250EA497}
-		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Audio", "audio.vcproj", "{4733BD1A-E04C-458D-8BFB-5010250EA497}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Loader", "loader.vcproj", "{E283910F-F911-40FB-A09D-D025CA821912}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
-		{4733BD1A-E04C-458D-8BFB-5010250EA497} = {4733BD1A-E04C-458D-8BFB-5010250EA497}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TinyXML", "tinyxml.vcproj", "{2240ECD7-2F48-4431-8E1B-25466A384CCC}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestProj", "testproj.vcproj", "{97B226C5-8FD9-4A1E-B50B-5CBF79CF46F5}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Debug|Win32.ActiveCfg = Debug|Win32
-		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Debug|Win32.Build.0 = Debug|Win32
-		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Release|Win32.ActiveCfg = Release|Win32
-		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Release|Win32.Build.0 = Release|Win32
-		{271715F3-5B90-4110-A552-70C788084A86}.Debug|Win32.ActiveCfg = Debug|Win32
-		{271715F3-5B90-4110-A552-70C788084A86}.Debug|Win32.Build.0 = Debug|Win32
-		{271715F3-5B90-4110-A552-70C788084A86}.Release|Win32.ActiveCfg = Release|Win32
-		{271715F3-5B90-4110-A552-70C788084A86}.Release|Win32.Build.0 = Release|Win32
-		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Debug|Win32.Build.0 = Debug|Win32
-		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Release|Win32.ActiveCfg = Release|Win32
-		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Release|Win32.Build.0 = Release|Win32
-		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Debug|Win32.Build.0 = Debug|Win32
-		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Release|Win32.ActiveCfg = Release|Win32
-		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Release|Win32.Build.0 = Release|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Debug|Win32.Build.0 = Debug|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Release|Win32.ActiveCfg = Release|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Release|Win32.Build.0 = Release|Win32
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Debug|Win32.Build.0 = Debug|Win32
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Release|Win32.ActiveCfg = Release|Win32
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Release|Win32.Build.0 = Release|Win32
-		{97B226C5-8FD9-4A1E-B50B-5CBF79CF46F5}.Debug|Win32.ActiveCfg = Debug|Win32
-		{97B226C5-8FD9-4A1E-B50B-5CBF79CF46F5}.Release|Win32.ActiveCfg = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
Index: code/branches/FICN/visual_studio/FICN_test.sln
===================================================================
--- code/branches/FICN/visual_studio/FICN_test.sln	(revision 768)
+++ code/branches/FICN/visual_studio/FICN_test.sln	(revision 768)
@@ -0,0 +1,95 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Network", "network.vcproj", "{35575B59-E1AE-40E8-89C4-2862B5B09B68}"
+	ProjectSection(WebsiteProperties) = preProject
+		Debug.AspNetCompiler.Debug = "True"
+		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "core.vcproj", "{271715F3-5B90-4110-A552-70C788084A86}"
+	ProjectSection(WebsiteProperties) = preProject
+		Debug.AspNetCompiler.Debug = "True"
+		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Orxonox", "benixonox.vcproj", "{0B6C5CFD-F91B-432A-80A3-2610F61E060B}"
+	ProjectSection(WebsiteProperties) = preProject
+		Debug.AspNetCompiler.Debug = "True"
+		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{35575B59-E1AE-40E8-89C4-2862B5B09B68} = {35575B59-E1AE-40E8-89C4-2862B5B09B68}
+		{E283910F-F911-40FB-A09D-D025CA821912} = {E283910F-F911-40FB-A09D-D025CA821912}
+		{4733BD1A-E04C-458D-8BFB-5010250EA497} = {4733BD1A-E04C-458D-8BFB-5010250EA497}
+		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Audio", "audio.vcproj", "{4733BD1A-E04C-458D-8BFB-5010250EA497}"
+	ProjectSection(WebsiteProperties) = preProject
+		Debug.AspNetCompiler.Debug = "True"
+		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Loader", "loader.vcproj", "{E283910F-F911-40FB-A09D-D025CA821912}"
+	ProjectSection(WebsiteProperties) = preProject
+		Debug.AspNetCompiler.Debug = "True"
+		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
+		{4733BD1A-E04C-458D-8BFB-5010250EA497} = {4733BD1A-E04C-458D-8BFB-5010250EA497}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Util", "util.vcproj", "{2240ECD7-2F48-4431-8E1B-25466A384CCC}"
+	ProjectSection(WebsiteProperties) = preProject
+		Debug.AspNetCompiler.Debug = "True"
+		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Debug|Win32.ActiveCfg = Debug|Win32
+		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Debug|Win32.Build.0 = Debug|Win32
+		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Release|Win32.ActiveCfg = Release|Win32
+		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Release|Win32.Build.0 = Release|Win32
+		{271715F3-5B90-4110-A552-70C788084A86}.Debug|Win32.ActiveCfg = Debug|Win32
+		{271715F3-5B90-4110-A552-70C788084A86}.Debug|Win32.Build.0 = Debug|Win32
+		{271715F3-5B90-4110-A552-70C788084A86}.Release|Win32.ActiveCfg = Release|Win32
+		{271715F3-5B90-4110-A552-70C788084A86}.Release|Win32.Build.0 = Release|Win32
+		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Debug|Win32.Build.0 = Debug|Win32
+		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Release|Win32.ActiveCfg = Release|Win32
+		{0B6C5CFD-F91B-432A-80A3-2610F61E060B}.Release|Win32.Build.0 = Release|Win32
+		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Debug|Win32.Build.0 = Debug|Win32
+		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Release|Win32.ActiveCfg = Release|Win32
+		{4733BD1A-E04C-458D-8BFB-5010250EA497}.Release|Win32.Build.0 = Release|Win32
+		{E283910F-F911-40FB-A09D-D025CA821912}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E283910F-F911-40FB-A09D-D025CA821912}.Debug|Win32.Build.0 = Debug|Win32
+		{E283910F-F911-40FB-A09D-D025CA821912}.Release|Win32.ActiveCfg = Release|Win32
+		{E283910F-F911-40FB-A09D-D025CA821912}.Release|Win32.Build.0 = Release|Win32
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Debug|Win32.Build.0 = Debug|Win32
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Release|Win32.ActiveCfg = Release|Win32
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: code/branches/FICN/visual_studio/benixonox.vcproj
===================================================================
--- code/branches/FICN/visual_studio/benixonox.vcproj	(revision 752)
+++ code/branches/FICN/visual_studio/benixonox.vcproj	(revision 768)
@@ -197,8 +197,4 @@
 				</File>
 				<File
-					RelativePath="..\src\orxonox\objects\BillboardSet.cc"
-					>
-				</File>
-				<File
 					RelativePath="..\src\orxonox\objects\Camera.cc"
 					>
@@ -213,12 +209,4 @@
 				</File>
 				<File
-					RelativePath="..\src\orxonox\objects\Light.cc"
-					>
-				</File>
-				<File
-					RelativePath="..\src\orxonox\objects\Mesh.cc"
-					>
-				</File>
-				<File
 					RelativePath="..\src\orxonox\objects\Model.cc"
 					>
@@ -241,32 +229,44 @@
 				</File>
 				<File
+					RelativePath="..\src\orxonox\objects\test1.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\objects\test2.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\objects\test3.cc"
+					>
+				</File>
+				<File
 					RelativePath="..\src\orxonox\objects\WorldEntity.cc"
 					>
 				</File>
 				<Filter
-					Name="weapon_system"
-					>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\AmmunitionDump.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\BarrelGun.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\BaseWeapon.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\Bullet.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\BulletManager.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\WeaponStation.cc"
+					Name="weapon"
+					>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\AmmunitionDump.cc"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\BarrelGun.cc"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\BaseWeapon.cc"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\Bullet.cc"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\BulletManager.cc"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\WeaponStation.cc"
 						>
 					</File>
@@ -278,4 +278,20 @@
 				<File
 					RelativePath="..\src\orxonox\particle\ParticleInterface.cc"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="tools"
+				>
+				<File
+					RelativePath="..\src\orxonox\tools\BillboardSet.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\tools\Light.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\tools\Mesh.cc"
 					>
 				</File>
@@ -327,8 +343,4 @@
 				</File>
 				<File
-					RelativePath="..\src\orxonox\objects\BillboardSet.h"
-					>
-				</File>
-				<File
 					RelativePath="..\src\orxonox\objects\Camera.h"
 					>
@@ -343,12 +355,4 @@
 				</File>
 				<File
-					RelativePath="..\src\orxonox\objects\Light.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\orxonox\objects\Mesh.h"
-					>
-				</File>
-				<File
 					RelativePath="..\src\orxonox\objects\Model.h"
 					>
@@ -371,40 +375,52 @@
 				</File>
 				<File
+					RelativePath="..\src\orxonox\objects\Test.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\objects\test1.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\objects\test2.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\objects\test3.h"
+					>
+				</File>
+				<File
 					RelativePath="..\src\orxonox\objects\Tickable.h"
 					>
 				</File>
 				<File
-					RelativePath="..\src\orxonox\objects\Timer.h"
-					>
-				</File>
-				<File
 					RelativePath="..\src\orxonox\objects\WorldEntity.h"
 					>
 				</File>
 				<Filter
-					Name="weapon_system"
-					>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\AmmunitionDump.h"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\BarrelGun.h"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\BaseWeapon.h"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\Bullet.h"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\BulletManager.h"
-						>
-					</File>
-					<File
-						RelativePath="..\src\orxonox\objects\weapon_system\WeaponStation.h"
+					Name="weapon"
+					>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\AmmunitionDump.h"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\BarrelGun.h"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\BaseWeapon.h"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\Bullet.h"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\BulletManager.h"
+						>
+					</File>
+					<File
+						RelativePath="..\src\orxonox\objects\weapon\WeaponStation.h"
 						>
 					</File>
@@ -420,44 +436,20 @@
 			</Filter>
 			<Filter
-				Name="misc"
-				>
-				<File
-					RelativePath="..\src\misc\ColourValue.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Math.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Matrix3.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Quaternion.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Sleep.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\String2Number.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Tokenizer.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Vector2.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Vector3.h"
-					>
-				</File>
-				<File
-					RelativePath="..\src\misc\Vector4.h"
+				Name="tools"
+				>
+				<File
+					RelativePath="..\src\orxonox\tools\BillboardSet.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\tools\Light.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\tools\Mesh.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\orxonox\tools\Timer.h"
 					>
 				</File>
Index: code/branches/FICN/visual_studio/loader.vcproj
===================================================================
--- code/branches/FICN/visual_studio/loader.vcproj	(revision 752)
+++ code/branches/FICN/visual_studio/loader.vcproj	(revision 768)
@@ -54,4 +54,5 @@
 				Name="VCLinkerTool"
 				AdditionalDependencies="OgreMain_d.lib Orxonox_d.lib"
+				OutputFile="$(OutDir)\$(ProjectName)_d.dll"
 				AdditionalLibraryDirectories="$(OutDir)"
 			/>
Index: code/branches/FICN/visual_studio/tinyxml.vcproj
===================================================================
--- code/branches/FICN/visual_studio/tinyxml.vcproj	(revision 752)
+++ 	(revision )
@@ -1,172 +1,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="TinyXML"
-	ProjectGUID="{2240ECD7-2F48-4431-8E1B-25466A384CCC}"
-	RootNamespace="FICN"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			ConfigurationType="4"
-			InheritedPropertySheets=".\base_properties_debug.vsprops"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			ConfigurationType="4"
-			InheritedPropertySheets=".\base_properties_release.vsprops"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\src\tinyxml\tinystr.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tinyxml\tinyxml.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tinyxml\tinyxmlerror.cc"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tinyxml\tinyxmlparser.cc"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\src\tinyxml\tinystr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tinyxml\tinyxml.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tinyxml\TinyXMLPrereqs.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
Index: code/branches/FICN/visual_studio/tinyxml_properties.vsprops
===================================================================
--- code/branches/FICN/visual_studio/tinyxml_properties.vsprops	(revision 752)
+++ 	(revision )
@@ -1,7 +1,0 @@
-<?xml version="1.0"?>
-<VisualStudioPropertySheet 
-	ProjectType="Visual C++" 
-	Version="8.00" 
-	Name="tinyxml_properties"
-	>
-</VisualStudioPropertySheet>
Index: code/branches/FICN/visual_studio/util.vcproj
===================================================================
--- code/branches/FICN/visual_studio/util.vcproj	(revision 768)
+++ code/branches/FICN/visual_studio/util.vcproj	(revision 768)
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="Util"
+	ProjectGUID="{2240ECD7-2F48-4431-8E1B-25466A384CCC}"
+	RootNamespace="FICN"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			ConfigurationType="4"
+			InheritedPropertySheets=".\base_properties_debug.vsprops"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories=""
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			ConfigurationType="4"
+			InheritedPropertySheets=".\base_properties_release.vsprops"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories=""
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\src\util\substring.cc"
+				>
+			</File>
+			<Filter
+				Name="tinyxml"
+				>
+				<File
+					RelativePath="..\src\util\tinyxml\ticpp.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\tinystr.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\tinyxml.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\tinyxmlerror.cc"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\tinyxmlparser.cc"
+					>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\src\util\Convert.h"
+				>
+			</File>
+			<File
+				RelativePath="..\src\util\Math.h"
+				>
+			</File>
+			<File
+				RelativePath="..\src\util\Sleep.h"
+				>
+			</File>
+			<File
+				RelativePath="..\src\util\String2Number.h"
+				>
+			</File>
+			<File
+				RelativePath="..\src\util\substring.h"
+				>
+			</File>
+			<File
+				RelativePath="..\src\util\Tokenizer.h"
+				>
+			</File>
+			<Filter
+				Name="tinyxml"
+				>
+				<File
+					RelativePath="..\src\util\tinyxml\ticpp.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\ticpprc.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\tinystr.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\tinyxml.h"
+					>
+				</File>
+				<File
+					RelativePath="..\src\util\tinyxml\TinyXMLPrereqs.h"
+					>
+				</File>
+			</Filter>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: code/branches/FICN/visual_studio/util_properties.vsprops
===================================================================
--- code/branches/FICN/visual_studio/util_properties.vsprops	(revision 768)
+++ code/branches/FICN/visual_studio/util_properties.vsprops	(revision 768)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<VisualStudioPropertySheet 
+	ProjectType="Visual C++" 
+	Version="8.00" 
+	Name="tinyxml_properties"
+	>
+</VisualStudioPropertySheet>
