Index: osgVisual/include/dataIO/dataIO_transportContainer.h
===================================================================
--- osgVisual/include/dataIO/dataIO_transportContainer.h	(revision 72)
+++ osgVisual/include/dataIO/dataIO_transportContainer.h	(revision 73)
@@ -18,4 +18,5 @@
 #include <osg/Object>
 #include <osg/Matrixd>
+#include <osg/Vec3d>
 
 #include <dataIO_executer.h>
@@ -34,5 +35,7 @@
 			frameID(tC_.frameID),
 			viewMatrix(tC_.viewMatrix),
-			projectionMatrix(tC_.projectionMatrix),
+			eye(tC_.eye),
+			center(tC_.center),
+			up(tC_.up),
 			executer(tC_.executer),
 			ioSlots(tC_.ioSlots){}
@@ -49,5 +52,5 @@
 	int frameID;
 	osg::Matrixd viewMatrix;
-	osg::Matrixd projectionMatrix;
+	osg::Vec3d eye, center, up;
 	executerList executer;
 	slotList ioSlots;
@@ -58,9 +61,15 @@
 	void setFrameID(int frameID_ ){frameID=frameID_;}
 
-	void setViewMatrix(const osg::Matrixd& viewMatrix_){viewMatrix=viewMatrix_;}
+	void setViewMatrix(const osg::Matrixd& viewMatrix_){viewMatrix = viewMatrix_;}
 	const osg::Matrixd& getViewMatrix() const {return viewMatrix;}
 
-	void setProjectionMatrix(const osg::Matrixd& projectionMatrix_){projectionMatrix=projectionMatrix_;}
-	const osg::Matrixd& getProjectionMatrix() const {return projectionMatrix;}
+	void setEye(const osg::Vec3d& eye_) { eye = eye_; }
+    const osg::Vec3d& getEye() const { return eye; }
+
+	void setCenter(const osg::Vec3d& center_) { center = center_; }
+    const osg::Vec3d& getCenter() const { return center; }
+
+	void setUp(const osg::Vec3d& up_) { up = up_; }
+    const osg::Vec3d& getUp() const { return up; }
 
 	void setExecuter(const executerList& executer_) {executer=executer_;}
Index: osgVisual/include/dataIO/visual_dataIO.h
===================================================================
--- osgVisual/include/dataIO/visual_dataIO.h	(revision 72)
+++ osgVisual/include/dataIO/visual_dataIO.h	(revision 73)
@@ -152,5 +152,4 @@
 	bool isStandalone(){if (clusterMode==osgVisual::dataIO_cluster::STANDALONE) return true; else return false;};
 
-
 // SLOT Access functions
 	void* getSlotPointer(std::string slotName_, osgVisual::dataIO_slot::dataDirection direction_, osgVisual::dataIO_slot::varType variableTyp_ );
