Index: /code/branches/FICN/src/audio/AudioBuffer.h
===================================================================
--- /code/branches/FICN/src/audio/AudioBuffer.h	(revision 728)
+++ /code/branches/FICN/src/audio/AudioBuffer.h	(revision 729)
@@ -4,7 +4,9 @@
 #include "AudioIncludes.h"
 
+#include "AudioPrereqs.h"
+
 namespace audio
 {
-	class AudioBuffer
+	class _AudioExport AudioBuffer
 	{
 	public:
Index: /code/branches/FICN/src/audio/AudioManager.h
===================================================================
--- /code/branches/FICN/src/audio/AudioManager.h	(revision 728)
+++ /code/branches/FICN/src/audio/AudioManager.h	(revision 729)
@@ -3,4 +3,6 @@
 
 #include "AudioIncludes.h"
+
+#include "AudioPrereqs.h"
 
 #include "AudioBuffer.h"
@@ -10,5 +12,5 @@
 namespace audio
 {
-	class AudioManager
+	class _AudioExport AudioManager
 	{
 	public:
Index: /code/branches/FICN/src/audio/AudioSource.h
===================================================================
--- /code/branches/FICN/src/audio/AudioSource.h	(revision 728)
+++ /code/branches/FICN/src/audio/AudioSource.h	(revision 729)
@@ -4,7 +4,9 @@
 #include "AudioIncludes.h"
 
+#include "AudioPrereqs.h"
+
 namespace audio
 {
-	class AudioSource
+	class _AudioExport AudioSource
 	{
 	public:
Index: /code/branches/FICN/src/audio/AudioStream.h
===================================================================
--- /code/branches/FICN/src/audio/AudioStream.h	(revision 728)
+++ /code/branches/FICN/src/audio/AudioStream.h	(revision 729)
@@ -4,9 +4,11 @@
 #include "AudioIncludes.h"
 
+#include "AudioPrereqs.h"
+
 namespace audio
 {
   #define BUFFER_SIZE (4096 * 4)
 
-  class AudioStream
+  class _AudioExport AudioStream
   {
     public:
Index: /code/branches/FICN/src/orxonox/GraphicsEngine.h
===================================================================
--- /code/branches/FICN/src/orxonox/GraphicsEngine.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/GraphicsEngine.h	(revision 729)
@@ -13,4 +13,6 @@
 #include <OgreSceneManager.h>
 
+#include "OrxonoxPrereqs.h"
+
 
 namespace orxonox {
@@ -19,5 +21,5 @@
    * graphics engine manager class
  */
-  class GraphicsEngine {
+  class _OrxonoxExport GraphicsEngine {
     public:
       GraphicsEngine();
Index: /code/branches/FICN/src/orxonox/InputManager.h
===================================================================
--- /code/branches/FICN/src/orxonox/InputManager.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/InputManager.h	(revision 729)
@@ -16,5 +16,7 @@
 #include <OgreRenderWindow.h>
 
-class InputManager : public OIS::KeyListener, public OIS::MouseListener, public OIS::JoyStickListener {
+#include "OrxonoxPrereqs.h"
+
+class _OrxonoxExport InputManager : public OIS::KeyListener, public OIS::MouseListener, public OIS::JoyStickListener {
   public:
     virtual ~InputManager( void );
Index: /code/branches/FICN/src/orxonox/Orxonox.cc
===================================================================
--- /code/branches/FICN/src/orxonox/Orxonox.cc	(revision 728)
+++ /code/branches/FICN/src/orxonox/Orxonox.cc	(revision 729)
@@ -71,8 +71,7 @@
 #include "hud/HUD.h"
 #include "objects/weapon_system/BulletManager.h"
-
 #include "GraphicsEngine.h"
+
 #include "Orxonox.h"
-
 
 namespace orxonox
Index: /code/branches/FICN/src/orxonox/Orxonox.h
===================================================================
--- /code/branches/FICN/src/orxonox/Orxonox.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/Orxonox.h	(revision 729)
@@ -15,4 +15,5 @@
 #include "OrxonoxPrereqs.h"
 #include "loader/LoaderPrereqs.h"
+
 #include "GraphicsEngine.h"
 
@@ -29,5 +30,5 @@
   };
 
-  class Orxonox
+  class _OrxonoxExport Orxonox
   {
     public:
Index: /code/branches/FICN/src/orxonox/OrxonoxPlatform.h
===================================================================
--- /code/branches/FICN/src/orxonox/OrxonoxPlatform.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/OrxonoxPlatform.h	(revision 729)
@@ -116,22 +116,4 @@
 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
 
-// If we're not including this from a client build, specify that the stuff
-// should get exported. Otherwise, import it.
-#	 if defined( ORXONOX_STATIC_LIB )
-     // don't use exports/imports when building statically
-#    define _OrxonoxExport
-#    define _OrxonoxPrivate
-#  else
-#    if defined( ORXONOX_NONCLIENT_BUILD )
-#      define _OrxonoxExport __declspec( dllexport )
-#    else
-#      if defined( __MINGW32__ )
-#        define _OrxonoxExport
-#      else
-#       	define _OrxonoxExport __declspec( dllimport )
-#      endif
-#    endif
-#    define _OrxonoxPrivate
-#  endif
 // Win32 compilers use _DEBUG for specifying debug builds.
 #  ifdef _DEBUG
@@ -162,12 +144,4 @@
 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_LINUX || ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
 
-// Enable GCC symbol visibility
-#  if defined( ORXONOX_GCC_VISIBILITY )
-#    define _OrxonoxExport  __attribute__ ((visibility("default")))
-#    define _OrxonoxPrivate __attribute__ ((visibility("hidden")))
-#  else
-#    define _OrxonoxExport
-#    define _OrxonoxPrivate
-#  endif
 
 // A quick define to overcome different names for the same function
Index: /code/branches/FICN/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- /code/branches/FICN/src/orxonox/OrxonoxPrereqs.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/OrxonoxPrereqs.h	(revision 729)
@@ -36,4 +36,27 @@
 #include "OrxonoxPlatform.h"
 
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+#if (ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32) && !defined( ORXONOX_STATIC_BUILD )
+#  ifdef ORXONOX_SHARED_BUILD
+#    define _OrxonoxExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _OrxonoxExport
+#    else
+#      define _OrxonoxExport __declspec(dllimport)
+#    endif
+#  endif
+#elif defined ( ORXONOX_GCC_VISIBILITY )
+#  define _OrxonoxExport  __attribute__ ((visibility("default")))
+#else
+#  define _OrxonoxExport
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
 // classes that have not yet been put into a namespace
 class InputManager;
@@ -56,8 +79,6 @@
 namespace orxonox {
   class Ambient;
-  class BaseEntity;
   class BaseObject;
   class Camera;
-  class Entity;
   class GraphicsEngine;
   class Mesh;
@@ -66,8 +87,6 @@
   class OrxListener;
   class Orxonox;
-  class SceneNode;
   class Skybox;
   class SpaceShip;
-  class SpaceshipSteeringObject;
   class Tickable;
   class TickFrameListener;
Index: /code/branches/FICN/src/orxonox/SpaceshipSteering.h
===================================================================
--- /code/branches/FICN/src/orxonox/SpaceshipSteering.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/SpaceshipSteering.h	(revision 729)
@@ -2,9 +2,11 @@
 #define _SpaceShipSteering_H__
 
-#include "OgrePrerequisites.h"
+#include <OgrePrerequisites.h>
+
+#include "OrxonoxPrereqs.h"
 
 namespace orxonox
 {
-  class SpaceshipSteering
+  class _OrxonoxExport SpaceshipSteering
   {
   public:
Index: /code/branches/FICN/src/orxonox/core/CoreIncludes.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/CoreIncludes.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/CoreIncludes.h	(revision 729)
@@ -88,4 +88,23 @@
 
 /**
+    @brief Exports the necessary templates in order to make them available to all libraries.
+    @param ClassName The name of the Class
+    @param LibraryName The name of the Library
+*/
+#define ExportClass(ClassName, LibraryName) \
+    template class _##LibraryName##Export orxonox::ClassIdentifier<ClassName>; \
+    template class _##LibraryName##Export orxonox::ObjectList<ClassName>; \
+    template class _##LibraryName##Export orxonox::ClassFactory<ClassName>
+
+/**
+    @brief Exports the necessary templates in order to make them available to all libraries.
+    @param ClassName The name of the Class
+    @param LibraryName The name of the Library
+*/
+#define ExportAbstractClass(ClassName, LibraryName) \
+    template class _##LibraryName##Export orxonox::ClassIdentifier<ClassName>; \
+    template class _##LibraryName##Export orxonox::ObjectList<ClassName>
+
+/**
     @brief Returns the Identifier of the given class.
     @param ClassName The name of the class
Index: /code/branches/FICN/src/orxonox/core/DebugLevel.cc
===================================================================
--- /code/branches/FICN/src/orxonox/core/DebugLevel.cc	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/DebugLevel.cc	(revision 729)
@@ -31,5 +31,4 @@
 */
 
-#include "CoreIncludes.h"
 #include "DebugLevel.h"
 
Index: /code/branches/FICN/src/orxonox/core/DebugLevel.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/DebugLevel.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/DebugLevel.h	(revision 729)
@@ -41,4 +41,5 @@
 #include "OrxonoxClass.h"
 #include "OutputHandler.h"
+#include "CoreIncludes.h"
 
 namespace orxonox
@@ -62,4 +63,5 @@
             ConfigValueContainer* softDebugLevelContainer_; //!< The config value container for the debug level
     };
+    ExportAbstractClass(DebugLevel, Core);
 }
 
Index: /code/branches/FICN/src/orxonox/core/Identifier.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/Identifier.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/Identifier.h	(revision 729)
@@ -54,4 +54,5 @@
 #include <map>
 #include <string>
+#include <utility>
 
 #include "CorePrereqs.h"
Index: /code/branches/FICN/src/orxonox/core/Language.cc
===================================================================
--- /code/branches/FICN/src/orxonox/core/Language.cc	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/Language.cc	(revision 729)
@@ -245,5 +245,5 @@
             if (lineString.compare("") != 0)
             {
-                unsigned int pos = lineString.find('=');
+                unsigned int pos = (unsigned int)lineString.find('=');
 
                 // Check if the length is at least 3 and if there's an entry before and behind the =
@@ -288,5 +288,5 @@
             if (lineString.compare("") != 0)
             {
-                unsigned int pos = lineString.find('=');
+                unsigned int pos = (unsigned int)lineString.find('=');
 
                 // Check if the length is at least 3 and if there's an entry before and behind the =
Index: /code/branches/FICN/src/orxonox/core/Language.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/Language.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/Language.h	(revision 729)
@@ -82,4 +82,6 @@
             bool bTranslationSet_;                                  //!< True if the translation was set
     };
+    template class _CoreExport orxonox::ClassIdentifier<LanguageEntry>;
+    template class _CoreExport orxonox::ObjectList<LanguageEntry>;
 
     //! The Language class manges the language files and entries and stores the LanguageEntry objects in a map.
@@ -108,4 +110,6 @@
             std::map<std::string, LanguageEntry*> languageEntries_; //!< A map to store all LanguageEntry objects and their name
     };
+    template class _CoreExport orxonox::ClassIdentifier<Language>;
+    template class _CoreExport orxonox::ObjectList<Language>;
 }
 
Index: /code/branches/FICN/src/orxonox/core/ObjectList.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/ObjectList.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/ObjectList.h	(revision 729)
@@ -39,4 +39,5 @@
 
 #include "CorePrereqs.h"
+#include "Iterator.h"
 
 namespace orxonox
Index: /code/branches/FICN/src/orxonox/core/OrxonoxClass.h
===================================================================
--- /code/branches/FICN/src/orxonox/core/OrxonoxClass.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/core/OrxonoxClass.h	(revision 729)
@@ -41,5 +41,5 @@
 #include "CorePrereqs.h"
 #include "MetaObjectList.h"
-#include "Identifier.h"
+#include "Iterator.h"
 
 namespace orxonox
@@ -158,4 +158,6 @@
             bool bVisible_;                 //!< True = the object is visible
     };
+    template class _CoreExport orxonox::ClassIdentifier<OrxonoxClass>;
+    template class _CoreExport orxonox::ObjectList<OrxonoxClass>;
 }
 
Index: /code/branches/FICN/src/orxonox/hud/HUD.h
===================================================================
--- /code/branches/FICN/src/orxonox/hud/HUD.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/hud/HUD.h	(revision 729)
@@ -38,5 +38,5 @@
 namespace orxonox
 {
-  class HUD
+  class _OrxonoxExport HUD
   {
   private:
Index: /code/branches/FICN/src/orxonox/objects/Ambient.cc
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Ambient.cc	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Ambient.cc	(revision 729)
@@ -43,4 +43,7 @@
 namespace orxonox
 {
+    // create a template instantiations
+    //template class _OrxonoxExport ClassIdentifier<Ambient>;
+
     CreateFactory(Ambient);
 
Index: /code/branches/FICN/src/orxonox/objects/Ambient.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Ambient.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Ambient.h	(revision 729)
@@ -8,5 +8,5 @@
 namespace orxonox
 {
-    class Ambient : public BaseObject
+    class _OrxonoxExport Ambient : public BaseObject
     {
         public:
@@ -21,4 +21,5 @@
 
     };
+    ExportClass(Ambient, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/BaseObject.cc
===================================================================
--- /code/branches/FICN/src/orxonox/objects/BaseObject.cc	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/BaseObject.cc	(revision 729)
@@ -32,5 +32,4 @@
 
 #include "tinyxml/tinyxml.h"
-#include "../core/CoreIncludes.h"
 
 #include "BaseObject.h"
Index: /code/branches/FICN/src/orxonox/objects/BaseObject.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/BaseObject.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/BaseObject.h	(revision 729)
@@ -10,11 +10,12 @@
 
 #include "../OrxonoxPrereqs.h"
+#include "../core/CorePrereqs.h"
 
-#include "../core/OrxonoxClass.h"
+#include "../core/CoreIncludes.h"
 
 namespace orxonox
 {
     //! The BaseObject is the parent of all classes representing an instance in the game.
-    class BaseObject : virtual public OrxonoxClass
+    class _OrxonoxExport BaseObject : virtual public OrxonoxClass
     {
         public:
@@ -23,4 +24,5 @@
             virtual void loadParams(TiXmlElement* xmlElem);
     };
+    ExportClass(BaseObject, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/BillboardSet.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/BillboardSet.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/BillboardSet.h	(revision 729)
@@ -13,5 +13,5 @@
 namespace orxonox
 {
-    class BillboardSet
+    class _OrxonoxExport BillboardSet
     {
         public:
Index: /code/branches/FICN/src/orxonox/objects/Camera.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Camera.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Camera.h	(revision 729)
@@ -8,5 +8,5 @@
 namespace orxonox
 {
-    class Camera : public BaseObject
+    class _OrxonoxExport Camera : public BaseObject
     {
         public:
@@ -21,4 +21,5 @@
 
     };
+    ExportClass(Camera, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/Explosion.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Explosion.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Explosion.h	(revision 729)
@@ -9,5 +9,5 @@
 namespace orxonox
 {
-    class Explosion : public WorldEntity
+    class _OrxonoxExport Explosion : public WorldEntity
     {
         public:
@@ -21,4 +21,5 @@
             ParticleInterface* particle_;
     };
+    ExportClass(Explosion, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/Fighter.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Fighter.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Fighter.h	(revision 729)
@@ -12,5 +12,5 @@
 namespace orxonox
 {
-    class Fighter : public Model, public OIS::MouseListener
+    class _OrxonoxExport Fighter : public Model, public OIS::MouseListener
     {
         public:
@@ -90,4 +90,5 @@
             int emitterRate_;
     };
+    ExportClass(Fighter, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/Light.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Light.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Light.h	(revision 729)
@@ -12,5 +12,5 @@
 namespace orxonox
 {
-    class Light
+    class _OrxonoxExport Light
     {
         public:
Index: /code/branches/FICN/src/orxonox/objects/Mesh.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Mesh.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Mesh.h	(revision 729)
@@ -10,5 +10,5 @@
 namespace orxonox
 {
-    class Mesh
+    class _OrxonoxExport Mesh
     {
         public:
Index: /code/branches/FICN/src/orxonox/objects/Model.cc
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Model.cc	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Model.cc	(revision 729)
@@ -69,5 +69,5 @@
 
     void Model::registerAllVariables(){
-      registerVar(&meshSrc_, meshSrc_.length()+1, network::STRING);
+      registerVar(&meshSrc_, (int)meshSrc_.length() + 1, network::STRING);
     }
 }
Index: /code/branches/FICN/src/orxonox/objects/Model.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Model.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Model.h	(revision 729)
@@ -12,5 +12,5 @@
 {
 
-    class Model : public WorldEntity
+    class _OrxonoxExport Model : public WorldEntity
     {
         public:
@@ -25,4 +25,5 @@
             void registerAllVariables();
     };
+    ExportClass(Model, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/NPC.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/NPC.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/NPC.h	(revision 729)
@@ -16,5 +16,5 @@
 namespace orxonox {
 
-  class NPC : public Model
+  class _OrxonoxExport NPC : public Model
   {
     public:
@@ -44,4 +44,5 @@
       static int const NUMELEMENTS = 9;  //number of elements
   };
+  ExportClass(NPC, Orxonox);
 
 }
Index: /code/branches/FICN/src/orxonox/objects/Projectile.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Projectile.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Projectile.h	(revision 729)
@@ -12,5 +12,5 @@
     class SpaceShip; // Forward declaration
 
-    class Projectile : public WorldEntity
+    class _OrxonoxExport Projectile : public WorldEntity
     {
         public:
@@ -28,4 +28,5 @@
             Timer<Projectile> destroyTimer_;
     };
+    ExportClass(Projectile, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/Skybox.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Skybox.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Skybox.h	(revision 729)
@@ -10,5 +10,5 @@
 namespace orxonox
 {
-    class Skybox : public BaseObject
+    class _OrxonoxExport Skybox : public BaseObject
     {
         public:
@@ -23,4 +23,5 @@
 
     };
+    ExportClass(Skybox, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/SpaceShip.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/SpaceShip.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/SpaceShip.h	(revision 729)
@@ -16,5 +16,5 @@
     class ParticleInterface; // Forward declaration
 
-    class SpaceShip : public Model, public OIS::MouseListener
+    class _OrxonoxExport SpaceShip : public Model, public OIS::MouseListener
     {
         public:
@@ -43,4 +43,8 @@
             bool mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id);
             bool mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id);
+
+            void doNothing() {
+            int a = 0;
+            }
 
 
@@ -125,4 +129,5 @@
             int emitterRate_;
     };
+    ExportClass(SpaceShip, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/Tickable.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Tickable.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Tickable.h	(revision 729)
@@ -52,5 +52,5 @@
 
     //! The Tickable interface provides a tick(dt) function, that gets called every frame.
-    class Tickable : virtual public OrxonoxClass
+    class _OrxonoxExport Tickable : virtual public OrxonoxClass
     {
         public:
@@ -67,7 +67,8 @@
             Tickable() { RegisterRootObject(Tickable); }
     };
+    ExportAbstractClass(Tickable, Orxonox);
 
     //! The TickFrameListener calls the tick(dt) function of all Tickables every frame.
-    class TickFrameListener : public Ogre::FrameListener
+    class _OrxonoxExport TickFrameListener : public Ogre::FrameListener
     {
         private:
Index: /code/branches/FICN/src/orxonox/objects/Timer.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/Timer.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/Timer.h	(revision 729)
@@ -67,5 +67,5 @@
 {
     //! TimerBase is the parent of the Timer class.
-    class TimerBase : public OrxonoxClass
+    class _OrxonoxExport TimerBase : public OrxonoxClass
     {
         friend class TimerFrameListener;
@@ -104,4 +104,5 @@
             float time_;        //!< Internal variable, counting the time till the next function-call
     };
+    ExportAbstractClass(TimerBase, Orxonox);
 
     //! The Timer is a callback-object, calling a given function after a given time-interval.
@@ -157,4 +158,5 @@
             T* object_;
     };
+    ExportAbstractClass(Timer<BaseObject>, Orxonox);
 
     //! The TimerFrameListener manages all Timers in the game.
Index: /code/branches/FICN/src/orxonox/objects/WorldEntity.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/WorldEntity.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/WorldEntity.h	(revision 729)
@@ -17,5 +17,5 @@
 namespace orxonox
 {
-  class WorldEntity : public BaseObject, public Tickable, public network::Synchronisable
+  class _OrxonoxExport WorldEntity : public BaseObject, public Tickable, public network::Synchronisable
   {
     public:
@@ -147,4 +147,5 @@
       bool bStatic_;
   };
+  ExportClass(WorldEntity, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/weapon_system/AmmunitionDump.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/weapon_system/AmmunitionDump.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/weapon_system/AmmunitionDump.h	(revision 729)
@@ -42,5 +42,5 @@
 
 namespace orxonox {
-  class AmmunitionDump : public BaseObject, public network::Synchronisable
+  class _OrxonoxExport AmmunitionDump : public BaseObject, public network::Synchronisable
   {
   public:
@@ -66,4 +66,5 @@
     int *capacity_;
   };
+  ExportClass(AmmunitionDump, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/weapon_system/BarrelGun.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/weapon_system/BarrelGun.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/weapon_system/BarrelGun.h	(revision 729)
@@ -38,5 +38,5 @@
 
 namespace orxonox {
-  class BarrelGun : public BaseWeapon
+  class _OrxonoxExport BarrelGun : public BaseWeapon
   {
  public:
@@ -60,4 +60,5 @@
 
   };
+  ExportClass(BarrelGun, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/weapon_system/BaseWeapon.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/weapon_system/BaseWeapon.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/weapon_system/BaseWeapon.h	(revision 729)
@@ -38,5 +38,5 @@
 
 namespace orxonox {
-  class BaseWeapon : public Model
+  class _OrxonoxExport BaseWeapon : public Model
   {
   public:
@@ -122,4 +122,5 @@
 
   };
+  ExportAbstractClass(BaseWeapon, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/weapon_system/Bullet.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/weapon_system/Bullet.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/weapon_system/Bullet.h	(revision 729)
@@ -37,5 +37,5 @@
 
 namespace orxonox {
-  class Bullet : public Model
+  class _OrxonoxExport Bullet : public Model
   {
   public:
@@ -47,4 +47,5 @@
     inline virtual void loadParams(TiXmlElement* xmlElem) { Model::loadParams(xmlElem); };
  };
+  ExportClass(Bullet, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/weapon_system/BulletManager.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/weapon_system/BulletManager.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/weapon_system/BulletManager.h	(revision 729)
@@ -38,10 +38,10 @@
 #include "network/Synchronisable.h"
 #include "tinyxml/tinyxml.h"
-//#include "../core/CoreIncludes.h"
+#include "../../core/CoreIncludes.h"
 #include "../BaseObject.h"
 #include "../Tickable.h"
 
 namespace orxonox {
-  class BulletManager : public BaseObject, public network::Synchronisable, public Tickable
+  class _OrxonoxExport BulletManager : public BaseObject, public network::Synchronisable, public Tickable
   {
   public:
@@ -67,4 +67,5 @@
 	  int bulletsIndex_;
   };
+  ExportClass(BulletManager, Orxonox);
 }
 
Index: /code/branches/FICN/src/orxonox/objects/weapon_system/WeaponStation.h
===================================================================
--- /code/branches/FICN/src/orxonox/objects/weapon_system/WeaponStation.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/objects/weapon_system/WeaponStation.h	(revision 729)
@@ -36,5 +36,5 @@
 
 namespace orxonox {
-  class WeaponStation
+  class _OrxonoxExport WeaponStation
   {
   public:
Index: /code/branches/FICN/src/orxonox/particle/ParticleInterface.h
===================================================================
--- /code/branches/FICN/src/orxonox/particle/ParticleInterface.h	(revision 728)
+++ /code/branches/FICN/src/orxonox/particle/ParticleInterface.h	(revision 729)
@@ -21,5 +21,5 @@
 {
 
-  class ParticleInterface
+  class _OrxonoxExport ParticleInterface
   {
   public:
Index: /code/branches/FICN/visual_studio/FICN.sln
===================================================================
--- /code/branches/FICN/visual_studio/FICN.sln	(revision 728)
+++ /code/branches/FICN/visual_studio/FICN.sln	(revision 729)
@@ -23,9 +23,9 @@
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{35575B59-E1AE-40E8-89C4-2862B5B09B68} = {35575B59-E1AE-40E8-89C4-2862B5B09B68}
 		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
 		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
 		{4733BD1A-E04C-458D-8BFB-5010250EA497} = {4733BD1A-E04C-458D-8BFB-5010250EA497}
 		{E283910F-F911-40FB-A09D-D025CA821912} = {E283910F-F911-40FB-A09D-D025CA821912}
+		{35575B59-E1AE-40E8-89C4-2862B5B09B68} = {35575B59-E1AE-40E8-89C4-2862B5B09B68}
 	EndProjectSection
 EndProject
@@ -34,4 +34,7 @@
 		Debug.AspNetCompiler.Debug = "True"
 		Release.AspNetCompiler.Debug = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
 	EndProjectSection
 EndProject
@@ -42,6 +45,7 @@
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
+		{4733BD1A-E04C-458D-8BFB-5010250EA497} = {4733BD1A-E04C-458D-8BFB-5010250EA497}
+		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
 		{271715F3-5B90-4110-A552-70C788084A86} = {271715F3-5B90-4110-A552-70C788084A86}
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
 	EndProjectSection
 EndProject
Index: /code/branches/FICN/visual_studio/audio.vcproj
===================================================================
--- /code/branches/FICN/visual_studio/audio.vcproj	(revision 728)
+++ /code/branches/FICN/visual_studio/audio.vcproj	(revision 729)
@@ -18,5 +18,5 @@
 		<Configuration
 			Name="Debug|Win32"
-			ConfigurationType="4"
+			ConfigurationType="2"
 			InheritedPropertySheets=".\base_properties_debug.vsprops"
 			CharacterSet="1"
@@ -40,4 +40,5 @@
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories=""
+				PreprocessorDefinitions="AUDIO_SHARED_BUILD"
 			/>
 			<Tool
@@ -51,9 +52,13 @@
 			/>
 			<Tool
-				Name="VCLibrarianTool"
-				AdditionalLibraryDirectories=""
+				Name="VCLinkerTool"
+				AdditionalDependencies="libvorbisfile_d.lib alut_d.lib  OpenAL32.lib"
+				OutputFile="$(OutDir)\$(ProjectName)_d.dll"
 			/>
 			<Tool
 				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
 			/>
 			<Tool
@@ -65,4 +70,10 @@
 			<Tool
 				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
 			/>
 			<Tool
@@ -169,4 +180,8 @@
 			</File>
 			<File
+				RelativePath="..\src\audio\AudioPrereqs.h"
+				>
+			</File>
+			<File
 				RelativePath="..\src\audio\AudioSource.h"
 				>
Index: /code/branches/FICN/visual_studio/benixonox.vcproj
===================================================================
--- /code/branches/FICN/visual_studio/benixonox.vcproj	(revision 728)
+++ /code/branches/FICN/visual_studio/benixonox.vcproj	(revision 729)
@@ -40,5 +40,5 @@
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories=""
-				PreprocessorDefinitions="LOADER_STATIC_BUILD"
+				PreprocessorDefinitions="ORXONOX_SHARED_BUILD"
 				PrecompiledHeaderThrough=""
 			/>
@@ -54,5 +54,5 @@
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="OgreMain_d.lib OIS_d.lib libogg_d.lib libvorbis_d.lib libvorbisfile_d.lib alut_d.lib zlibd.lib enet_d.lib EFX-Util.lib OpenAL32.lib"
+				AdditionalDependencies="OgreMain_d.lib OIS_d.lib zlibd.lib enet_d.lib"
 				AdditionalLibraryDirectories=""
 				IgnoreDefaultLibraryNames="/NODEFAULTLIB:MSVCRT"
@@ -109,5 +109,5 @@
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories=""
-				PreprocessorDefinitions="LOADER_STATIC_BUILD"
+				PreprocessorDefinitions="LOADER_STATIC_BUILD; ORXONOX_SHARED_BUILD"
 			/>
 			<Tool
Index: /code/branches/FICN/visual_studio/core.vcproj
===================================================================
--- /code/branches/FICN/visual_studio/core.vcproj	(revision 728)
+++ /code/branches/FICN/visual_studio/core.vcproj	(revision 729)
@@ -218,8 +218,4 @@
 			</File>
 			<File
-				RelativePath="..\src\orxonox\core\ColourValue.h"
-				>
-			</File>
-			<File
 				RelativePath="..\src\orxonox\core\ConfigValueContainer.h"
 				>
Index: /code/branches/FICN/visual_studio/loader.vcproj
===================================================================
--- /code/branches/FICN/visual_studio/loader.vcproj	(revision 728)
+++ /code/branches/FICN/visual_studio/loader.vcproj	(revision 729)
@@ -18,5 +18,5 @@
 		<Configuration
 			Name="Debug|Win32"
-			ConfigurationType="4"
+			ConfigurationType="2"
 			InheritedPropertySheets=".\base_properties_debug.vsprops"
 			CharacterSet="1"
@@ -40,5 +40,5 @@
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories=""
-				PreprocessorDefinitions="LOADER_STATIC_BUILD"
+				PreprocessorDefinitions="LOADER_SHARED_BUILD"
 			/>
 			<Tool
@@ -52,8 +52,13 @@
 			/>
 			<Tool
-				Name="VCLibrarianTool"
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib Orxonox_d.lib"
+				AdditionalLibraryDirectories="$(OutDir)"
 			/>
 			<Tool
 				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
 			/>
 			<Tool
@@ -65,4 +70,10 @@
 			<Tool
 				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
 			/>
 			<Tool
