diff --git a/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp b/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp
index d83a7bdc21fc2aa757400f0389dd00c5455b00a6..1fb48768df5a9f4f9a5318495da9e028cbdd1c82 100644
--- a/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp
+++ b/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp
@@ -33,27 +33,11 @@ namespace Options {
     opt.add_options()(
         "mat-mapping-collection",
         po::value<std::string>()->default_value("material-tracks"),
-        "Collection name of the material tracks for reading.");
+        "Collection name of the material tracks for reading.")(
+        "mat-mapping-emptybins",
+        po::value<bool>()->default_value(true),
+        "Empty bin correction (recommended). Corrects for vaccuum/emtpy assigments.");
   }
 
-  ///@brief  Read the digitization options and return a Config object
-  ///
-  ///@tparam omap_t Type of the options map
-  ///@param vm the options map to be read out
-  // template <typename omap_t>
-  // DigitizationAlgorithm::Config
-  // readDigitizationConfig(const omap_t& vm)
-  //{
-  //  // create a config
-  //  DigitizationAlgorithm::Config digiConfig;
-  //  digiConfig.spacePointCollection
-  //      = vm["digi-spacepoints"].template as<std::string>();
-  //  digiConfig.clusterCollection
-  //      = vm["digi-clusters"].template as<std::string>();
-  //  digiConfig.resolutionFile
-  //      = vm["digi-resolution-file"].template as<std::string>();
-  //  // and return the config
-  //  return digiConfig;
-  //}
 }  // namespace Options
 }  // namespace FW
