Index: osgVisual/bin/osgVisualConfig.xml
===================================================================
--- osgVisual/bin/osgVisualConfig.xml	(revision 159)
+++ osgVisual/bin/osgVisualConfig.xml	(revision 160)
@@ -27,7 +27,7 @@
         standalone: This role recieves all relevant data via the extLink and renders it. No cluster functionality is used.
     -->
-    <dataio clusterrole="master"></dataio>
+    <dataio clusterrole="standalone"></dataio>
     <cluster implementation="enet" master_ip="10.10.10.10" port="1234" use_zlib_compressor="yes" ></cluster>
-    <extLink implementation="vcl" filename="osgVisual.xml"></extLink>
+    <extlink implementation="vcl" filename="osgVisual.xml"></extlink>
   </module>
   
Index: osgVisual/include/dataIO/visual_dataIO.h
===================================================================
--- osgVisual/include/dataIO/visual_dataIO.h	(revision 159)
+++ osgVisual/include/dataIO/visual_dataIO.h	(revision 160)
@@ -22,4 +22,7 @@
 #include <osgViewer/Viewer>
 
+// osgVisual specifiy includes
+#include <visual_util.h>
+
 // Cluster
 #ifdef USE_CLUSTER_ASIO_TCP_IOSTREAM
@@ -177,4 +180,9 @@
 
 	/**
+	 * XML config filename
+	 */ 
+	std::string configFileName;
+
+	/**
 	 * The eventCallback-class is friend to be able to work with all dataIO members without setters/getters.
 	 */ 
Index: osgVisual/src/dataIO/visual_dataIO.cpp
===================================================================
--- osgVisual/src/dataIO/visual_dataIO.cpp	(revision 159)
+++ osgVisual/src/dataIO/visual_dataIO.cpp	(revision 160)
@@ -49,5 +49,5 @@
 void visual_dataIO::init(osgViewer::Viewer* viewer_, osg::ArgumentParser& arguments_, std::string configFileName)
 {
-	OSG_NOTIFY( osg::ALWAYS ) << "visual_dataIO init()" << std::endl;
+	OSG_NOTIFY( osg::ALWAYS ) << "visual_dataIO initialize.." << std::endl;
 
 	// Init variables
@@ -55,24 +55,8 @@
 
 	// Process XML configuration
+	this->configFileName = configFileName;
 	if(!processXMLConfiguration())
-		OSG_FATAL << "ERROR: visual_dataIO::init() - Failed to initialize dataIO!";
-
-	// Parse operating Mode
-    if (arguments_.read("-m"))
-	{
-		OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as MASTER" << std::endl;
-		clusterMode = osgVisual::dataIO_cluster::MASTER;
-	}
-	else if (arguments_.read("-s"))
-	{
-		OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as SLAVE" << std::endl;
-		clusterMode = osgVisual::dataIO_cluster::SLAVE;
-		slotContainer = NULL;	// Slave only recieves container, therefor set this Pointer NULL (created instance will be deleted because it is an auto pointer).
-	}
-	else
-	{
-		OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as STANDALONE" << std::endl;
-		clusterMode = osgVisual::dataIO_cluster::STANDALONE;
-	}
+		OSG_FATAL << "ERROR: visual_dataIO::init() - Failed to initialize dataIO via XML configuration!";
+
 
 	// Create Cluster.
@@ -115,4 +99,81 @@
 bool visual_dataIO::processXMLConfiguration()
 {
+	// Init XML
+	xmlDoc* tmpDoc;
+	bool disabled;
+	xmlNode* config = util::getModuleXMLConfig( configFileName, "dataio", tmpDoc, disabled );
+
+	if( disabled)
+		OSG_NOTIFY( osg::ALWAYS ) << "..disabled by XML configuration file. dataIO can't be disabled. Ignoring." << std::endl;
+
+	// extract configuration values
+	if(config)
+	{
+		xmlNode* a_node = config->children;
+
+		for (xmlNode *cur_node = a_node; cur_node; cur_node = cur_node->next)
+		{
+			std::string node_name=reinterpret_cast<const char*>(cur_node->name);
+			//OSG_ALWAYS << "----visual_distortion::processXMLConfiguration() - node type="<< cur_node->type <<", name=" << cur_node->name << std::endl;
+
+			// Check for dataio node
+			if(cur_node->type == XML_ELEMENT_NODE && node_name == "dataio")
+			{
+				// Extract cluster role
+				xmlAttr  *attr = cur_node->properties;
+				while ( attr ) 
+				{ 
+					std::string attr_name=reinterpret_cast<const char*>(attr->name);
+					std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
+					if( attr_name == "clusterrole" )
+					{
+						if(attr_value == "master")
+						{
+							OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as MASTER" << std::endl;
+							clusterMode = osgVisual::dataIO_cluster::MASTER;
+						}
+						else if(attr_value == "slave")
+						{
+							OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as SLAVE" << std::endl;
+							clusterMode = osgVisual::dataIO_cluster::SLAVE;
+							slotContainer = NULL;	// Slave only recieves container, therefor set this Pointer NULL (created instance will be deleted because it is an auto pointer).
+						}
+						else if(attr_value == "standalone")
+						{
+							OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as STANDALONE" << std::endl;
+							clusterMode = osgVisual::dataIO_cluster::STANDALONE;
+						}
+					}
+					attr = attr->next; 
+				}	// WHILE attrib END
+			}
+
+			// Check for cluster node
+			if(cur_node->type == XML_ELEMENT_NODE && node_name == "cluster")
+			{
+				// Check Attributes to determine if the dummy implementation or any other implementation must be instantiated
+
+				// Pass XML attributes to cluster to analyse and configure it by cluster itself
+			}
+
+			// Check for extLink node
+			if(cur_node->type == XML_ELEMENT_NODE && node_name == "extlink")
+			{
+				// Check Attributes to determine if the dummy implementation or any other implementation must be instantiated
+
+				// Pass XML attributes to extlink to analyse and configure it by extLink itself
+			}
+
+		}	// FOR all nodes END
+
+		// clean up
+		xmlFreeDoc(tmpDoc); xmlCleanupParser();
+		return true;
+	}	// IF Config valid END
+	else
+	{
+		OSG_WARN << "ERROR: visual_data::processXMLConfiguration() - Module configuration not found" << std::endl;
+		return false;
+	}
 
 	return true;
