diff --git a/examples/DDCMS/CMakeLists.txt b/examples/DDCMS/CMakeLists.txt
index e88a5d51fa4dfe83b6d9278001263c40e571c3a8..6be97acf039367345b1019cfbce45bd5c867ae77 100644
--- a/examples/DDCMS/CMakeLists.txt
+++ b/examples/DDCMS/CMakeLists.txt
@@ -18,9 +18,10 @@ include ( ${DD4hep_DIR}/cmake/DD4hep.cmake )
 #------------------------------------------------------------------------------
 dd4hep_configure_output ()
 
+#                   [CLHEP REQUIRED]
+
 dd4hep_package(    DDCMS
   USES             [DD4hep REQUIRED COMPONENTS DDCore]
-                   [CLHEP REQUIRED]
 		   [ROOT REQUIRED COMPONENTS Geom GenVector]
   INCLUDE_DIRS     include
   INSTALL_INCLUDES include/DDCMS)
diff --git a/examples/DDCMS/data/cms_tracker.xml b/examples/DDCMS/data/cms_tracker.xml
index e882e4b62b4eb415e279b66cfdd64718e7273a4e..54d2d99002e302d0d2205acff25ea1945f2d810a 100644
--- a/examples/DDCMS/data/cms_tracker.xml
+++ b/examples/DDCMS/data/cms_tracker.xml
@@ -7,12 +7,12 @@
 
     <debug_shapes/>
     <debug_volumes/>
-    <debug_constants/>
     <debug_includes/>
     <debug_namespaces/>
     <debug_placements/>
-    <debug_algorithms/>
     <debug_visattr/>
+    <debug_algorithms/>
+    <debug_constants/>
 -->
   </debug>
   <open_geometry/>
@@ -23,8 +23,8 @@
     <Constant name="world_y" value="5*m"/>
     <Constant name="world_z" value="5*m"/>
     <Constant name="fm"      value="1e-12*m"/>
-    <Constant name="Air"     value="materials_Air"     type="string"/>
-    <Constant name="Vacuum"  value="materials_Vacuum"  type="string"/>
+    <Constant name="Air"     value="materials:Air"     type="string"/>
+    <Constant name="Vacuum"  value="materials:Vacuum"  type="string"/>
   </ConstantsSection>
   <ConstantsSection label="servicescylinderb.xml" eval="true">
 	<Constant name="zero" value="0.0*fm"/>
diff --git a/examples/DDCMS/data/pixfwdMaterials.xml b/examples/DDCMS/data/pixfwdMaterials.xml
index 6fee50e940a2d4e31d42e92879f890cd23422155..b450254d8c7637f8acb78510c482fd10f22b69a7 100644
--- a/examples/DDCMS/data/pixfwdMaterials.xml
+++ b/examples/DDCMS/data/pixfwdMaterials.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
-  <MaterialSection label="PixelForwardMaterial.xml">
+  <MaterialSection label="pixfwdMaterials.xml">
     <CompositeMaterial name="FPix_Alumina" density="3.96*g/cm3" method="mixture by weight" symbol=" ">
       <MaterialFraction fraction="0.52924272">
         <rMaterial name="trackermaterial:T_Aluminium" />