diff --git a/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp b/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp
index 18d0cd34f8acf351f56b288e46095cfe5376ff79..791c129a90ed01a60273408cd2ae64a1603e46f1 100644
--- a/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp
+++ b/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp
@@ -69,7 +69,7 @@ namespace Options {
         po::value<read_range>()->multitoken()->default_value({-M_PI, M_PI}),
         "Azimutal angle phi range for proprapolated tracks.")(
         "prop-eta-range",
-        po::value<read_range>()->multitoken()->default_value({-4., 4.}),
+        po::value<read_range>()->multitoken()->default_value({-6., 6.}),
         "Pseudorapidity range for proprapolated tracks.")(
         "prop-pt-range",
         po::value<read_range>()->multitoken()->default_value(
diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml
index f5a3df08e56ec6fbb8c1d5b262d16035b1ed0e55..c5a7e5f82c697f7e910a28f95f091363e7ca3647 100644
--- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml
+++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml
@@ -4,8 +4,8 @@
     xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
     
     <includes>
-        <gdmlFile  ref="../elements.xml"/>
-        <gdmlFile  ref="OpenDataMaterials.xml"/>
+        <gdmlFile ref="../elements.xml"/>
+        <gdmlFile ref="OpenDataMaterials.xml"/>
     </includes>
     
     <info name="Demonstrator"
@@ -13,7 +13,6 @@
         author="Andreas.Salzburger@cern.ch" url="" status="test" version="0">
         <comment>Demonstrator Detector for the acts webpage and documentation</comment>
     </info>
-    
     <define>
         <!--World-->
         <constant name="world_size" value="10.*m"/>
@@ -24,7 +23,6 @@
         <constant name="bp_rmin" value="23.6*mm"/>
         <constant name="bp_rmax" value="24.4*mm"/>
         <constant name="bp_length" value="4.0*m"/>
-        <constant name="bp_material_binsZ" value="10"/>     
         <!--Dimensions of the Pixel volume & sub volumes -->
         <constant name="pix_env_rmin" value="30.*mm"/>
         <constant name="pix_env_rmax" value="200.*mm"/>
@@ -59,9 +57,39 @@
         <!--Dimensions of the Solenoid -->
         <constant name="sol_rmin" value="1140.*mm"/>
         <constant name="sol_rmax" value="1200.*mm"/>
-        <constant name="sol_hlength" value="2.85*m"/>                                            
+        <constant name="sol_hlength" value="2.85*m"/>  
+        <!-- Material binning section -->
+        <!-- beam pipe section -->
+        <constant name="mat_bp_bZ" value="10"/>
+        <!-- pixel section -->
+        <constant name="mat_pix_barrel_bPhi" value="1"/>
+        <constant name="mat_pix_barrel_bZ" value="200"/>
+        <constant name="mat_pix_endcap_bPhi" value="1"/>
+        <constant name="mat_pix_endcap_bR" value="25"/>
+        <constant name="mat_pix_outer_bPhi" value="1"/>
+        <constant name="mat_pix_outer_bZ" value="250"/>
+        <constant name="mat_pix_inter_bR" value="25"/>
+        <constant name="mat_pix_inter_bPhi" value="1"/>
+        <!-- short strip section -->
+        <constant name="mat_sst_barrel_bPhi" value="1"/>
+        <constant name="mat_sst_barrel_bZ" value="150"/>
+        <constant name="mat_sst_endcap_bPhi" value="1"/>
+        <constant name="mat_sst_endcap_bR" value="25"/>
+        <constant name="mat_sst_outer_bZ" value="150"/>
+        <constant name="mat_sst_outer_bPhi" value="1"/>
+        <constant name="mat_sst_inter_bR" value="25"/>
+        <constant name="mat_sst_inter_bPhi" value="1"/>
+        <!-- long strip section -->
+        <constant name="mat_lst_barrel_bPhi" value="1"/>
+        <constant name="mat_lst_barrel_bZ" value="100"/>
+        <constant name="mat_lst_endcap_bPhi" value="1"/>
+        <constant name="mat_lst_endcap_bR" value="25"/>
+        <constant name="mat_lst_outer_bZ" value="75"/>
+        <constant name="mat_lst_outer_bPhi" value="1"/>
+        <constant name="mat_lst_inter_bR" value="25"/>
+        <constant name="mat_lst_inter_bPhi" value="1"/>                                          
     </define>
-        
+            
     <display>
         <vis name="Beryllium" r="0.8" g="0.8"  b="0.8" alpha="0.9" showDaugthers="true" visible="true" drawingStyle="solid"/>
         <vis name="Silicon" r="0." g="0." b="0.5" alpha="1.0" showDaugthers="true" visible="true" drawingStyle="solid"/>
@@ -103,7 +131,7 @@
             <segmentation type="CartesianGridXY" grid_size_x="0.05*mm" grid_size_y="0.05*mm"/>
             <id>system:4,layer:4,ring:4,module:8,sensor:4,x:4,y:4</id>
         </readout>
-    </readouts>       
+    </readouts> 
     <include ref="OpenDataPixels.xml"/>
     <include ref="OpenDataShortStrips.xml"/>
     <include ref="OpenDataLongStrips.xml"/>        
@@ -111,7 +139,7 @@
       <detector id="0" name="BeamPipe" type="ODDCylinder" vis="Beryllium">
             <beampipe/>
             <tubs name="BeamPipeCylinder" rmin="bp_rmin" rmax="bp_rmax" dz="bp_length" material="Beryllium">
-              <layer_material inner="false" representing="true" outer="false" binPhi="1" binZ="bp_material_binsZ"/>
+              <layer_material inner="false" representing="true" outer="false" binPhi="1" binZ="mat_bp_bZ"/>
             </tubs>
       </detector>
       <detector id="1" name="Pixels" type="DD4hep_SubdetectorAssembly" vis="invisible">
diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml
index 573313b75196fb39db68ba4aff5264908ec3ed86..b5265a1c3ddfa2397f5b4191cf9450ef75f936b6 100644
--- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml
+++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml
@@ -34,22 +34,22 @@
           <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="1092.*mm" gap="24.*mm" nphi="72" z_offset="0.*mm" material="Ti" vis="orange"/>
         </ring>
         <layer id="0" name="LongStripEndcapN0" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-1280.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="1" name="LongStripEndcapN2" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-1550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="2" name="LongStripEndcapN3" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-1850.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="2" name="LongStripEndcapN4" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-2200.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="3" name="LongStripEndcapN5" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-2550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="4" name="LongStripEndcapN6" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-2950.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <services>
          <cable_routing name="OuterCables" nphi="30" phi0="0." number="10" r="1095*mm" rmin="0.*mm" rmax="0.75*mm" dz="0.1*mm" z_offset="1150.*mm" gap="25.*mm" material="Cu" vis="orange">
@@ -61,7 +61,9 @@
     <!--Barrel-->
     <detector id="300" name="LongStripBarrel" type="ODDStripBarrel" readout="LongStripBarrelReadout" vis="invisible">
         <dimensions name="LongStripBarrelShape" rmin="ls_env_rmin" rmax="ls_env_rmax" dz="ls_b_dz" z="0.*mm"/>
-        <boundary_material inner="false" outer="true" negative="true" positive="true" binPhi="1" binZ="100" binR="25"/>
+        <boundary_material negative="true" binPhi="mat_lst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
+        <!-- boundary_material outer="true" binPhi="mat_lst_barrel_bPhi" binZ="mat_sst_barrel_bZ"/ -->
+        <boundary_material positive="true" binPhi="mat_lst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         <module name="LongStripBarrelModule" vis="invisible">
           <module_component name="SensorS" alpha="0.04" dx="96.*mm" dy="108.*mm" dz="0.25*mm" x_offset="0." y_offset="0." z_offset="-3.2*mm" material="Silicon" vis="Silicon" sensitive="true"/>
           <module_component name="BoardS" alpha="0.04" dx="96.*mm" dy="108*mm" dz="0.25*mm" x_offset="0." y_offset="0." z_offset="-3.*mm" material="Kapton" vis="Kapton" sensitive="false"/>
@@ -86,12 +88,12 @@
         <layer id="0" name="LongStripLayer0" rmin="790.*mm" r="820.*mm" rmax="840.*mm" outer_z="20.*mm" nphi="60" phi_tilt="-0.15" phi0="0." vis="invisible">
           <support name="InnerSupportRings" rmin="795.*mm" rmax="810.*mm" dz="50.*mm" z_offset="300.*mm"  nsides="2" material="CarbonFiber" vis="CarbonFiber"/>
           <support name="OuterSupportRings" rmin="795.*mm" rmax="810.*mm" dz="50.*mm" z_offset="1000.*mm"  nsides="2" material="CarbonFiber" vis="CarbonFiber"/>
-          <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/>
+          <layer_material inner="true" representing="false" outer="false" binPhi="mat_lst_barrel_bPhi" binZ ="mat_lst_barrel_bZ"/>
         </layer>
         <layer id="1" name="LongStripLayer1" rmin="990.*mm" r="1020.*mm" rmax="1040.*mm" outer_z="20.*mm"  nphi="80" phi_tilt="-0.15" phi0="0." vis="invisible">
           <support name="InnerSupportRings" rmin="995.*mm" rmax="1010.*mm" dz="50.*mm" z_offset="300.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"/>
           <support name="OuterSupportRings" rmin="995.*mm" rmax="1010.*mm" dz="50.*mm" z_offset="1000.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"/>
-          <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/>
+          <layer_material inner="true" representing="false" outer="false" binPhi="mat_lst_barrel_bPhi" binZ ="mat_lst_barrel_bZ"/>
         </layer>
         <support name="SupportRails" rmin="1075.*mm" rmax="1090.*mm" dz="25.*mm" z_offset="1150.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber">
           <connector/>
@@ -137,22 +139,22 @@
           <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="1092.*mm" gap="24.*mm" nphi="72" z_offset="0.*mm" material="Ti" vis="orange"/>
         </ring>
         <layer id="0" name="LongStripEndcapP0" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="1280.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="1" name="LongStripEndcapP2" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="1550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="2" name="LongStripEndcapP3" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="1850.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="2" name="LongStripEndcapP4" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="2200.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="3" name="LongStripEndcapP5" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="2550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <layer id="4" name="LongStripEndcapP6" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="2950.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/>
         </layer>
         <services>
          <cable_routing name="OuterCables" nphi="30" phi0="0." number="10" r="1095*mm" rmin="0.*mm" rmax="0.75*mm" dz="0.1*mm" z_offset="1150.*mm" gap="25.*mm" material="Cu" vis="orange">
diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml
index bb0e72e96d83703f734bd0bc14ea5f66de15a265..bfc7b5d6d2a643e3909154c26d51cec2e29e51df 100644
--- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml
+++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml
@@ -17,28 +17,28 @@
         <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="145.*mm" gap="7.4*mm" nphi="32" z_offset="+4.*mm" material="Ti" vis="orange"/>
         <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="170.*mm" gap="8.5*mm" nphi="32" z_offset="+4.*mm" material="Ti" vis="orange"/>
         <layer id="0" name="PixelEndcapN0" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-620.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="1" name="PixelEndcapN1" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-720.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="2" name="PixelEndcapN2" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-840.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="3" name="PixelEndcapN3" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-980.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="4" name="PixelEndcapN4" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-1120.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="5" name="PixelEndcapN5" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-1320.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="6" name="PixelEndcapN6" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-1520.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <disk name="PixelEndplate" z_offset="-1950.*mm" rmin="40.*mm" rmax="189.*mm" dz="5*mm" material="CarbonFiber" vis="CarbonFiber">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </disk>
         <support name="InnerSupportRail" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="000.*mm" nsides="1" vis="CarbonFiber"/>
         <support name="OuterSupportRails" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="490.*mm" nsides="2" vis="CarbonFiber"/>                        
@@ -52,7 +52,9 @@
     <!--Barrel-->
     <detector id="100" name="PixelBarrel" type="ODDPixelBarrel" readout="PixelBarrelReadout" vis="invisible">
         <dimensions name="PixelBarrelShape" rmin="pix_env_rmin" rmax="pix_env_rmax" dz="pix_b_dz" z="0.*mm"/>
-        <boundary_material inner="false" outer="true" negative="true" positive="true" binPhi="1" binZ="250" binR="25"/>
+        <boundary_material negative="true" binPhi="mat_pix_endcap_bPhi" binR="mat_pix_endcap_bR"/>
+        <boundary_material outer="true" binPhi="mat_pix_barrel_bPhi" binZ="mat_pix_barrel_bZ"/>
+        <boundary_material positive="true" binPhi="mat_pix_endcap_bPhi" binR="mat_pix_endcap_bR"/>
         <module name="PixelBarrelModule" vis="invisible">
           <module_component name="Sensor" alpha="0." dx="16.8*mm" dy="72.*mm" dz="0.125*mm" x_offset="0." y_offset="0." z_offset="-1.8*mm" material="Silicon" vis="Silicon" sensitive="true"/>
           <module_component name="Board" alpha="0." dx="16*mm" dy="70*mm" dz="0.25*mm" x_offset="0." y_offset="0." z_offset="-1.6*mm" material="Kapton" vis="Kapton" sensitive="false"/>
@@ -67,19 +69,19 @@
          <eltube name="CableBundle" rmin="0.0*mm" rmax="0.25*mm" dz="50.*mm"  x_offset="-10.*mm" y_offset="0.*mm" z_offset="1.*mm" material="Cu" vis="orange" />
         </stave>           
         <layer id="0" name="PixelLayer0" rmin="28.*mm" r="34.*mm" rmax="44.*mm" outer_z="20.*mm" nphi="16" phi_tilt="0.12" phi0="0." vis="invisible">
-          <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/>
+          <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/>
           <support name="SupportCylinder" rmin="38.*mm" rmax="40.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm" nsides="1" vis="CarbonFiber"/>
         </layer>
         <layer id="1" name="PixelLayer1" rmin="56.*mm" r="72.*mm" rmax="82.*mm" outer_z="20.*mm"  nphi="32" phi_tilt="0.12" phi0="0." vis="invisible">
-          <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/>
+          <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/>
           <support name="SupportCylinder" rmin="76.*mm" rmax="78.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm" nsides="1" vis="CarbonFiber" />          
         </layer>
         <layer id="2" name="PixelLayer2" rmin="100.*mm" r="116.*mm" rmax="126.*mm" outer_z="20.*mm" nphi="52" phi_tilt="0.12" phi0="0." vis="invisible">
-          <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/>
+          <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/>
           <support name="SupportCylinder" rmin="120.*mm" rmax="122.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm"  nsides="1" vis="CarbonFiber" />
         </layer>
         <layer id="3" name="PixelLayer3" rmin="160.*mm" r="172.*mm" rmax="182.*mm" outer_z="20.*mm" nphi="78" phi_tilt="0.12" phi0="0." vis="invisible">
-          <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/>
+          <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/>
           <support name="SupportCylinder" rmin="176.*mm" rmax="178.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm"  nsides="1" vis="CarbonFiber"/>
         </layer>
         <support name="OuterSupportRails" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="550.*mm" nsides="2" vis="CarbonFiber">
@@ -111,28 +113,28 @@
         <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="145.*mm" gap="7.4*mm" nphi="32" z_offset="-4.*mm" material="Ti" vis="orange"/>
         <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="170.*mm" gap="8.5*mm" nphi="32" z_offset="-4.*mm" material="Ti" vis="orange"/>
         <layer id="0" name="PixelEndcapP0" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="620.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="1" name="PixelEndcapP1" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="720.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="2" name="PixelEndcapP2" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="840.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="3" name="PixelEndcapP3" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="980.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="4" name="PixelEndcapP4" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="1120.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="5" name="PixelEndcapP5" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="1320.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <layer id="6" name="PixelEndcapP6" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="1520.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </layer>
         <disk name="PixelEndplate" z_offset="1950.*mm" rmin="40.*mm" rmax="189.*mm" dz="5*mm" material="CarbonFiber" vis="CarbonFiber">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/>
         </disk>
         <support name="InnerSupportRail" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="000.*mm" nsides="1" vis="CarbonFiber"/>
         <support name="OuterSupportRails" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="490.*mm" nsides="2" vis="CarbonFiber"/>                        
diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml
index 62e3935408c48dbab751ae43f0da44f8f7b56c19..193e5211c5d499489f4fb06735c095ec65732cc1 100644
--- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml
+++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml
@@ -34,22 +34,22 @@
           <support name="SupportRing1" rmin="670.*mm" rmax="710.*mm" dz="2.*mm" z_offset="0.*mm" material="CarbonFiber" vis="CarbonFiber"/>
         </ring> 
         <layer id="0" name="ShortStripEndcapN0" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-1280.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="1" name="ShortStripEndcapN2" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-1550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="2" name="ShortStripEndcapN3" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-1850.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="2" name="ShortStripEndcapN4" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-2200.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="3" name="ShortStripEndcapN5" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-2550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="4" name="ShortStripEndcapN6" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-2950.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <services>
           <cable_routing name="InnerCables" nphi="12" phi0="0." number="6" r="215.*mm" rmin="0.*mm" rmax="0.75*mm" z_offset="1150.*mm" gap="10.*mm" material="Cu" vis="orange">
@@ -65,7 +65,9 @@
     <!--Barrel-->
     <detector id="200" name="ShortStripBarrel" type="ODDStripBarrel" readout="ShortStripBarrelReadout" vis="invisible">
         <dimensions name="ShortStripBarrelShape" rmin="ss_env_rmin" rmax="ss_env_rmax" dz="ss_b_dz" z="0.*mm"/>
-        <boundary_material inner="false" outer="true" negative="true" positive="true" binPhi="1" binZ="150" binR="25"/>
+        <boundary_material negative="true" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
+        <boundary_material outer="true" binPhi="mat_sst_barrel_bPhi" binZ="mat_sst_barrel_bZ"/>
+        <boundary_material positive="true" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         <module name="ShortStripBarrelModule" vis="invisible">
           <module_component name="Foam" alpha="0." dx="45.*mm" dy="108*mm" dz="4*mm" x_offset="0." y_offset="0." z_offset="-2.8*mm" material="CarbonFoam" vis="CarbonFoam" sensitive="false">
             <subtraction name="CoolingLine" rmin="0.*mm" rmax="1.8*mm" x_offset="0.*mm" y_offset="0.*mm" z_offset="0.*mm"/> 
@@ -80,19 +82,19 @@
         </stave>
         <layer id="0" name="ShortStripLayer0" rmin="240.*mm" r="260.*mm" rmax="280.*mm" outer_z="20.*mm" nphi="40" phi_tilt="-0.15" phi0="0." vis="invisible">
           <support name="SupportCylinder" rmin="248.*mm" rmax="250.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber"/>
-          <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/>
+          <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/>
         </layer>
         <layer id="1" name="ShortStripLayer1" rmin="340.*mm" r="360.*mm" rmax="380.*mm" outer_z="20.*mm"  nphi="56" phi_tilt="-0.15" phi0="0." vis="invisible">
           <support name="SupportCylinder" rmin="344.*mm" rmax="346.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber" />   
-          <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/>                 
+          <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/>                 
         </layer>
         <layer id="2" name="ShortStripLayer2" rmin="480.*mm" r="500.*mm" rmax="520.*mm" outer_z="20.*mm" nphi="78" phi_tilt="-0.15" phi0="0." vis="invisible">
           <support name="SupportCylinder" rmin="484.*mm" rmax="486.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber" />
-          <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/>
+          <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/>
         </layer>
         <layer id="3" name="ShortStripLayer3" rmin="640.*mm" r="660.*mm" rmax="680.*mm" outer_z="20.*mm" nphi="102" phi_tilt="-0.15" phi0="0." vis="invisible">
           <support name="SupportCylinder" rmin="644.*mm" rmax="646.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber" />
-          <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/>
+          <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/>
         </layer> 
         <support name="SupportRails" rmin="695.*mm" rmax="715.*mm" dz="20.*mm" z_offset="1150.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber">
           <connector/>
@@ -139,22 +141,22 @@
           <support name="SupportRing1" rmin="670.*mm" rmax="710.*mm" dz="2.*mm" z_offset="0.*mm" material="CarbonFiber" vis="CarbonFiber"/>
         </ring> 
         <layer id="0" name="ShortStripEndcapP0" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="1280.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="1" name="ShortStripEndcapP2" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="1550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="2" name="ShortStripEndcapP3" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="1850.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="2" name="ShortStripEndcapP4" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="2200.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="3" name="ShortStripEndcapP5" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="2550.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <layer id="4" name="ShortStripEndcapP6" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="2950.*mm" vis="invisible">
-          <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/>
+          <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/>
         </layer>
         <services>
           <cable_routing name="InnerCables" nphi="12" phi0="0." number="6" r="215.*mm" rmin="0.*mm" rmax="0.75*mm" z_offset="1150.*mm" gap="10.*mm" material="Cu" vis="orange">
diff --git a/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp b/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp
index 8562b0b25dd0a795ec90d2cf3cfe00099cc3edf5..0519feb813723ae74f42c4e1469619975c6ec052 100644
--- a/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp
+++ b/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp
@@ -202,7 +202,7 @@ create_element(Detector& lcdd, xml_h xml, SensitiveDetector sens)
     // Configure the ACTS extension
     Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
     layerExtension->addType("barrel", "layer");
-    Acts::xml2CylinderProtoMaterial(x_layer, *layerExtension);
+    Acts::xmlToCylinderProtoMaterial(x_layer, *layerExtension);
     layerElement.addExtension<Acts::ActsExtension>(layerExtension);
 
     // Place layer volume
diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp
index bd66c9aa24e3bb316adfba5b9b8bb5c6f3ec63f7..03ea24be0da8c1b780de091a79741f5ae35db532 100644
--- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp
+++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp
@@ -31,7 +31,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
   bool                 isBeamPipe  = x_det.hasChild(_U(beampipe));
   pcExtension->addType("passive cylinder", "layer");
   if (isBeamPipe) { pcExtension->addType("beampipe", "layer"); }
-  Acts::xml2CylinderProtoMaterial(x_det_tubs, *pcExtension);
+  Acts::xmlToCylinderProtoMaterial(x_det_tubs, *pcExtension);
   cylinderElement.addExtension<Acts::ActsExtension>(pcExtension);
 
   string shapeName = x_det_tubs.nameStr();
diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp
index 6a8cc1108ff6d51ec482e779096845220346602e..ccdbb0660e6e0719fc1f323a4546d6ab8958b6cb 100644
--- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp
+++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp
@@ -105,21 +105,14 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
   // Add Extension to DetElement for the RecoGeometry
   Acts::ActsExtension* barrelExtension = new Acts::ActsExtension();
   barrelExtension->addType("barrel", "detector");
-  // Add the volume material if configured
-  if (x_det.hasChild(_Unicode(boundary_material))) {
-    xml_comp_t x_boundary_material = x_det.child(_Unicode(boundary_material));
-    // Inner / outer are cylinders
-    xml2ProtoMaterial(x_boundary_material,
+  // Add the volume boundary material if configured
+  for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){
+    xml_comp_t x_boundary_material = bmat;
+    xmlToProtoMaterial(x_boundary_material,
                       *barrelExtension,
                       "boundary_material",
-                      {"inner", "outer"},
-                      {"binPhi", "binZ"});
-    // Negative / positive are discs
-    xml2ProtoMaterial(x_boundary_material,
-                      *barrelExtension,
-                      "boundary_material",
-                      {"negative", "positive"},
-                      {"binPhi", "binR"});
+                      { "negative", "positive", "inner", "outer" },
+                      { "binPhi", "*" });
   }
   barrelDetector.addExtension<Acts::ActsExtension>(barrelExtension);
 
@@ -230,7 +223,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
     // Configure the ACTS extension
     Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
     layerExtension->addType("active cylinder", "layer");
-    Acts::xml2CylinderProtoMaterial(x_layer, *layerExtension);
+    Acts::xmlToCylinderProtoMaterial(x_layer, *layerExtension);
     layerElement.addExtension<Acts::ActsExtension>(layerExtension);
 
     PlacedVolume placedLayer = barrelVolume.placeVolume(layerVolume);
diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp
index bf28efc391eb51f887296f278ac29affb1feea72..d9d533ce31410022c896d32c15e755b60faacafe 100644
--- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp
+++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp
@@ -28,8 +28,21 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
   // Add Extension to DetElement for the RecoGeometry
   Acts::ActsExtension* endcapExtension = new Acts::ActsExtension();
   endcapExtension->addType("endcap", "detector");
-  endcapDetector.addExtension<Acts::ActsExtension>(endcapExtension);
-
+  // Add the volume boundary material if configured
+  for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){
+    xml_comp_t x_boundary_material = bmat;
+    // Inner / outer are cylinders, others are disks
+    std::string boundary_type = x_boundary_material.attr<std::string>("stype");
+    std::string second_bin 
+      = ( boundary_type == "inner" || boundary_type == "outer" ) ?
+        "binZ" : "binR";
+    xmlToProtoMaterial(x_boundary_material,
+                      *endcapExtension,
+                      "boundary_material",
+                      { boundary_type },
+                      {"binPhi", second_bin});
+  }
+  endcapDetector.addExtension<Acts::ActsExtension>(endcapExtension);  
   // Make Volume
   dd4hep::xml::Dimension x_det_dim(x_det.dimensions());
   string                 endcapShapeName = x_det_dim.nameStr();
@@ -158,7 +171,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
     Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
     layerExtension->addType("sensitive disk", "layer");
     layerElement.addExtension<Acts::ActsExtension>(layerExtension);
-    Acts::xml2DiscProtoMaterial(x_layer, *layerExtension);
+    Acts::xmlToDiscProtoMaterial(x_layer, *layerExtension);
     // Finish up the DetElement tree
     layerElement.setPlacement(placedLayer);
     endcapDetector.add(layerElement);
@@ -188,7 +201,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
     Acts::ActsExtension* endplateExtension = new Acts::ActsExtension();
     endplateExtension->addType("passive disk", "layer");
     endplateElement.addExtension<Acts::ActsExtension>(endplateExtension);
-    Acts::xml2DiscProtoMaterial(x_endplate, *endplateExtension);
+    Acts::xmlToDiscProtoMaterial(x_endplate, *endplateExtension);
 
     // Finish up the DetElement tree
     endplateElement.setPlacement(placedEndplate);
diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp
index 55fcd530da4e42d49bff2125f2b740be88cd2d1f..814319bba7b7b5fc282b6fe5250a23be1ce56e27 100644
--- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp
+++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp
@@ -28,21 +28,14 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
   // Add Extension to DetElement for the RecoGeometry
   Acts::ActsExtension* barrelExtension = new Acts::ActsExtension();
   barrelExtension->addType("barrel", "detector");
-  // Add the volume material if configured
-  if (x_det.hasChild(_Unicode(boundary_material))) {
-    xml_comp_t x_boundary_material = x_det.child(_Unicode(boundary_material));
-    // Inner / outer are cylinders
-    xml2ProtoMaterial(x_boundary_material,
+  // Add the volume boundary material if configured
+  for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){
+    xml_comp_t x_boundary_material = bmat;
+    xmlToProtoMaterial(x_boundary_material,
                       *barrelExtension,
                       "boundary_material",
-                      {"inner", "outer"},
-                      {"binPhi", "binZ"});
-    // Negative / positive are discs
-    xml2ProtoMaterial(x_boundary_material,
-                      *barrelExtension,
-                      "boundary_material",
-                      {"negative", "positive"},
-                      {"binPhi", "binR"});
+                      { "negative", "positive", "inner", "outer" },
+                      { "binPhi", "*" });
   }
   barrelDetector.addExtension<Acts::ActsExtension>(barrelExtension);
 
@@ -176,7 +169,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
     Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
     layerExtension->addType("sensitive cylinder", "layer");
     layerElement.addExtension<Acts::ActsExtension>(layerExtension);
-    Acts::xml2CylinderProtoMaterial(x_layer, *layerExtension);
+    Acts::xmlToCylinderProtoMaterial(x_layer, *layerExtension);
     PlacedVolume placedLayer = barrelVolume.placeVolume(layerVolume);
     placedLayer.addPhysVolID("layer", layerNum);
 
diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp
index 8a2b2bbd30cb19ab4c82af9cb40b4567c1e021b8..5168f4e7a79fb0c9b784e47ace2fe598396798d8 100644
--- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp
+++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp
@@ -28,6 +28,20 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
   // Add Extension to DetElement for the RecoGeometry
   Acts::ActsExtension* endcapExtension = new Acts::ActsExtension();
   endcapExtension->addType("endcap", "detector");
+  // Add the volume boundary material if configured
+  for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){
+    xml_comp_t x_boundary_material = bmat;
+    // Inner / outer are cylinders, others are disks
+    std::string boundary_type = x_boundary_material.attr<std::string>("stype");
+    std::string second_bin 
+      = ( boundary_type == "inner" || boundary_type == "outer" ) ?
+        "binZ" : "binR";
+    xmlToProtoMaterial(x_boundary_material,
+                      *endcapExtension,
+                      "boundary_material",
+                      { boundary_type },
+                      {"binPhi", second_bin});
+  }
   endcapDetector.addExtension<Acts::ActsExtension>(endcapExtension);
 
   // Make Volume
