Index: code/branches/FICN/src/network/Client.cc
===================================================================
--- code/branches/FICN/src/network/Client.cc	(revision 458)
+++ code/branches/FICN/src/network/Client.cc	(revision 459)
@@ -151,5 +151,5 @@
    * Performs a GameState update
    */
-  void Client::update(){
+  void Client::tick(float time){
     ENetPacket *packet;
     // stop if the packet queue is empty
Index: code/branches/FICN/src/network/Client.h
===================================================================
--- code/branches/FICN/src/network/Client.h	(revision 458)
+++ code/branches/FICN/src/network/Client.h	(revision 459)
@@ -20,9 +20,13 @@
 #include "GameStateClient.h"
 #include "orxonox/core/IdentifierIncludes.h"
+//#include "NetworkFrameListener.h"
 
 
 namespace network{
 
+
+  
 /**
+  network::Client *client;
  * The network/Client class
  * This class implements all necessary function for the network communication
@@ -48,5 +52,5 @@
   bool sendPackets();
   
-  void update();
+  void tick(float time);
 
   private:
@@ -62,4 +66,5 @@
 };
 
+
 }
 
Index: code/branches/FICN/src/network/Server.cc
===================================================================
--- code/branches/FICN/src/network/Server.cc	(revision 458)
+++ code/branches/FICN/src/network/Server.cc	(revision 459)
@@ -95,6 +95,7 @@
    * Run this function once every tick
    * calls processQueue and updateGamestate
+   * @param time time since last tick
    */
-  void Server::tick(){
+  void Server::tick(float time){
     processQueue();
     updateGamestate();
Index: code/branches/FICN/src/network/Server.h
===================================================================
--- code/branches/FICN/src/network/Server.h	(revision 458)
+++ code/branches/FICN/src/network/Server.h	(revision 459)
@@ -21,7 +21,10 @@
 #include "enet/enet.h"
 #include "ClientInformation.h"
+//#include "NetworkFrameListener.h"
+
 
 namespace network{
 
+  
   /**
    * This class is the root class of the network module for a server.
@@ -37,5 +40,5 @@
     bool sendMSG(std::string msg);
     bool sendMSG(const char *msg);
-    void tick();
+    void tick(float time);
     protected:
     void processQueue();
@@ -49,6 +52,5 @@
     ClientInformation *clients;
   };
-
-
+ 
 
 
Index: code/branches/FICN/src/network/Synchronisable.h
===================================================================
--- code/branches/FICN/src/network/Synchronisable.h	(revision 458)
+++ code/branches/FICN/src/network/Synchronisable.h	(revision 459)
@@ -17,4 +17,5 @@
 
 #include "orxonox/core/IdentifierIncludes.h"
+#include "orxonox/core/OrxonoxClass.h"
 
 namespace network {
@@ -39,5 +40,5 @@
  * @author Oliver Scheuss
 */
-class Synchronisable{
+class Synchronisable : public orxonox::OrxonoxClass{
 public:
   Synchronisable();
Index: code/branches/FICN/src/network/dummyclient3.cc
===================================================================
--- code/branches/FICN/src/network/dummyclient3.cc	(revision 458)
+++ code/branches/FICN/src/network/dummyclient3.cc	(revision 459)
@@ -23,5 +23,5 @@
 
   while (true) {
-          client.update();
+          client.tick(0);
           std::cout << "your message: ";
           std::getline( std::cin, str );
@@ -50,5 +50,5 @@
 
   while (true) {
-          client.update();
+          client.tick(0);
           usleep(100);
   }
Index: code/branches/FICN/src/orxonox/orxonox.cc
===================================================================
--- code/branches/FICN/src/orxonox/orxonox.cc	(revision 458)
+++ code/branches/FICN/src/orxonox/orxonox.cc	(revision 459)
@@ -57,4 +57,9 @@
 
 audio::AudioManager* auMan;
+
+//network stuff
+//#include "network/Server.h"
+//#include "network/Client.h"
+#include "network/NetworkFrameListener.h"
 
 // some tests to see if enet works without includsion
@@ -194,4 +199,45 @@
       void go()
       {
+        if(function==0)
+          standalone();
+        else if(function==1)
+          server();
+        else
+          client();
+      }
+      
+      OrxApplication(int func){
+        function = func;
+      }
+      OrxApplication(){
+        function = 0;
+      }
+
+      ~OrxApplication()
+      {
+        mInputManager->destroyInputObject(mKeyboard);
+        OIS::InputManager::destroyInputSystem(mInputManager);
+
+//        delete mRenderer;
+//        delete mSystem;
+
+//         delete mListener;
+//         delete mRoot;
+      }
+
+    private:
+      Ogre::Root *mRoot;
+      OIS::Keyboard *mKeyboard;
+      OIS::Mouse *mMouse;
+      OIS::InputManager *mInputManager;
+      //CEGUI::OgreCEGUIRenderer *mRenderer;
+      //CEGUI::System *mSystem;
+      OrxExitListener *mListener;
+      int function; // 0 for standalone, 1 for server, 2 for client
+
+      void client()
+      {
+       client_g = new network::Client(); // address here
+        mRoot->addFrameListener(new network::ClientFrameListener());
         createRoot();
         defineResources();
@@ -202,30 +248,39 @@
         setupScene();
         setupInputSystem();
-//         setupCEGUI();
+//        setupCEGUI();
         createFrameListener();
         startRenderLoop();
       }
-
-      ~OrxApplication()
-      {
-        mInputManager->destroyInputObject(mKeyboard);
-        OIS::InputManager::destroyInputSystem(mInputManager);
-
-//        delete mRenderer;
-//        delete mSystem;
-
-//         delete mListener;
-//         delete mRoot;
-      }
-
-    private:
-      Ogre::Root *mRoot;
-      OIS::Keyboard *mKeyboard;
-      OIS::Mouse *mMouse;
-      OIS::InputManager *mInputManager;
-      //CEGUI::OgreCEGUIRenderer *mRenderer;
-      //CEGUI::System *mSystem;
-      OrxExitListener *mListener;
-
+      void server()
+      {
+        server_g = new network::Server(); // add some settings if wanted
+        mRoot->addFrameListener(new network::ServerFrameListener());
+        createRoot();
+        defineResources();
+        setupRenderSystem();
+        createRenderWindow();
+        initializeResourceGroups();
+        createScene();
+        setupScene();
+        //setupInputSystem();
+        //setupCEGUI();
+        //createFrameListener();
+        //startRenderLoop();
+      }
+      void standalone()
+      {
+        createRoot();
+        defineResources();
+        setupRenderSystem();
+        createRenderWindow();
+        initializeResourceGroups();
+        createScene();
+        setupScene();
+        setupInputSystem();
+        setupCEGUI();
+        createFrameListener();
+        startRenderLoop();
+      }
+      
       void createRoot()
       {
@@ -377,8 +432,8 @@
       mRoot->addFrameListener(mListener);
     }
-      void startRenderLoop()
-      {
-        mRoot->startRendering();
-      }
+    void startRenderLoop()
+    {
+      mRoot->startRendering();
+    }
   };
 }
@@ -397,6 +452,16 @@
   try
   {
-    orxonox::OrxApplication orxonox;
-    orxonox.go();
+    if(argc >=2 && strcmp(argv[1], "server")==0){
+      orxonox::OrxApplication orxonox(1);
+      orxonox.go();
+    }
+    else if(argc >=2 && strcmp(argv[1], "client")==0){
+      orxonox::OrxApplication orxonox(2);
+      orxonox.go();
+    }
+    else{
+      orxonox::OrxApplication orxonox(0);
+      orxonox.go();
+    }
   }
   catch(Exception& e)