diff --git a/examples/DDCMS/include/DDCMS/DDCMS.h b/examples/DDCMS/include/DDCMS/DDCMS.h
index 31e4f69b7fcf9a88428a37505a2b2b55cd5bfc57..81561a0d69d42bee698be4966848a83b8e64eb59 100644
--- a/examples/DDCMS/include/DDCMS/DDCMS.h
+++ b/examples/DDCMS/include/DDCMS/DDCMS.h
@@ -73,13 +73,16 @@ namespace dd4hep {
       /// Return the namespace name of a component
       static std::string ns_name(const std::string& n);
       template <typename T> T attr(xml_elt_t elt,const xml_tag_t& n) const   {
-        std::string val = real_name(elt.attr<std::string>(n));
+        std::string raw = elt.attr<std::string>(n);
+        std::string val = real_name(raw);
         elt.setAttr(n,val);
         return elt.attr<T>(n);
       }
+      /// Resolve attribute with name resolution
       template <typename T> T attr(xml_elt_t elt,const xml_tag_t& n, T default_value) const   {
         if ( elt.hasAttr(n) )   {
-          std::string val = real_name(elt.attr<std::string>(n));
+          std::string raw = elt.attr<std::string>(n);
+          std::string val = real_name(raw);
           elt.setAttr(n,val);
           return elt.attr<T>(n);
         }
@@ -244,4 +247,6 @@ namespace dd4hep {
   }   /* End namespace cms      */
 }     /* End namespace dd4hep   */
 
+#define NAMESPACE_SEP ':'
+
 #endif /* DD4HEP_DDCMS_DDCMS_H  */
diff --git a/examples/DDCMS/src/DDCMS.cpp b/examples/DDCMS/src/DDCMS.cpp
index f626ada56398cb3913cd2cb943c78f02e6175a66..29390afe51751d97dd6140c9e2df4be4925738ed 100644
--- a/examples/DDCMS/src/DDCMS.cpp
+++ b/examples/DDCMS/src/DDCMS.cpp
@@ -31,8 +31,6 @@ using namespace std;
 using namespace dd4hep;
 using namespace dd4hep::cms;
 
-#define NAMESPACE_SEP '_'
-
 /// Create 3D rotation matrix from angles.
 Rotation3D dd4hep::cms::make_rotation3D(double thetaX, double phiX,
                                         double thetaY, double phiY,
@@ -48,10 +46,8 @@ Rotation3D dd4hep::cms::make_rotation3D(double thetaX, double phiX,
 string dd4hep::cms::detElementName(PlacedVolume pv)   {
   if ( pv.isValid() )  {
     string nam = pv.name();
-    string nnam = nam.substr(nam.find('_')+1);
+    string nnam = nam.substr(nam.find(NAMESPACE_SEP)+1);
     return nnam;
-    //size_t idx = nnam.rfind('_');
-    //return idx == string::npos ? nnam : nnam.substr(0,idx);
   }
   except("DDCMS","++ Cannot deduce name from invalid PlacedVolume handle!");
   return string();
@@ -137,24 +133,21 @@ string Namespace::real_name(const string& v)  const  {
   string val = v;
   while ( (idx=val.find('[')) != string::npos )  {
     val.erase(idx,1);
-    idp = val.find(':');
-    idq = val.find(']');
+    idp = val.find(NAMESPACE_SEP,idx);
+    idq = val.find(']',idx);
     val.erase(idq,1);
     if ( idp == string::npos || idp > idq )
       val.insert(idx,name);
     else if ( idp != string::npos && idp < idq )
       val[idp] = NAMESPACE_SEP;
   }
-  while ( (idx=val.find(':')) != string::npos ) val[idx]=NAMESPACE_SEP;
   return val;
 }
 
 /// Return the namespace name of a component
 string Namespace::ns_name(const string& nam)    {
   size_t idx;
-  if ( (idx=nam.find(':')) != string::npos )
-    return nam.substr(0,idx);
-  else if ( (idx=nam.find('_')) != string::npos )
+  if ( (idx=nam.find(NAMESPACE_SEP)) != string::npos )
     return nam.substr(0,idx);
   return "";
 }
@@ -162,9 +155,7 @@ string Namespace::ns_name(const string& nam)    {
 /// Strip off the namespace part of a given name
 string Namespace::obj_name(const string& nam)   {
   size_t idx;
-  if ( (idx=nam.find(':')) != string::npos )
-    return nam.substr(idx+1);
-  else if ( (idx=nam.find('_')) != string::npos )
+  if ( (idx=nam.find(NAMESPACE_SEP)) != string::npos )
     return nam.substr(idx+1);
   return "";
 }
@@ -205,10 +196,10 @@ const Rotation3D& Namespace::rotation(const string& nam)  const   {
     return (*i).second;
   else if ( nam == "NULL" )
     return s_null;
-  else if ( nam.find("_NULL") == nam.length()-5 )
+  else if ( nam.find(":NULL") == nam.length()-5 )
     return s_null;
   string n = nam;
-  if ( (idx=nam.find(':')) != string::npos )  {
+  if ( (idx=nam.find(NAMESPACE_SEP)) != string::npos )  {
     n[idx] = NAMESPACE_SEP;
     i = context->rotations.find(n);
     if ( i != context->rotations.end() )
@@ -252,7 +243,7 @@ Volume Namespace::volume(const string& nam, bool exc)  const   {
   if ( i != context->volumes.end() )  {
     return (*i).second;
   }
-  if ( (idx=nam.find(':')) != string::npos )  {
+  if ( (idx=nam.find(NAMESPACE_SEP)) != string::npos )  {
     string n = nam;
     n[idx] = NAMESPACE_SEP;
     i = context->volumes.find(n);
@@ -284,7 +275,7 @@ Solid Namespace::solid(const string& nam)  const   {
   auto i = context->shapes.find(n);
   if ( i != context->shapes.end() )
     return (*i).second;
-  if ( (idx=nam.find(':')) != string::npos )  {
+  if ( (idx=nam.find(NAMESPACE_SEP)) != string::npos )  {
     n = real_name(nam);
     n[idx] = NAMESPACE_SEP;
     i = context->shapes.find(n);
diff --git a/examples/DDCMS/src/plugins/DDDefinitions2Objects.cpp b/examples/DDCMS/src/plugins/DDDefinitions2Objects.cpp
index 2b7548bfd00266577c39f1bd868e09afa8c9300d..d2552a8c2db89297ff2f26ea45b09f13169fa00a 100644
--- a/examples/DDCMS/src/plugins/DDDefinitions2Objects.cpp
+++ b/examples/DDCMS/src/plugins/DDDefinitions2Objects.cpp
@@ -328,10 +328,10 @@ template <> void Converter<constant>::operator()(xml_h element) const  {
     if ( idp == string::npos || idp > idq )
       val.insert(idx,_ns.name);
     else if ( idp != string::npos && idp < idq )
-      val[idp] = '_';
+      val[idp] = NAMESPACE_SEP;
     idx = val.find('[',idx);
   }
-  while ( (idx=val.find(':')) != string::npos ) val[idx]='_';
+  //MSF NS while ( (idx=val.find(':')) != string::npos ) val[idx]=NAMESPACE_SEP;
   printout(_ns.context->debug_constants ? ALWAYS : DEBUG,
            "Constant","Unresolved: %s -> %s",real.c_str(),val.c_str());
   res->allConst[real] = val;
@@ -963,9 +963,11 @@ template <> void Converter<algorithm>::operator()(xml_h element) const  {
     return;
   }
   try {
+    size_t            idx;
     SensitiveDetector sd;
     Segmentation      seg;
     string            type = "DDCMS_"+_ns.real_name(name);
+    while ( (idx=type.find(NAMESPACE_SEP)) != string::npos ) type[idx]='_';
 
     // SensitiveDetector and Segmentation currently are undefined. Let's keep it like this
     // until we found something better.....