diff --git a/src/Cockpit/hud.cxx b/src/Cockpit/hud.cxx
index a85624fc2..d4f753855 100644
--- a/src/Cockpit/hud.cxx
+++ b/src/Cockpit/hud.cxx
@@ -50,7 +50,7 @@
 #include <Math/fg_random.h>
 #include <Math/mat3.h>
 #include <Math/polar3d.hxx>
-#include <Network/network.h>
+#include <NetworkOLK/network.h>
 #include <Scenery/scenery.hxx>
 #include <Time/fg_timer.hxx>
 
@@ -1274,6 +1274,13 @@ void fgUpdateHUD( void ) {
   char *gmt_str = get_formated_gmt_time();
   HUD_TextList.add( fgText(40, 10, gmt_str) );
 
+#ifdef FG_NETWORK_OLK
+  if ( net_hud_display ) {
+      net_hud_update();
+  }
+#endif
+
+
   // temporary
   extern bool fgAPAltitudeEnabled( void );
   extern bool fgAPHeadingEnabled( void );
diff --git a/src/Main/Makefile.am b/src/Main/Makefile.am
index 3d4f54170..007c46867 100644
--- a/src/Main/Makefile.am
+++ b/src/Main/Makefile.am
@@ -5,9 +5,18 @@ SERIAL_LIBS =
 endif
 
 if ENABLE_OLD_WEATHER
-WEATHER_LIBS =	$(top_builddir)/Simulator/Weather/libWeather.a
+WEATHER_LIBS = $(top_builddir)/Simulator/Weather/libWeather.a
 else
-WEATHER_LIBS =	$(top_builddir)/Simulator/WeatherCM/libWeatherCM.a
+WEATHER_LIBS = $(top_builddir)/Simulator/WeatherCM/libWeatherCM.a
+endif
+
+if ENABLE_NETWORK_OLK
+NETWORK_LIBS = \
+	$(top_builddir)/Simulator/Network/libNetwork.a \
+	$(top_builddir)/Simulator/NetworkOLK/libNetworkOLK.a
+else
+NETWORK_LIBS = \
+	$(top_builddir)/Simulator/Network/libNetwork.a
 endif
 
 if OLD_AUTOMAKE
@@ -46,7 +55,7 @@ fgfs_LDADD = \
 	$(top_builddir)/Simulator/GUI/libGUI.a \
 	$(top_builddir)/Simulator/Scenery/libScenery.a \
 	$(top_builddir)/Simulator/Airports/libAirports.a \
-        $(top_builddir)/Simulator/Network/libNetwork.a \
+        $(NETWORK_LIBS) \
 	$(top_builddir)/Simulator/Objects/libObjects.a \
 	$(top_builddir)/Simulator/Clouds/libClouds.a \
 	$(top_builddir)/Simulator/Time/libTime.a \
diff --git a/src/Main/main.cxx b/src/Main/main.cxx
index 7f4d5cd30..a6c2bcaea 100644
--- a/src/Main/main.cxx
+++ b/src/Main/main.cxx
@@ -82,7 +82,7 @@
 #include <Math/fg_random.h>
 #include <Misc/fgpath.hxx>
 #ifdef FG_NETWORK_OLK
-#include <Network/network.h>
+#include <NetworkOLK/network.h>
 #endif
 #include <Objects/materialmgr.hxx>
 #include <Scenery/scenery.hxx>
@@ -144,6 +144,12 @@ ssgBranch *terrain = NULL;
 ssgSelector *penguin_sel = NULL;
 ssgTransform *penguin_pos = NULL;
 
+#ifdef FG_NETWORK_OLK
+ssgSelector *fgd_sel = NULL;
+ssgTransform *fgd_pos = NULL;
+//sgMat4 sgTUX;
+#endif
+
 // current fdm/position used for view
 FGInterface cur_view_fdm;
 
@@ -361,7 +367,11 @@ void fgRenderFrame( void ) {
 	}
 
 	// update fog params if visibility has changed
+#ifndef FG_OLD_WEATHER
 	double cur_visibility = WeatherDatabase->getWeatherVisibility();
+#else
+	double cur_visibility = current_weather.get_visibility();
+#endif
 	double actual_visibility = cur_visibility;
 
 	if ( current_options.get_clouds() ) {
@@ -541,6 +551,25 @@ void fgRenderFrame( void ) {
 	    penguin_pos->setTransform( &tuxpos );
 	}
 
+# ifdef FG_NETWORK_OLK
+	sgCoord fgdpos;
+	other = head->next;             /* put listpointer to start  */
+	while ( other != tail) {        /* display all except myself */
+	    if ( strcmp( other->ipadr, fgd_mcp_ip) != 0) {
+		other->fgd_sel->select(1);
+		sgSetCoord( &fgdpos, other->sgFGD_COORD );
+		other->fgd_pos->setTransform( &fgdpos );
+	    }
+	    other = other->next;
+	}
+
+	// fgd_sel->select(1);
+	// sgCopyMat4( sgTUX, current_view.sgVIEW);
+	// sgCoord fgdpos;
+	// sgSetCoord( &fgdpos, sgFGD_VIEW );
+	// fgd_pos->setTransform( &fgdpos);
+# endif
+
 	ssgSetCamera( current_view.VIEW );
 
 	// position tile nodes and update range selectors
@@ -703,6 +732,14 @@ static void fgMainLoop( void ) {
     FG_LOG( FG_ALL, FG_DEBUG, "Running Main Loop");
     FG_LOG( FG_ALL, FG_DEBUG, "======= ==== ====");
 
+#ifdef FG_NETWORK_OLK
+    if ( net_is_registered == 0 ) {           // We first have to reg. to fgd
+        // printf("FGD: Netupdate\n");
+        fgd_send_com( "A", FGFS_host);   // Send Mat4 data
+        fgd_send_com( "B", FGFS_host);   // Recv Mat4 data
+    }
+#endif
+
 #if defined( ENABLE_PLIB_JOYSTICK )
     // Read joystick and update control settings
     if ( current_options.get_control_mode() == fgOPTIONS::FG_JOYSTICK ) {
@@ -1280,7 +1317,7 @@ int main( int argc, char **argv ) {
 
 #ifdef FG_NETWORK_OLK
     // Do the network intialization
-    printf("Multipilot mode %s\n", fg_net_init() );
+    printf("Multipilot mode %s\n", fg_net_init( scene ) );
 #endif
 
     scene->addKid( terrain );
diff --git a/src/Main/options.cxx b/src/Main/options.cxx
index 6ec0724e2..41bc4c33b 100644
--- a/src/Main/options.cxx
+++ b/src/Main/options.cxx
@@ -45,7 +45,7 @@ bool global_fullscreen = true;
 #include <Cockpit/cockpit.hxx>
 #include <FDM/flight.hxx>
 #ifdef FG_NETWORK_OLK
-#  include <Network/network.h>
+#  include <NetworkOLK/network.h>
 #endif
 #include <Time/fg_time.hxx>