Index: osgVisual/trunk/include/util/visual_util.h
===================================================================
--- osgVisual/trunk/include/util/visual_util.h	(revision 217)
+++ osgVisual/trunk/include/util/visual_util.h	(revision 218)
@@ -18,4 +18,5 @@
 #include <string.h>
 #include <iostream>
+#include <sstream>
 #include <libxml/parser.h>
 #include <libxml/tree.h>
@@ -269,4 +270,8 @@
 	static std::string getAnimationPathFromXMLConfig(std::string configFilename);
 
+	static int strToDouble(std::string s);
+	static double strToInt(std::string s);
+	static bool strToBool(std::string s);
+
 private: 
 	/**
Index: osgVisual/trunk/src/object/object_updater.cpp
===================================================================
--- osgVisual/trunk/src/object/object_updater.cpp	(revision 217)
+++ osgVisual/trunk/src/object/object_updater.cpp	(revision 218)
@@ -47,5 +47,5 @@
 		object_->bankAngle_phi = osg::DegreesToRadians(osgVisual::visual_dataIO::getInstance()->getSlotDataAsDouble(updater_rot_x, osgVisual::dataIO_slot::TO_OBJ ));
 	if(!updater_label.empty())
-		object_->updateLabelText("autoupdated", osgVisual::visual_dataIO::getInstance()->getSlotDataAsString(updater_label, osgVisual::dataIO_slot::TO_OBJ ));
+		object_->updateLabelText("default", osgVisual::visual_dataIO::getInstance()->getSlotDataAsString(updater_label, osgVisual::dataIO_slot::TO_OBJ ));
 
 	// Finally execute nested PreUpdater
Index: osgVisual/trunk/src/object/visual_object.cpp
===================================================================
--- osgVisual/trunk/src/object/visual_object.cpp	(revision 217)
+++ osgVisual/trunk/src/object/visual_object.cpp	(revision 218)
@@ -84,4 +84,5 @@
 	std::string objectname="", filename="", label="";
 	bool dynamic = false;
+	int trackingID=-1;
 	double lat=0.0, lon=0.0, alt=0.0, rot_x=0.0, rot_y=0.0, rot_z=0.0;
 	double cam_trans_x=0.0, cam_trans_y=0.0, cam_trans_z=0.0, cam_rot_x=0.0, cam_rot_y=0.0, cam_rot_z=0.0;
@@ -98,12 +99,8 @@
 		std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
 		if( attr_name == "objectname" ) objectname = attr_value;
+		if( attr_name == "trackingid" ) trackingID = util::strToInt(attr_value);
 		if( attr_name == "label" ) label = attr_value;
-		if( attr_name == "dynamic" ) 
-		{
-			if(attr_value=="yes")
-				dynamic=true;
-			else
-				dynamic=false;
-		}
+		if( attr_name == "dynamic" ) dynamic = util::strToBool(attr_value);
+
 		attr = attr->next; 
 	}
@@ -119,19 +116,8 @@
 				std::string attr_name=reinterpret_cast<const char*>(attr->name);
 				std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
-				if( attr_name == "lat" )
-				{
-					std::stringstream sstr(attr_value);
-					sstr >> lat;
-				}
-				if( attr_name == "lon" )
-				{
-					std::stringstream sstr(attr_value);
-					sstr >> lon;
-				}
-				if( attr_name == "alt" ) 
-				{
-					std::stringstream sstr(attr_value);
-					sstr >> alt;
-				}
+				if( attr_name == "lat" ) lat = util::strToDouble(attr_value);
+				if( attr_name == "lon" ) lon = util::strToDouble(attr_value);
+				if( attr_name == "alt" ) alt = util::strToDouble(attr_value);
+
 				attr = attr->next; 
 			}
@@ -145,19 +131,8 @@
 				std::string attr_name=reinterpret_cast<const char*>(attr->name);
 				std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
-				if( attr_name == "rot_x" )
-				{
-					std::stringstream sstr(attr_value);
-					sstr >> rot_x;
-				}
-				if( attr_name == "rot_y" )
-				{
-					std::stringstream sstr(attr_value);
-					sstr >> rot_y;
-				}
-				if( attr_name == "rot_z" ) 
-				{
-					std::stringstream sstr(attr_value);
-					sstr >> rot_z;
-				}
+				if( attr_name == "rot_x" ) rot_x = util::strToDouble(attr_value);
+				if( attr_name == "rot_y" ) rot_y = util::strToDouble(attr_value);
+				if( attr_name == "rot_z" ) rot_z = util::strToDouble(attr_value);
+
 				attr = attr->next; 
 			}
@@ -228,19 +203,8 @@
 						std::string attr_name=reinterpret_cast<const char*>(attr->name);
 						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
-						if( attr_name == "trans_x" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> cam_trans_x;
-						}
-						if( attr_name == "trans_y" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> cam_trans_y;
-						}
-						if( attr_name == "trans_z" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> cam_trans_y;
-						}
+						if( attr_name == "trans_x" ) cam_trans_x = util::strToDouble(attr_value);
+						if( attr_name == "trans_y" ) cam_trans_y = util::strToDouble(attr_value);
+						if( attr_name == "trans_z" ) cam_trans_z = util::strToDouble(attr_value);
+
 						attr = attr->next; 
 					}
@@ -253,19 +217,8 @@
 						std::string attr_name=reinterpret_cast<const char*>(attr->name);
 						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
-						if( attr_name == "rot_x" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> cam_rot_x;
-						}
-						if( attr_name == "rot_y" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> cam_rot_y;
-						}
-						if( attr_name == "rot_z" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> cam_rot_y;
-						}
+						if( attr_name == "rot_x" ) cam_rot_x = util::strToDouble(attr_value);
+						if( attr_name == "rot_y" ) cam_rot_y = util::strToDouble(attr_value);
+						if( attr_name == "rot_z" ) cam_rot_z = util::strToDouble(attr_value);
+
 						attr = attr->next; 
 					}
@@ -298,19 +251,8 @@
 						std::string attr_name=reinterpret_cast<const char*>(attr->name);
 						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
-						if( attr_name == "rot_x" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> geometry_rot_x;
-						}
-						if( attr_name == "rot_y" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> geometry_rot_y;
-						}
-						if( attr_name == "rot_z" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> geometry_rot_z;
-						}
+						if( attr_name == "rot_x" ) geometry_rot_x = util::strToDouble(attr_value);
+						if( attr_name == "rot_y" ) geometry_rot_y = util::strToDouble(attr_value);
+						if( attr_name == "rot_z" ) geometry_rot_z = util::strToDouble(attr_value);
+
 						attr = attr->next; 
 					}
@@ -323,19 +265,8 @@
 						std::string attr_name=reinterpret_cast<const char*>(attr->name);
 						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
-						if( attr_name == "scale_x" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> geometry_scale_x;
-						}
-						if( attr_name == "scale_y" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> geometry_scale_y;
-						}
-						if( attr_name == "scale_z" )
-						{
-							std::stringstream sstr(attr_value);
-							sstr >> geometry_scale_z;
-						}
+						if( attr_name == "scale_x" ) geometry_scale_x = util::strToDouble(attr_value);
+						if( attr_name == "scale_y" ) geometry_scale_y = util::strToDouble(attr_value);
+						if( attr_name == "scale_z" ) geometry_scale_z = util::strToDouble(attr_value);
+
 						attr = attr->next; 
 					}
@@ -354,5 +285,5 @@
 	object->bankAngle_phi = rot_z;
 	if(label!="")
-		object->addLabel("XML_defined_label", label);
+		object->addLabel("default", label);
 	if(dynamic)
 	{
Index: osgVisual/trunk/src/util/visual_util.cpp
===================================================================
--- osgVisual/trunk/src/util/visual_util.cpp	(revision 217)
+++ osgVisual/trunk/src/util/visual_util.cpp	(revision 218)
@@ -535,2 +535,28 @@
 	return animationpath;
 }
+
+int util::strToDouble(std::string s)
+{
+	double tmp;
+	std::stringstream sstr(s);
+	sstr >> tmp;
+	return tmp;
+}
+
+double util::strToInt(std::string s)
+{
+	int tmp;
+	std::stringstream sstr(s);
+	sstr >> tmp;
+	return tmp;
+}
+
+bool util::strToBool(std::string s)
+{
+	if(s=="yes")
+		return(true);
+	if(s=="no")
+		return(false);
+	OSG_ALWAYS << __FUNCTION__ << "Warning:Unable to convert "<< s <<" to bool, using false as default!" << std::endl;
+	return(false);
+}
