Index: osgVisual/include/dataIO/visual_dataIO.h
===================================================================
--- osgVisual/include/dataIO/visual_dataIO.h	(revision 115)
+++ osgVisual/include/dataIO/visual_dataIO.h	(revision 116)
@@ -155,6 +155,6 @@
 	double getSlotDataAsDouble(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_ );
 	std::string getSlotDataAsString(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_ );
-	void setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, std::string sValue_ );
-	void setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, double value_ );
+	osgVisual::dataIO_slot* setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, std::string sValue_ );
+	osgVisual::dataIO_slot* setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, double value_ );
 
 	int getSlotNum() {return dataSlots.size();}
Index: osgVisual/include/extLink/dataIO_extLinkVCL.h
===================================================================
--- osgVisual/include/extLink/dataIO_extLinkVCL.h	(revision 115)
+++ osgVisual/include/extLink/dataIO_extLinkVCL.h	(revision 116)
@@ -16,8 +16,16 @@
 */
 
-#include <dataIO_extLink.h>
+#include <dataIO_extLink.h>	// Base class
 #include <osg/Notify>
 #include <osgDB/FileUtils>
+
+// VCL
 #include <winsock2.h>
+
+// XML Parser
+#include <stdio.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
 
 // VCL
@@ -77,5 +85,15 @@
 	bool writebackFROM_OBJvalues();
 
+
 private:
+	bool parseVCLConfig();
+	void checkXMLNode(xmlNode * a_node);
+	void addChannels(xmlNode * a_node, std::string channelName_, dataIO_slot::dataDirection direction_ );
+
+	std::string VCLConfigFilename;
+	std::vector< CVCLVariable<double>* > extLinkChannels;
+	std::vector< osgVisual::dataIO_slot* > extLinkSlots;
+	bool configFileValid;
+
 	CVCLVariable<double> SAENGER1_POS_LAT;
     CVCLVariable<double> SAENGER1_POS_LON;
Index: osgVisual/src/core/visual_core.cpp
===================================================================
--- osgVisual/src/core/visual_core.cpp	(revision 115)
+++ osgVisual/src/core/visual_core.cpp	(revision 116)
@@ -48,5 +48,5 @@
 
 	// Test memory leak (todo)
-	//double* test = new double[1000];
+	double* test = new double[1000];
 
 	#ifdef USE_SPACENAVIGATOR
Index: osgVisual/src/dataIO/visual_dataIO.cpp
===================================================================
--- osgVisual/src/dataIO/visual_dataIO.cpp	(revision 115)
+++ osgVisual/src/dataIO/visual_dataIO.cpp	(revision 116)
@@ -248,5 +248,5 @@
 }
 
-void visual_dataIO::setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, std::string sValue_ )
+osgVisual::dataIO_slot* visual_dataIO::setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, std::string sValue_ )
 {
 	bool slotFound = false;
@@ -260,4 +260,5 @@
 			dataSlots[i].sValue = sValue_;
 			slotFound = true;
+			return &(dataSlots[i]);
 		}
 		
@@ -275,7 +276,9 @@
 		dataSlots.push_back( newSlot );
 	}
-}
-
-void visual_dataIO::setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, double value_ )
+
+	return NULL;
+}
+
+osgVisual::dataIO_slot* visual_dataIO::setSlotData(std::string variableName_, osgVisual::dataIO_slot::dataDirection direction_, double value_ )
 {
 	// iterate through slotlist. If found, return pointer, else add slot to list
@@ -290,4 +293,5 @@
 			dataSlots[i].value = value_;
 			slotFound = true;
+			return &(dataSlots[i]);
 		}	
 	}
@@ -304,4 +308,6 @@
 		dataSlots.push_back( newSlot );
 	}
+
+	return NULL;
 }
 
Index: osgVisual/src/extLink/dataIO_extLinkVCL.cpp
===================================================================
--- osgVisual/src/extLink/dataIO_extLinkVCL.cpp	(revision 115)
+++ osgVisual/src/extLink/dataIO_extLinkVCL.cpp	(revision 116)
@@ -35,8 +35,11 @@
 	OSG_NOTIFY( osg::ALWAYS ) << "extLinkVCL init()" << std::endl;
 
-	std::string VCLConfigFilename = "osgVisual.xml";
+	VCLConfigFilename = "osgVisual.xml";
+	
 	if ( osgDB::fileExists( VCLConfigFilename ) )
 	{
 		CVCLIO::GetInstance().LoadProject(VCLConfigFilename.c_str());
+
+		parseVCLConfig();
 		bool error = false;
 
@@ -145,2 +148,111 @@
 	return true;
 }