Index: osgVisual/include/extLink/manip_extLink.h
===================================================================
--- osgVisual/include/extLink/manip_extLink.h	(revision 72)
+++ osgVisual/include/extLink/manip_extLink.h	(revision 73)
@@ -24,5 +24,5 @@
 
 /**
- * \brief This class is a free spacemouse manipulator. It uses the 3DConnexion SpaceNavigator, which interface is implemented in manip_spaceMouse.h
+ * \brief This class is a camera manipulator based slots without objects.
  * 
  * @author Torben Dannhauer
Index: osgVisual/src/cluster/dataIO_clusterENet.cpp
===================================================================
--- osgVisual/src/cluster/dataIO_clusterENet.cpp	(revision 72)
+++ osgVisual/src/cluster/dataIO_clusterENet.cpp	(revision 73)
@@ -125,5 +125,10 @@
 		sendContainer->setFrameID(viewer->getFrameStamp()->getFrameNumber());
 		sendContainer->setViewMatrix(viewer->getCamera()->getViewMatrix());
-		sendContainer->setProjectionMatrix(viewer->getCamera()->getProjectionMatrix());
+		osg::Vec3d eye, center, up;
+		viewer->getCamera()->getViewMatrixAsLookAt(eye,center,up);
+		sendContainer->setEye(eye);
+		sendContainer->setCenter(center);
+		sendContainer->setUp(up);
+		//std::cout << "sending lookat: eye:"<<eye<<", center:"<<center<<", up:" << up << std::endl;
 
 		// Writing node to stream
@@ -166,4 +171,5 @@
 		//OSG_NOTIFY( osg::ALWAYS ) << "dataIO_clusterENet::readTO_OBJvaluesFromMaster() - Bytes received: " << bytes_received << std::endl;
 		OSG_NOTIFY( osg::ALWAYS ) << "Received: " << std::endl << receivedTransportContainer << std::endl;
+		
 
 		// Unserialize data
@@ -179,7 +185,8 @@
 				{
 					OSG_NOTIFY( osg::ALWAYS ) << "Received:: Settings Viewmatrix...FrameID is: " << sendContainer->getFrameID() << std::endl;
-					// Restore Viewmatrix / Projectionmatrix  
+					// Restore Viewmatrix 
 					viewer->getCamera()->setViewMatrix(sendContainer->getViewMatrix());
-					viewer->getCamera()->setProjectionMatrix(sendContainer->getProjectionMatrix());
+					//viewer->getCamera()->setViewMatrixAsLookAt(sendContainer->getEye(),sendContainer->getCenter(),sendContainer->getUp());
+					//std::cout << "receiving lookat: eye:"<<eye.x()<<", center:"<<center<<", up:" << up << std::endl;
 				}
 				else
Index: osgVisual/src/core/visual_core.cpp
===================================================================
--- osgVisual/src/core/visual_core.cpp	(revision 72)
+++ osgVisual/src/core/visual_core.cpp	(revision 73)
@@ -56,7 +56,4 @@
 	OSG_NOTIFY( osg::ALWAYS ) << "Initialize visual_core..." << std::endl;
 
-	// Add manipulators for user interaction
-	addManipulators();
-
 	// Load terrain
 	//loadTerrain(arguments);
@@ -84,4 +81,7 @@
 	visual_dataIO::getInstance()->init(viewer, arguments);
 
+	// Add manipulators for user interaction - after dataIO to be able to skip it in slaves.
+	addManipulators();
+
 	loadTerrain(arguments);
 
@@ -118,5 +118,4 @@
 		// update the scene by traversing it with the the update visitor which will
         // call all node update callbacks and animations.
-        
         viewer->updateTraversal();
 		
@@ -179,5 +178,5 @@
 void visual_core::addManipulators()
 {
-	// set up the camera manipulators.
+	if(!visual_dataIO::getInstance()->isSlave()) // set up the camera manipulators if not slave.
     {
         osg::ref_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator = new osgGA::KeySwitchMatrixManipulator;
@@ -221,5 +220,5 @@
 
         viewer->setCameraManipulator( keyswitchManipulator.get() );
-    }
+    }	// If not Slave END
 
     // add the state manipulator
@@ -328,14 +327,17 @@
 #endif
 
-	osgGA::NodeTrackerManipulator::TrackerMode trackerMode = osgGA::NodeTrackerManipulator::NODE_CENTER;
-	osgGA::NodeTrackerManipulator::RotationMode rotationMode = osgGA::NodeTrackerManipulator::ELEVATION_AZIM;
-	nt->setTrackerMode(trackerMode);
-    nt->setRotationMode(rotationMode);
-	//nt->setAutoComputeHomePosition( true );
-	nt->setMinimumDistance( 100 );
-	nt->setTrackNode(testObj4->getGeometry());
-	//nt->computeHomePosition();
-	nt->setAutoComputeHomePosition( true );
-	nt->setDistance( 250 );
+	if(nt.valid())
+	{
+		osgGA::NodeTrackerManipulator::TrackerMode trackerMode = osgGA::NodeTrackerManipulator::NODE_CENTER;
+		osgGA::NodeTrackerManipulator::RotationMode rotationMode = osgGA::NodeTrackerManipulator::ELEVATION_AZIM;
+		nt->setTrackerMode(trackerMode);
+		nt->setRotationMode(rotationMode);
+		//nt->setAutoComputeHomePosition( true );
+		nt->setMinimumDistance( 100 );
+		nt->setTrackNode(testObj4->getGeometry());
+		//nt->computeHomePosition();
+		nt->setAutoComputeHomePosition( true );
+		nt->setDistance( 250 );
+	}
 
 
@@ -376,64 +378,3 @@
 
 	visual_dataIO::getInstance()->setSlotData("TestSlot1", osgVisual::dataIO_slot::TO_OBJ, 0.12345);
-
-
-	//// Writing object to stream
-	////std::ofstream myOstream("test.txt" );
-	//std::stringstream myOstream;
-	//std::string extension = "osgb";
-	//bool compressed = false;
-	//osgDB::ReaderWriter* rw = osgDB::Registry::instance()->getReaderWriterForExtension(extension.c_str());
-	//if ( rw )
-	//{
-	//	osgDB::ReaderWriter::WriteResult wr;
-
-	//	if (extension == "osgb")
-	//	{
-	//		if (compressed)
-	//			wr = rw->writeObject( *test, myOstream, new osgDB::Options("Compressor=zlib") );
-	//		else
-	//			wr = rw->writeObject( *test, myOstream );
-	//	}
-
-	//	if (extension == "osgt")
-	//	{
-	//		if (compressed)
-	//			wr = rw->writeObject( *test, myOstream, new osgDB::Options("Ascii Compressor=zlib") );
-	//		else
-	//			wr = rw->writeObject( *test, myOstream, new osgDB::Options("Ascii") );
-	//	}
-
-	//	if (extension == "osgx")
-	//	{
-	//		if (compressed)
-	//			wr = rw->writeObject( *test, myOstream, new osgDB::Options("XML Compressor=zlib") );
-	//		else
-	//			wr = rw->writeObject( *test, myOstream, new osgDB::Options("XML") );
-	//	}
-
-
-	//	if (!wr.success() )	OSG_NOTIFY( osg::WARN ) << "ERROR: Save failed: " << wr.message() << std::endl;
-	//}
-	//else
-	//	OSG_NOTIFY( osg::WARN ) << "error getting readerWriter for osgt" << std::endl;
-
-	//// Size ermitteln.
-	//std::stringbuf *pbuf;
-	//pbuf = myOstream.rdbuf();
-	//OSG_NOTIFY( osg::WARN ) << "PBUF Bytes available: " << pbuf->in_avail() << std::endl;
-	//OSG_NOTIFY( osg::ALWAYS ) << "STRING Bytes available: " << myOstream.str().length() << std::endl;
-	//OSG_NOTIFY( osg::ALWAYS ) << "STRING content: " << myOstream.str() << std::endl;
-
-	////Reading Stream to node
-	//if ( rw )
-	//{
-	//	osgDB::ReaderWriter::ReadResult rr = rw->readObject( myOstream );
-	//	osg::ref_ptr<osgVisual::dataIO_transportContainer> test2 = dynamic_cast<osgVisual::dataIO_transportContainer*>(rr.takeObject());
-	//	if (test2)
-	//	{
-	//		OSG_NOTIFY( osg::WARN ) << "TEST::FrameID is: " << test->getFrameID() << std::endl;
-	//	}
-	//	else
-	//		OSG_NOTIFY( osg::WARN ) << "Error converting stream to Node" << std::endl;
-	//}
-}
+}
Index: osgVisual/src/dataIO/dataIO_transportContainer.cpp
===================================================================
--- osgVisual/src/dataIO/dataIO_transportContainer.cpp	(revision 72)
+++ osgVisual/src/dataIO/dataIO_transportContainer.cpp	(revision 73)
@@ -27,5 +27,7 @@
 	ADD_INT_SERIALIZER( FrameID, 0 );
 	ADD_MATRIXD_SERIALIZER( ViewMatrix, osg::Matrixd() );
-	ADD_MATRIXD_SERIALIZER( ProjectionMatrix, osg::Matrixd() );
+	ADD_VEC3D_SERIALIZER( Eye, osg::Vec3d(-1.0, -1.0, -1.0) );
+	ADD_VEC3D_SERIALIZER( Center, osg::Vec3d(-1.0,-1.0,-1.0) );
+	ADD_VEC3D_SERIALIZER( Up, osg::Vec3d(-1.0,-1.0,-1.0) );
 	ADD_LIST_SERIALIZER( Executer, osgVisual::dataIO_transportContainer::executerList );
 	ADD_LIST_SERIALIZER( IOSlots, osgVisual::dataIO_transportContainer::slotList );
Index: osgVisual/src/dataIO/visual_dataIO.cpp
===================================================================
--- osgVisual/src/dataIO/visual_dataIO.cpp	(revision 72)
+++ osgVisual/src/dataIO/visual_dataIO.cpp	(revision 73)
@@ -154,4 +154,5 @@
 			break;
 	};
+	traverse(node, nv);
 }
 
Index: osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp
===================================================================
--- osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp	(revision 72)
+++ osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp	(revision 73)
@@ -41,5 +41,5 @@
 void visual_skySilverLining::skyUpdateCallback::operator()(osg::Node* node, osg::NodeVisitor* nv)
 {
-	std::cout << "Sky silverlining update callback" << std::endl;
+	//std::cout << "Sky silverlining update callback" << std::endl;
 	// Check if atmosphere is initialized.
 	if (!sky->isInitialized())
@@ -50,6 +50,5 @@
 
 	// Update sky
-	double lat, lon, height, x, y, z;
-	util::getXYZofCamera( sceneCamera, x, y, z);
+	double lat, lon, height;
 	util::getWGS84ofCamera( sceneCamera, csn, lat, lon, height );
 	//std::cout << "lat: " << osg::RadiansToDegrees(lat) << ", lon: " << osg::RadiansToDegrees(lon) << ", height: " << height << std::endl;
@@ -247,5 +246,5 @@
 	//addWindVolume( 0.0, 15000.0, 300.0, 90.0 );
 	
-	addCloudLayer( 0, 300000, 300000, 600.0, 2351.0, 0.5, STRATUS );
+	//addCloudLayer( 0, 300000, 300000, 600.0, 2351.0, 0.5, STRATUS );
 	//addCloudLayer( 0, 5000000, 5000000, 600.0, 7351.0, 0.2, CIRRUS_FIBRATUS );
 	//addCloudLayer( 0, 50000, 50000, 600.0, 7351.0, 0.2, CIRROCUMULUS );