@@ -166,7 +180,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens)
     Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
     layerExtension->addType("sensitive disk", "layer");
     layerElement.addExtension<Acts::ActsExtension>(layerExtension);
-    Acts::xml2DiscProtoMaterial(x_layer, *layerExtension);
+    Acts::xmlToDiscProtoMaterial(x_layer, *layerExtension);
     // Finish up the DetElement tree
     layerElement.setPlacement(placedLayer);
     endcapDetector.add(layerElement);
diff --git a/Examples/Common/src/MaterialMappingBase.cpp b/Examples/Common/src/MaterialMappingBase.cpp
index 8a46faf736cac069d9f69556661be706c69b729a..984cd27f32e6ff3f40cda94ae981656b32bf9b50 100644
--- a/Examples/Common/src/MaterialMappingBase.cpp
+++ b/Examples/Common/src/MaterialMappingBase.cpp
@@ -95,11 +95,15 @@ materialMappingExample(int argc, char* argv[], FW::IBaseDetector& detector)
 
   /// The material mapper
   Acts::SurfaceMaterialMapper::Config smmConfig;
+  /// Correct for empty bins
+  smmConfig.emptyBinCorrection = vm["mat-mapping-emptybins"].template as<bool>();    
+
   auto smm = std::make_shared<Acts::SurfaceMaterialMapper>(
       smmConfig,
       std::move(propagator),
       Acts::getDefaultLogger("SurfaceMaterialMapper", logLevel));
 
+
   /// The material mapping algorithm
   FW::MaterialMapping::Config mmAlgConfig(geoContext, mfContext);
   mmAlgConfig.materialMapper   = smm;