+
+bool dataIO_extLinkVCL::parseVCLConfig()
+{
+	configFileValid = false;
+	xmlDoc *doc = NULL;
+    xmlNode *root_element = NULL;
+  	
+	doc = xmlReadFile(VCLConfigFilename.c_str(), NULL, 0);
+	if (doc == NULL)
+	{
+		configFileValid = false;
+		std::cout << "error: could not parse file" << VCLConfigFilename;
+	}
+	else
+	{
+		//  Get the root element node
+		root_element = xmlDocGetRootElement(doc);
+
+		checkXMLNode(root_element);
+
+		// free the document
+		xmlFreeDoc(doc);;
+	}
+	// Free the global variables that may have been allocated by the parser.
+	xmlCleanupParser();
+
+	if(!configFileValid)
+		OSG_ALWAYS << "ERROR: XML file seems not to be a valid VCL configuration file!" << std::endl;
+
+	return true;
+}
+
+void dataIO_extLinkVCL::checkXMLNode(xmlNode * a_node)
+{
+    for (xmlNode *cur_node = a_node; cur_node; cur_node = cur_node->next)
+	{
+		std::string node_name=reinterpret_cast<const char*>(cur_node->name);
+		if(cur_node->type == XML_ELEMENT_NODE && node_name == "CONFIGURATION")
+		{
+			std::cout << "XML node CONFIGURATION found" << std::endl;
+			configFileValid = true;
+		}
+
+        if (cur_node->type == XML_ELEMENT_NODE && node_name == "CHANNEL")
+		{
+			std::cout << "XML node CHANNEL found" << std::endl;
+
+			// Extract channel infos like name, direction and extract channels
+			std::string name;
+			dataIO_slot::dataDirection direction;
+			xmlAttr  *attr = cur_node->properties;
+			while ( attr ) 
+			{ 
+				std::string attr_name=reinterpret_cast<const char*>(attr->name);
+				if( attr_name == "name" )
+					name = reinterpret_cast<const char*>(attr->children->content);
+				if( attr_name == "multicast_in_group" )
+					direction = dataIO_slot::TO_OBJ;
+				if( attr_name == "multicast_out_group" )
+					direction = dataIO_slot::FROM_OBJ;
+				//std::cout << "Attribute name: " << attr->name << " value: " << attr->children->content << std::endl;
+				attr = attr->next; 
+			} 
+			addChannels(cur_node->children, name, direction );
+	
+            //printf("node type: Element, name: %s\n", cur_node->name);
+			std::cout << "Processing children at " << cur_node->children << std::endl;
+        }	// IF(CHANNEL) END
+
+		// Iterate to the next nodes to find channels.
+        checkXMLNode(cur_node->children);		
+    }	// FOR END
+}
+
+void dataIO_extLinkVCL::addChannels(xmlNode * a_node, std::string channelName_, dataIO_slot::dataDirection direction_ )
+{
+	if(!a_node)
+		return;
+
+	OSG_ALWAYS << "Processing channels for channel " << channelName_ << " with the direction " << direction_ << std::endl;
+
+	for (xmlNode *cur_node = a_node; cur_node; cur_node = cur_node->next)
+	{
+		OSG_ALWAYS << "Found entry!" << std::endl;
+
+		// Extract ENTRY - name
+		std::string entryName;
+		xmlAttr  *attr = cur_node->properties;
+		while ( attr ) 
+		{ 
+			std::string attr_name=reinterpret_cast<const char*>(attr->name);
+			if( attr_name == "name" )
+				entryName = reinterpret_cast<const char*>(attr->children->content);
+			//std::cout << "Attribute name: " << attr->name << " value: " << attr->children->content << std::endl;
+			attr = attr->next; 
+		} 
+
+		// Store VCL variable
+		CVCLVariable<double>* tmp = new CVCLVariable<double>;
+		extLinkChannels.push_back(tmp);
+
+		// Attach VCL variable to channel:
+		if( !tmp->Attach(channelName_.c_str(), entryName.c_str() ) )
+			OSG_ALWAYS << "ERROR - dataIO_extLinkVCL::addChannels(): unable to attach VCL variable entryName: " << entryName << " to channel: " << channelName_ << std::endl;
+
+		// Set SLOT data and store SLOT pointer 
+		extLinkSlots.push_back( osgVisual::visual_dataIO::getInstance()->setSlotData( entryName, direction_, 0 ) );
+	}	// FOR each ENTRY END
+}
Index: osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp
===================================================================
--- osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp	(revision 115)
+++ osgVisual/src/sky_Silverlining/visual_skySilverLining.cpp	(revision 116)
@@ -227,4 +227,6 @@
 	this->addDrawable(skyDrawable);
 	this->addDrawable(cloudsDrawable);
+
+	//SilverLining::Atmosphere::EnableHDR( true );
 }
 
