diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index bbe41520fe29a61cac45fe516769f63643ef5e3e..05765634aed745ceb36369e259c5fc791574afd9 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -61,6 +61,8 @@
 #include <QColorDialog>
 #include <QDebug>
 #include <QtXml>
+#include <QTemporaryFile>
+
 
 #include <iostream>
 #include <limits>
@@ -180,7 +182,7 @@ MainWindow::MainWindow(QWidget *parent) :
     int group=1; // there are max 3 groups of pedestrians
     bool mayPlay=false;
 
-    //	arguments.append("-online");
+    //    arguments.append("-online");
     //	arguments.append("-caption");
     arguments.append("-2D");
     // parse arguments list
@@ -424,6 +426,7 @@ FacilityGeometry* MainWindow::parseGeometry(QDomNode geoNode){
     {
         if (fileName.endsWith(".xml",Qt::CaseInsensitive))
         {
+            //parsing the file
             SaxParser::parseGeometryJPS(fileName,geometry);
         }
         else if (fileName.endsWith(".trav",Qt::CaseInsensitive))
@@ -436,12 +439,94 @@ FacilityGeometry* MainWindow::parseGeometry(QDomNode geoNode){
     //which is the only one which can directly be inserted into a file
     else
     {
+        //cout<<"online geo: "<<geoNode.toDocument().toString().toStdString()<<endl; exit(0);
+        //geoNode.toText().toComment().toDocument().toString()
+        QDomDocument doc("");
+        QDomNode geoNode;
+        if(!geoNode.isNull()){
+            cout<<"online geo: "<<geoNode.toElement().toDocument().toString().toStdString()<<endl; exit(0);
+        }
+
         //must not be a file name
         SaxParser::parseGeometryTRAV(fileName,geometry,geoNode);
     }
     return geometry;
 }
 
+// This function is only used in online Mode
+FacilityGeometry* MainWindow::parseGeometry(QString geometryString)
+{
+
+//    QDomDocument doc("");
+//    data = "<travisto>\n" +data+ "\n</travisto>\n";
+
+//    QString errorMsg="";
+//    doc.setContent(data,&errorMsg);
+
+//    if(!errorMsg.isEmpty()){
+//        Debug::Error("%s", (const char *)errorMsg.toStdString().c_str());
+//        return;
+//    }
+
+//    QDomNode geoNode =doc.elementsByTagName("geometry").item(0);
+
+    //create a temporary file with the content geonode
+
+//    QTemporaryFile file;
+//    file.setFileName(file.fileName()+".xml");
+//    if (file.open()) {
+//        QTextStream stream(&file);
+//        stream << geoNode << endl;
+//    }
+
+    QFile file("_geometry_tmp_file.xml");
+    if (file.open(QIODevice::WriteOnly | QIODevice::Text))
+    {
+        QTextStream stream(&file);
+        stream << geometryString << endl;
+    }
+
+    QString tmpFileName = file.fileName();
+
+    //check if there is a tag 'file' there in
+    QString geofileName = SaxParser::extractGeometryFilename(tmpFileName);
+
+    //cout<<"filename: "<<geofileName.toStdString()<<endl;exit(0);
+
+    FacilityGeometry* geometry = visualisationThread->getGeometry();
+
+    if(!geofileName.isEmpty())
+    {
+        if (geofileName.endsWith(".xml",Qt::CaseInsensitive))
+        {
+            //parsing the file
+            if(!SaxParser::parseGeometryJPS(geofileName,geometry))
+            {
+               SaxParser::parseGeometryXMLV04(geofileName,geometry);
+            }
+        }
+        else if (geofileName.endsWith(".trav",Qt::CaseInsensitive))
+        {
+            //must not be a file name
+            SaxParser::parseGeometryTRAV(geofileName,geometry);
+        }
+    }
+    // I assume it is a trav format node,
+    //which is the only one which can directly be inserted into a file
+    else
+    {
+        QDomDocument doc("");
+        QDomNode geoNode;
+
+        //must not be a file name
+        SaxParser::parseGeometryTRAV(geometryString,geometry,geoNode);
+    }
+
+    //delete the file
+    file.remove();
+    return geometry;
+}
+
 // TODO: still used?
 bool MainWindow::parsePedestrianShapes(QDomNode shapeNode, int groupID){
 
@@ -566,8 +651,7 @@ bool MainWindow::addPedestrianGroup(int groupID,QString fileName)
 
     //try to get a geometry filename
     QString geometry_file=SaxParser::extractGeometryFilename(fileName);
-
-    //cout<<"geometry NaMe: "<<geometry_file.toStdString()<<endl;
+    //cout<<"geometry name: "<<geometry_file.toStdString()<<endl;
 
     // if xml is detected, just load and show the geometry then exit
     if(geometry_file.endsWith(".xml",Qt::CaseInsensitive)){
@@ -1336,7 +1420,7 @@ void MainWindow::slotStartVisualisationThread(QString data,int numberOfAgents,fl
     slotToggleFirstPedestrianGroup();
 
     QDomDocument doc("");
-    data = "<travisto>\n" +data+ "\n</travisto>\n";
+    //data = "<travisto>\n" +data+ "\n</travisto>\n";
 
     QString errorMsg="";
     doc.setContent(data,&errorMsg);
@@ -1345,9 +1429,10 @@ void MainWindow::slotStartVisualisationThread(QString data,int numberOfAgents,fl
         Debug::Error("%s", (const char *)errorMsg.toStdString().c_str());
         return;
     }
+    //QDomNode geoNode =doc.elementsByTagName("geometry").item(0);
 
-    QDomNode geoNode =doc.elementsByTagName("geometry").item(0);
-    FacilityGeometry *geo = parseGeometry(geoNode);
+    //FacilityGeometry *geo = parseGeometry(geoNode);
+    FacilityGeometry *geo = parseGeometry(data);
 
     visualisationThread->slotSetFrameRate(frameRate);
     visualisationThread->setGeometry(geo);
diff --git a/src/MainWindow.h b/src/MainWindow.h
index ee30ea8194862c003a46336c219993d7de1d29fb..2263fbb9cb80c8765643335c6d7a74464722eaf9 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -278,7 +278,7 @@ private:
 	/// parse the geometry  Node and return a pointer to geometry object
 	/// used in online mode only
 	FacilityGeometry* parseGeometry(QDomNode geoNode);
-
+    FacilityGeometry* parseGeometry(QString geometryString);
 
 	/**
 	 * parse a shape node and get the initials heights and colors of pedestrians.
diff --git a/src/SaxParser.cpp b/src/SaxParser.cpp
index 4c946b7aead7f140deb8c64477f75a1e1faeb067..c5e7be6c1666deb9655726ba8a4c3abc61209bb4 100644
--- a/src/SaxParser.cpp
+++ b/src/SaxParser.cpp
@@ -97,9 +97,26 @@ bool SaxParser::startElement(const QString & /* namespaceURI */,
         for(int i=0;i<at.length();i++){
             if(at.localName(i)=="version")
             {
-                double version=at.value(i).toDouble();
-                InitHeader(version);
-                //cout<<"version found:"<<version<<endl;exit(0);
+                QStringList query = at.value(i).split(".");
+                int major=0;
+                int minor=0;
+                int patch=0;
+                switch (query.size() ) {
+                case 1:
+                    major=query.at(0).toInt();
+                    break;
+                case 2:
+                     major=query.at(0).toInt();
+                     minor=query.at(1).toInt();
+                    break;
+                case 3:
+                    major=query.at(0).toInt();
+                    minor=query.at(1).toInt();
+                    patch=query.at(2).toInt();
+                    break;
+                }
+                InitHeader(major,minor,patch);
+                //cout<<"version found:"<<at.value(i).toStdString()<<endl;exit(0);
             }
         }
     }else if (qName == "file") {
@@ -1005,6 +1022,7 @@ QString SaxParser::extractGeometryFilename(QString &filename)
         while (!in.atEnd()) {
             //look for a line with
             line = in.readLine();
+            //cout<<"checking: "<<line.toStdString()<<endl;
             if(line.contains("location" ,Qt::CaseInsensitive))
                 if(line.contains("<file" ,Qt::CaseInsensitive))
                 {//try to extract what ever is inside the quotes
@@ -1016,30 +1034,32 @@ QString SaxParser::extractGeometryFilename(QString &filename)
                     int endIndex = line.indexOf(end,startIndex);
                     if(endIndex <= 0)continue; // false alarm
                     extracted_geo_name= line.mid(startIndex,endIndex - startIndex);
+                    cout<<"geoName:"<<extracted_geo_name.toStdString()<<endl;
                     return extracted_geo_name;
-                    //cout<<"geoName:"<<extracted_geo_name.toStdString()<<endl;
                     //break;// we are done
                 }
             if(line.contains("<geometry" ,Qt::CaseInsensitive))
-            if(!line.contains("version" ,Qt::CaseInsensitive))
-                {//old format
-                    return "";
+                if(line.contains("version" ,Qt::CaseInsensitive))
+                {//real geometry file
+                    QFileInfo fileInfoGeometry(filename);
+                    extracted_geo_name=fileInfoGeometry.fileName();
+                    return extracted_geo_name;
                 }
         }
     }
 
     //maybe this is already the geometry file itself ?
     //do a rapid test
-    FacilityGeometry* geo = new FacilityGeometry();
-    QFileInfo fileInfoGeometry(filename);
-    extracted_geo_name=fileInfoGeometry.fileName();
+//    FacilityGeometry* geo = new FacilityGeometry();
+//    QFileInfo fileInfoGeometry(filename);
+//    extracted_geo_name=fileInfoGeometry.fileName();
 
-    //just check if it starts with geometry
-    //if(parseGeometryJPS(extracted_geo_name,geo)==true)
-    //{
-        return extracted_geo_name;
-    //}
-    delete geo;
+//    //just check if it starts with geometry
+//    //if(parseGeometryJPS(extracted_geo_name,geo)==true)
+//    //{
+//        return extracted_geo_name;
+//    //}
+//    delete geo;
 
     return "";
 }
@@ -1095,7 +1115,7 @@ void SaxParser::parseGeometryXMLV04(QString filename, FacilityGeometry *geo)
 	//parsing the subrooms
 	QDomNodeList xSubRoomsNodeList=doc.elementsByTagName("subroom");
 	//parsing the walls
-	for (unsigned int i = 0; i < xSubRoomsNodeList.length(); i++) {
+    for (  int i = 0; i < xSubRoomsNodeList.length(); i++) {
 		QDomElement xPoly = xSubRoomsNodeList.item(i).firstChildElement("polygon");
 		double position[3]={0,0,0};
 		double pos_count=1;
@@ -1222,10 +1242,10 @@ void SaxParser::parseGeometryXMLV04(QString filename, FacilityGeometry *geo)
 	}
 }
 
-void SaxParser::InitHeader(double version)
+void SaxParser::InitHeader(int major, int minor, int patch)
 {
     // set the parsing String map
-    if(version==0.5){
+    if(minor==5 && patch==0){
         _jps_xPos=QString("xPos");
         _jps_yPos=QString("yPos");
         _jps_zPos=QString("zPos");
@@ -1237,7 +1257,7 @@ void SaxParser::InitHeader(double version)
         _jps_ellipseOrientation=QString("ellipseOrientation");
         _jps_ellipseColor=QString("ellipseColor");
     }
-    else if (version==0.6){
+    else if ( (minor==6) || (minor==5 && patch==1) ){
         _jps_xPos=QString("x");
         _jps_yPos=QString("y");
         _jps_zPos=QString("z");
@@ -1251,8 +1271,8 @@ void SaxParser::InitHeader(double version)
     }
     else
     {
-        cout<<"unsupported header version: "<<version<<endl;
-        cout<<"Please use 0.5 or 0.6 "<<endl;
+        cout<<"unsupported header version: "<<major<<"."<<minor<<"."<<patch<<endl;
+        cout<<"Please use 0.5 0.5.1 or 0.6 "<<endl;
         exit(0);
     }
 }
diff --git a/src/SaxParser.h b/src/SaxParser.h
index faaa1f94c11775fb6d27f448ebbf84a587273c12..dbd4f6dd9e6e80e50884e2d13925828310bca764 100644
--- a/src/SaxParser.h
+++ b/src/SaxParser.h
@@ -79,7 +79,7 @@ public:
 private:
     //clear the mo
     void clearPoints();
-    void InitHeader(double version);
+    void InitHeader(int major, int minor, int patch);
 
 private:
     FacilityGeometry* geometry;
diff --git a/src/ThreadDataTransfert.cpp b/src/ThreadDataTransfert.cpp
index a7356c79640cf30a92acebada4c8c8d0064d1115..dc9a0da92a215140df4e18240e8e073425eff5cd 100644
--- a/src/ThreadDataTransfert.cpp
+++ b/src/ThreadDataTransfert.cpp
@@ -70,10 +70,9 @@ ThreadDataTransfer::ThreadDataTransfer(QObject *parent):
 	headerParsed=false;
 	errNr=0;
 	finished=false;
+    //Debug::setDebugLevel(Debug::ALL);
 }
 
-
-
 ThreadDataTransfer::~ThreadDataTransfer() {
 
 }
@@ -159,17 +158,16 @@ void ThreadDataTransfer::slotReadMessage(){
 void ThreadDataTransfer::slotProcessMessage(QString& data){
 	QDomDocument doc("");
 
-	data = "<travisto>\n" +data+ "\n</travisto>\n";
-
-	//cout<<data.toStdString()<<endl;
+    //data = "<travisto>\n" +data+ "</travisto>";
+    //cout<<data.toStdString()<<endl;
 
 	QString errorMsg="";
 	doc.setContent(data,&errorMsg);
 
 	if(!errorMsg.isEmpty()){
 		errNr++;
-		Debug::Error(">> %s",(const char *)errorMsg.toStdString().c_str());
-		Debug::Error(">> %s",(const char *)data.toStdString().c_str());
+        //Debug::Error(">> %s",(const char *)errorMsg.toStdString().c_str());
+        //Debug::Error(">> %s",(const char *)data.toStdString().c_str());
 		return;
 	}
 
@@ -191,6 +189,7 @@ void ThreadDataTransfer::slotProcessMessage(QString& data){
 	if(!geometry.isNull()) {
 		//emit signal_loadGeometry(data);
 		geoData=data;
+        Debug::Messages("geometry received and parsed");
 		//parseGeometryNode(geometry);
 	}
 	if(!dataList.isEmpty()) {
@@ -227,11 +226,6 @@ void ThreadDataTransfer::parseHeaderNode(QDomNode header ){
 		emit signal_stopVisualisationThread(true);
 	}
 
-
-	// no need
-	//unsigned long timeFirstFrame_us = header.toElement().elementsByTagName("timeFirstFrame").item(0)
-	//unsigned long timeFirstFrame_s = header.toElement().elementsByTagName("timeFirstFrame").item(0)
-	//	.toElement().attribute("sec",0).toUInt();
 	QString frameRateStr=getTagValueFromElement(header, "frameRate");
 	frameRate =frameRateStr.toFloat(&ok);
 
@@ -245,8 +239,34 @@ void ThreadDataTransfer::parseHeaderNode(QDomNode header ){
 		msgBox.setIcon(QMessageBox::Critical);
 		msgBox.exec();
 		frameRate=25;
-
 	}
+
+    //get the header version
+    if(header.toElement().hasAttributes())
+    {
+        QString version=header.toElement().attribute("version");
+        QStringList query = version.split(".");
+        int major=0;
+        int minor=0;
+        int patch=0;
+        switch (query.size() ) {
+        case 1:
+            major=query.at(0).toInt();
+            break;
+        case 2:
+             major=query.at(0).toInt();
+             minor=query.at(1).toInt();
+            break;
+        case 3:
+            major=query.at(0).toInt();
+            minor=query.at(1).toInt();
+            patch=query.at(2).toInt();
+            break;
+        }
+        InitHeader(major,minor,patch);
+        //cout<<"version found:"<<at.value(i).toStdString()<<endl;exit(0);
+    }
+
 	headerParsed=true;
 }
 
@@ -259,56 +279,34 @@ QString ThreadDataTransfer::getTagValueFromElement(QDomNode node,
 }
 
 void ThreadDataTransfer::parseDataNode(QDomNodeList frames){
-	//static int frameNumbers=0;
-
-	//parsing the data
-	// TODO: i amybe a problem
-	//emit signal_CurrentAction("parsing data");
-
 
     for (int i = 0; i < frames.length(); i++) {
 		Frame *newFrame = new Frame();
 		QDomElement el = frames.item(i).toElement();
 		QDomNodeList agents = el.elementsByTagName("agent");
-		//cout << "found:  " << agents.length() <<" agents" <<endl;
-        for (int i = 0; i < agents.length(); i++) {
 
+        for (int i = 0; i < agents.length(); i++)
+        {
 			bool ok=false;
 			int id=agents.item(i).toElement().attribute("ID").toInt(&ok);
 			if(!ok) continue; // invalid ID
-            double xPos=agents.item(i).toElement().attribute("xPos","0").toDouble()*FAKTOR;
-            double yPos=agents.item(i).toElement().attribute("yPos","0").toDouble()*FAKTOR;
-            double zPos=agents.item(i).toElement().attribute("zPos","0").toDouble()*FAKTOR;
-			double agent_color =std::numeric_limits<double>::quiet_NaN();
-
-            double xVel=agents.item(i).toElement().attribute("xVel").toDouble(&ok)*FAKTOR;
-			if(!ok)xVel=std::numeric_limits<double>::quiet_NaN();
-            double yVel=agents.item(i).toElement().attribute("yVel").toDouble(&ok)*FAKTOR;
-			if(!ok)yVel=std::numeric_limits<double>::quiet_NaN();
-            double zVel=agents.item(i).toElement().attribute("zVel").toDouble(&ok)*FAKTOR;
-			if(!ok)zVel=std::numeric_limits<double>::quiet_NaN();
-
-			//coordinates of the ellipse, default to the head of the agent
-            double el_x=agents.item(i).toElement().attribute("xEll").toDouble(&ok)*FAKTOR;
-			if(!ok)	el_x=xPos;
-            double el_y=agents.item(i).toElement().attribute("yEll").toDouble(&ok)*FAKTOR;
-			if(!ok)	el_y=yPos;
-            double el_z=agents.item(i).toElement().attribute("zEll").toDouble(&ok)*FAKTOR;
-			if(!ok)	el_z=zPos;
-
-            double dia_a=agents.item(i).toElement().attribute("radiusA").toDouble(&ok)*FAKTOR;
+            double xPos=agents.item(i).toElement().attribute(_jps_xPos,"0").toDouble()*FAKTOR;
+            double yPos=agents.item(i).toElement().attribute(_jps_yPos,"0").toDouble()*FAKTOR;
+            double zPos=agents.item(i).toElement().attribute(_jps_zPos,"0").toDouble()*FAKTOR;
+
+            double dia_a=agents.item(i).toElement().attribute(_jps_radiusA).toDouble(&ok)*FAKTOR;
 			if(!ok)dia_a=std::numeric_limits<double>::quiet_NaN();
-            double dia_b=agents.item(i).toElement().attribute("radiusB").toDouble(&ok)*FAKTOR;
+            double dia_b=agents.item(i).toElement().attribute(_jps_radiusB).toDouble(&ok)*FAKTOR;
 			if(!ok)dia_b=std::numeric_limits<double>::quiet_NaN();
-			double el_angle=agents.item(i).toElement().attribute("ellipseOrientation").toDouble(&ok);
+            double el_angle=agents.item(i).toElement().attribute(_jps_ellipseOrientation).toDouble(&ok);
 			if(!ok){el_angle=std::numeric_limits<double>::quiet_NaN(); }
-			double el_color=agents.item(i).toElement().attribute("ellipseColor").toDouble(&ok);
+            double el_color=agents.item(i).toElement().attribute(_jps_ellipseColor).toDouble(&ok);
 			if(!ok)el_color=std::numeric_limits<double>::quiet_NaN();
 
 			double pos[3]={xPos,yPos,zPos};
-			double vel[3]={xVel,yPos,zPos};
-			double ellipse[7]={el_x,el_y,el_z,dia_a,dia_b,el_angle,el_color};
-			double para[2]={agent_color,el_angle};
+            //double vel[3]={xVel,yPos,zPos};
+            //double ellipse[7]={el_x,el_y,el_z,dia_a,dia_b,el_angle,el_color};
+            //double para[2]={agent_color,el_angle};
             double angle[3]={0,0,el_angle};
             double radius[3]={dia_a,dia_b,30.0};
 
@@ -326,15 +324,12 @@ void ThreadDataTransfer::parseDataNode(QDomNodeList frames){
 		//	frameNumbers++;
 	}
 
-	//	cout <<"frames size: "<<extern_trajectories_firstSet.getSize()<<endl;
-	//	cout <<"frames numbes: "<<frameNumbers<<endl;
 	if(headerParsed==true){
 		//		static int count=1;
 		//		count++;
 		//		if (count<100) return; // start after 100 frames
 		emit signal_startVisualisationThread(geoData,numberOfAgents,frameRate);
 		headerParsed=false;
-		//		count=0;
 	}
 }
 
@@ -386,8 +381,6 @@ void ThreadDataTransfer::parseShapeNode(QDomNode shape){
 	QDomNodeList agents = shape.toElement().elementsByTagName("agentInfo");
 	QStringList heights;
 	QStringList colors;
-
-
     for (int i = 0; i < agents.length(); i++) {
 
 		bool ok=false;
@@ -414,3 +407,31 @@ void ThreadDataTransfer::parseShapeNode(QDomNode shape){
 	extern_trajectories_firstSet.setInitialHeights(heights);
 	extern_trajectories_firstSet.setInitialColors(colors);
 }
+
+void ThreadDataTransfer::InitHeader(int major, int minor, int patch)
+{
+    // set the parsing String map
+    if(minor==5 && patch==0){
+        _jps_xPos=QString("xPos");
+        _jps_yPos=QString("yPos");
+        _jps_zPos=QString("zPos");
+        _jps_radiusA=QString("radiusA");
+        _jps_radiusB=QString("radiusB");
+        _jps_ellipseOrientation=QString("ellipseOrientation");
+        _jps_ellipseColor=QString("ellipseColor");
+    }
+    else if ( (minor==6) || (minor==5 && patch==1) ){
+        _jps_xPos=QString("x");
+        _jps_yPos=QString("y");
+        _jps_zPos=QString("z");
+        _jps_radiusA=QString("rA");
+        _jps_radiusB=QString("rB");
+        _jps_ellipseOrientation=QString("eO");
+        _jps_ellipseColor=QString("eC");
+    }
+    else
+    {
+        cout<<"unsupported header version: "<<major<<"."<<minor<<"."<<patch<<endl;
+        cout<<"Please use 0.5 0.5.1 or 0.6 "<<endl;
+    }
+}
diff --git a/src/ThreadDataTransfert.h b/src/ThreadDataTransfert.h
index e2f2a42f75226a316f96425b3f81f3e90374a93b..f738cfe13c4cab602b4343b7e8ea88631a5ea038 100644
--- a/src/ThreadDataTransfert.h
+++ b/src/ThreadDataTransfert.h
@@ -74,6 +74,10 @@ public:
 	/// parse data node
 	void parseDataNode(QDomNodeList data);
 
+    //old and new geometry format
+    void InitHeader(int major, int minor, int patch);
+
+
 private:
 	QString getTagValueFromElement(QDomNode node,
 			const char * tagName);
@@ -107,8 +111,6 @@ public Q_SLOTS:
 	void slotProcessMessage(QString& data);
 	void slotConnectionClosed();
 	void slotDisplayError(QAbstractSocket::SocketError socketError);
-	//void slotConnected();
-	//void slotDisconnected();
 
 
 private:
@@ -121,6 +123,16 @@ private:
 	int numberOfAgents;
 	float frameRate;
 	bool finished;
+
+    // temp variables to be removed in the next versions
+    //header dependant variables
+    QString _jps_xPos;
+    QString _jps_yPos;
+    QString _jps_zPos;
+    QString _jps_radiusA;
+    QString _jps_radiusB;
+    QString _jps_ellipseOrientation;
+    QString _jps_ellipseColor;
 };
 
 #endif /* THREADDATATRANSFERT_H_ */
diff --git a/src/geometry/FacilityGeometry.cpp b/src/geometry/FacilityGeometry.cpp
index c4a2a995609066d9a4f79e125e9775cb4ed4ba8e..853e2a2080f271657110f83540ddb97b0bf9a370 100644
--- a/src/geometry/FacilityGeometry.cpp
+++ b/src/geometry/FacilityGeometry.cpp
@@ -550,7 +550,7 @@ void FacilityGeometry::addFloor(vtkPolyData* polygonPolyData )
 
     floorActor->SetMapper(mapper);
     floorActor->GetProperty()->SetColor(0,0,1);
-    floorActor->GetProperty()->SetOpacity(0.5);
+    floorActor->GetProperty()->SetOpacity(0.4);
 
     assembly2D->AddPart(floorActor);
     assembly3D->AddPart(floorActor);