diff --git a/DDCore/src/LCDDImp.cpp b/DDCore/src/LCDDImp.cpp
index e777392d30cfdc3c7371868a8699920029e5cd93..bf78ec65b5d9c3c72286a7171919bfe22cf8b533 100644
--- a/DDCore/src/LCDDImp.cpp
+++ b/DDCore/src/LCDDImp.cpp
@@ -276,9 +276,7 @@ void LCDDImp::dump() const  {
 void LCDDImp::apply(const char* factory_type, int argc, char** argv)   {
   string fac = factory_type;
   try {
-    LCDD* lcdd = this;
-    char* fname = 0;
-    long result = ROOT::Reflex::PluginService::Create<long>(fac,lcdd,argc,argv);
+    long result = ROOT::Reflex::PluginService::Create<long>(fac,(LCDD*)this,argc,argv);
     if ( 0 == result ) {
       throw runtime_error("Failed to locate plugin to apply "+fac);
     }
diff --git a/DDCore/src/XML/LCDDConverter.cpp b/DDCore/src/XML/LCDDConverter.cpp
index 8f97817a8d2f958a03c5e3ec29158a823566f417..cfccc02deda34ff1bf027fbdc47b6017d7ea80f0 100644
--- a/DDCore/src/XML/LCDDConverter.cpp
+++ b/DDCore/src/XML/LCDDConverter.cpp
@@ -83,13 +83,13 @@ namespace  DD4hep { namespace XML {
 }}
 
 namespace {
-  XYZRotation getXYZangles(const Double_t * r)   {
+  XYZRotation getXYZangles(const Double_t* r)   {
     static Double_t rad = DEGREE_2_RAD;
-    Double_t cosb = sqrt(r[0] * r[0] + r[1] * r[1]);
+    Double_t cosb = sqrt(r[0]*r[0] + r[1]*r[1]);
     if (cosb > 0.00001) {
-      return XYZRotation(atan2(r[5], r[8]) * rad, atan2(-r[2], cosb) * rad, atan2(r[1], r[0]) * rad);
+      return XYZRotation(atan2(r[5], r[8])*rad, atan2(-r[2], cosb)*rad, atan2(r[1], r[0])*rad);
     }
-    return XYZRotation(atan2(-r[7], r[4]) * rad,atan2(-r[2], cosb) * rad,0);
+    return XYZRotation(atan2(-r[7], r[4])*rad,atan2(-r[2], cosb)*rad,0);
   }
 }
 
@@ -923,19 +923,16 @@ LCDDConverter::GeometryInfo::GeometryInfo()
 
 static long create_translator(Geometry::LCDD& lcdd, int argc, char** argv)   {
   LCDDConverter wr(lcdd);
-  char* fname = argc>0 ? argv[0] : 0;
+  FILE* file = argc>0 ? ::fopen(argv[0],"w") : stdout;
   wr.create(lcdd.world());
-  if ( fname ) {
-    FILE* file = ::fopen(fname,"w");
-    LCDDConverter::GeometryInfo& geo = wr.data();
-    if ( !file ) {
-      cout << "Failed to open output file:" << fname << endl;
-      return 0;
-    }
-    geo.doc->Print(file);
-    ::fclose(file);
+  LCDDConverter::GeometryInfo& geo = wr.data();
+  if ( !file ) {
+    cout << "Failed to open output file:" << argv[0] << endl;
+    return 0;
   }
+  geo.doc->Print(file);
+  if ( argc>0 ) ::fclose(file);
   return 1;
 }
 
-DECLARE_APPLY(lcdd_converter,create_translator);
+DECLARE_APPLY(DD4hepGeometry2LCDD,create_translator);
diff --git a/DDExamples/CLICSiD/CMakeLists.txt b/DDExamples/CLICSiD/CMakeLists.txt
index 753cffe3ffede8abb56b49ba147dfd22ab298b29..2dcaa5af1fae4353ece89b58faaa6bb30d9c6349 100644
--- a/DDExamples/CLICSiD/CMakeLists.txt
+++ b/DDExamples/CLICSiD/CMakeLists.txt
@@ -5,11 +5,12 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include
                      ${ROOT_INCLUDE_DIR}
                      ${XERCESC_INCLUDE_DIR})
 
+file(GLOB sources src/*.cpp)
+
 if(DD4HEP_USE_XERCESC)
   add_definitions(-DDD4HEP_USE_XERCESC)
-  file(GLOB sources src/*.cpp)
-  add_library(CLICSiD SHARED ${sources})
-  target_link_libraries(CLICSiD DD4hepCore ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES})
 endif()
-add_subdirectory(DDExamples/ILDExDisplay)
 
+add_library(CLICSiD SHARED ${sources})
+target_link_libraries(CLICSiD DD4hepCore ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES})
+dd4hep_generate_rootmap(CLICSiD)
diff --git a/DDExamples/UtilityApps/src/converter.cpp b/DDExamples/UtilityApps/src/converter.cpp
index 52e43aef9721c630699ca7440032626a07578a2c..89f7d9cc75cac8f5f766632d27d37af9348439db 100644
--- a/DDExamples/UtilityApps/src/converter.cpp
+++ b/DDExamples/UtilityApps/src/converter.cpp
@@ -25,11 +25,14 @@ using namespace DD4hep::Geometry;
 //______________________________________________________________________________
 namespace {
   void usage() {
-    cout << "<exe> -opt [-opt]                                                       \n"
-      "        -compact       <file>       Specify the compact geometry file         \n"
-      "                                    At least one compact geo file is required!\n"
-      "        -load_only                  Dry-run to only load geometry without     \n"
-      "                                    starting the dispay.                      \n"
+    cout << "geoConverter -opt [-opt]                                                \n"
+      "        Action flags:               Usage is exclusive!                       \n"
+      "        -compact2lcdd               Convert compact xml geometry to lcdd.     \n"
+      "        -compact2gdml               Convert compact xml geometry to gdml.   \n\n"
+      "        -input <file>   [REQUIRED]  Specify input file.                       \n"
+      "        -output <file>  [OPTIONAL]  Specify output file.                      \n"
+      "                                    if no output file is specified, the output\n"
+      "                                    device is stdout.                         \n"
 	 << endl;
     exit(EINVAL);
   }
@@ -37,19 +40,25 @@ namespace {
 
 //______________________________________________________________________________
 int main(int argc,char** argv)  {
-  bool dry_run = false;
+  bool compact2lcdd = false;
+  bool compact2gdml = false;
+  int output = 0;
   vector<char*> geo_files;
   for(int i=1; i<argc;++i) {
     if ( argv[i][0]=='-' ) {
-      if ( strncmp(argv[i],"-compact",2)==0 )
+      if ( strncmp(argv[i],"-compact2lcdd",2)==0 )
+	compact2lcdd = true;
+      if ( strncmp(argv[i],"-compact2gdml",2)==0 )
+	compact2gdml = true;
+      else if ( strncmp(argv[i],"-input",2)==0 )
 	geo_files.push_back(argv[++i]);
-      else if ( strncmp(argv[i],"-load_only",2)==0 )
-        dry_run = true;
+      else if ( strncmp(argv[i],"-output",2)==0 )
+        output = ++i;
       else
 	usage();
     }
-    else {  // This is the default
-      geo_files.push_back(argv[i]);
+    else {
+      usage();
     }
   }
   if ( geo_files.empty() )
@@ -60,8 +69,12 @@ int main(int argc,char** argv)  {
     LCDD& lcdd = LCDD::getInstance();  
     // Load all compact files
     lcdd.apply("DD4hepCompactLoader",int(geo_files.size()),&geo_files[0]);
-    // Create an interactive ROOT application
-    lcdd.apply("DD4hepGeometryConverter",args.first,args.second);
+    if ( compact2lcdd ) {
+      lcdd.apply("DD4hepGeometry2LCDD",output,&argv[output]);
+    }
+    else if ( compact2gdml ) {
+      lcdd.apply("DD4hepGeometry2GDML",output,&argv[output]);
+    }    
     return 0;
   }
   catch(const exception& e)  {
diff --git a/DDExamples/UtilityApps/src/display.cpp b/DDExamples/UtilityApps/src/display.cpp
index 333cdcb389f3dfffd89810547c263659db553742..e21a364c1b0c0b1018d20aa7da8fc91977eef199 100644
--- a/DDExamples/UtilityApps/src/display.cpp
+++ b/DDExamples/UtilityApps/src/display.cpp
@@ -26,7 +26,7 @@ using namespace DD4hep::Geometry;
 //______________________________________________________________________________
 namespace {
   void usage() {
-    cout << "<exe> -opt [-opt]                                                       \n"
+    cout << "displayGeo -opt [-opt]                                                  \n"
       "        -compact       <file>       Specify the compact geometry file         \n"
       "                                    At least one compact geo file is required!\n"
       "        -load_only                  Dry-run to only load geometry without     \n"
diff --git a/DDG4/CMakeLists.txt b/DDG4/CMakeLists.txt
index b416a8f9b5800d032bcd05936901c991db254cad..c63ef1d0699f9d32f74a8b15e473e395d711cf49 100644
--- a/DDG4/CMakeLists.txt
+++ b/DDG4/CMakeLists.txt
@@ -26,3 +26,4 @@ endif()
 add_library(DD4hepG4 SHARED ${sources})
 target_link_libraries(DD4hepG4 DD4hepCore ${ROOT_LIBRARIES} Reflex ${Geant4_LIBRARIES})
 #target_link_libraries(DD4hepG4 DD4hepCore ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES} ${Geant4_LIBRARIES})
+dd4hep_generate_rootmap(DD4hepG4)
diff --git a/cmake/thisdd4hep.csh b/cmake/thisdd4hep.csh
index 53962d5d1ca92c0fa1220e82ebe0f3ca189ce145..07b8b1ee92c08820f1c205f8302a1a5a156ed8fc 100644
--- a/cmake/thisdd4hep.csh
+++ b/cmake/thisdd4hep.csh
@@ -10,16 +10,16 @@ set THIS="`dirname ${ARGS[2]}`"
 
 #----LD_LIBRARY_PATH-----------------------------------------------------------------
 if ($?LD_LIBRARY_PATH) then
-   setenv LD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH      # Linux, ELF HP-UX
+   setenv LD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH      # Linux, ELF HP-UX
 else
-   setenv LD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib
+   setenv LD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib
 endif
 
 #----DYLD_LIBRARY_PATH---------------------------------------------------------------
 if ($?DYLD_LIBRARY_PATH) then
-   setenv DYLD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH  # Mac OS X
+   setenv DYLD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH  # Mac OS X
 else
-   setenv DYLD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib
+   setenv DYLD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib
 endif
 
 #----PYTHONPATH---------------------------------------------------------------
diff --git a/cmake/thisdd4hep.sh b/cmake/thisdd4hep.sh
index 67a17a1176cf3f833b5e10874cf09e3e3410325c..4bbf0f230d956b15b80d4397a00a7c08559e0bdc 100644
--- a/cmake/thisdd4hep.sh
+++ b/cmake/thisdd4hep.sh
@@ -18,16 +18,16 @@ fi
 
 #----LD_LIBRARY_PATH-----------------------------------------------------------------
 if [ -z "${LD_LIBRARY_PATH}" ]; then
-  LD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib; export LD_LIBRARY_PATH       # Linux, ELF HP-UX
+  LD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib; export LD_LIBRARY_PATH       # Linux, ELF HP-UX
 else
-  LD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
+  LD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
 fi
 
 #----DYLD_LIBRARY_PATH---------------------------------------------------------------
 if [ -z "${DYLD_LIBRARY_PATH}" ]; then
-  DYLD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib; export DYLD_LIBRARY_PATH   # Mac OS X
+  DYLD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib; export DYLD_LIBRARY_PATH   # Mac OS X
 else
-  DYLD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH
+  DYLD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH
 fi
 
 #----PYTHONPATH---------------------------------------------------------------