diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 08123f1c5f27e9362da40dec72a7c169abb9a5ef..4f8501b0d66c8d86c752c8097d71ebe3dde71e90 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -168,7 +168,7 @@ tracking_geometry_debug:
   needs: 
     - ["common:detector"]
   script:
-    - root -b -q "scripts/test_ACTS.cxx+(\"${DETECTOR_PATH}/athena.xml\")" || true | tee geo/tracking_geometry_debug.out 
+    - root -b -q "scripts/test_ACTS.cxx+(\"${DETECTOR_PATH}/athena.xml\")" | tee geo/tracking_geometry_debug.out 
 
 detector:config_testing:
   stage: test
diff --git a/athena.xml b/athena.xml
index fc0a1cddb37e1b558d54d404bb516c2ecbe07754..4f871f52cc55e637da82448db0056d06d4982174 100644
--- a/athena.xml
+++ b/athena.xml
@@ -111,10 +111,76 @@
   <include ref="ip6/forward_ion_beamline.xml"/>
   <include ref="ip6/beampipe.xml"/>
 
+  <detectors>
+    <detector id="VertexBarrelSubAssembly_ID" 
+      name="VertexBarrelSubAssembly" 
+      type="DD4hep_SubdetectorAssembly" 
+      vis="TrackerSubAssemblyVis">
+      <composite name="VertexBarrel" />
+    </detector>
+    <detector id="VertexEndcapSubAssembly_ID" 
+      name="VertexEndcapSubAssembly" 
+      type="DD4hep_SubdetectorAssembly" 
+      vis="TrackerSubAssemblyVis">
+      <composite name="VertexEndcapN" />
+      <composite name="VertexEndcapP" />
+    </detector>
+
+    <detector id="TrackerEndcapSubAssembly_Inner_ID"
+      name="TrackerSubAssembly_Inner"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerEndcapN_Inner"/>
+      <composite name="TrackerBarrel_Inner"/>
+      <composite name="TrackerEndcapP_Inner"/>
+    </detector>
+    <detector id="TrackerBarrelSubAssembly_Outer_ID"
+      name="TrackerSubAssembly_Outer"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerBarrel_Outer"/>
+      <composite name="TrackerEndcapP_Outer"/>
+      <composite name="TrackerEndcapN_Outer"/>
+    </detector>
+    <!--
+    <detector id="TrackerBarrelSubAssembly_Inner_ID"
+      name="TrackerBarrelSubAssembly_Inner"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerBarrel_Inner"/>
+    </detector>
+    <detector id="TrackerEndcapSubAssembly_Inner_ID"
+      name="TrackerEndcapSubAssembly_Inner"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerEndcapN_Inner"/>
+      <composite name="TrackerBarrel_Inner"/>
+      <composite name="TrackerEndcapP_Inner"/>
+    </detector>
+    <detector id="TrackerBarrelSubAssembly_Outer_ID"
+      name="TrackerBarrelSubAssembly_Outer"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerBarrel_Outer"/>
+    </detector>
+    <detector id="TrackerEndcapSubAssembly_Outer_ID"
+      name="TrackerEndcapSubAssembly_Outer"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerEndcapP_Outer"/>
+      <composite name="TrackerEndcapN_Outer"/>
+    </detector>
+    -->
+  </detectors>
+
   <include ref="compact/vertex_tracker.xml"/>
+
   <include ref="compact/central_tracker.xml"/>
+
+  <!--
   <include ref="compact/rwell_tracker_barrel.xml"/>
   <include ref="compact/cb_DIRC.xml"/>
+  -->
 
   <include ref="compact/solenoid.xml"/>
   <include ref="compact/ecal.xml"/>
@@ -137,8 +203,6 @@
   -->
    
 
-  <detectors>
-  </detectors>
   <readouts>
   </readouts>
 
diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml
index a96b634a9fde6e3c246b642fbc2f75a643d5e196..791e13ab7a1d254372ac68e788838b61f16073c9 100644
--- a/compact/central_tracker.xml
+++ b/compact/central_tracker.xml
@@ -17,8 +17,8 @@
 
   <define>
 
-    <constant name="TrackerBarrelSpaceFrame_width"   value="42.0*mm"/>
-    <constant name="TrackerBarrelSpaceFrame_height"  value="sqrt(3.0)*42.0*mm/2.0"/>
+    <constant name="TrackerBarrelSpaceFrame_width"   value="40.0*mm"/>
+    <constant name="TrackerBarrelSpaceFrame_height"  value="sqrt(3.0)*32.0*mm/2.0"/>
     <constant name="TrackerSensor_thickness"   value="0.03*mm"/>
     <constant name="TrackerBarrel_thickness"         value="0.55/100*9.37*cm"/>
     <constant name="TrackerBarrelService_thickness"  value="TrackerBarrel_thickness-TrackerSensor_thickness"/>
@@ -64,17 +64,51 @@
 
     <constant name="TrackerEndcapInner_rmin1" value="Beampipe_rmax+1.0*cm"/>
     <constant name="TrackerEndcapInner_rmin2" value="Beampipe_rmax+1.0*cm"/>
+
     <constant name="TrackerEndcapOuter_rmin"  value="3.18*cm"/>
+    <constant name="TrackerEndcapOuter_rmin1" value="3.18*cm"/>
 
     <constant name="TrackerEndcapInner_rmax1" value="18.5*cm"/>
     <constant name="TrackerEndcapInner_rmax2" value="18.5*cm + TrackerBarrelInner_thickness"/>
-    <constant name="TrackerEndcapOuter_rmax"  value="43.23*cm"/>
 
+    <constant name="TrackerEndcapOuter_rmax"  value="43.23*cm"/>
+    <constant name="TrackerEndcapOuter_rmax1"  value="43.23*cm"/>
 
     <comment> TODO: These should be computed </comment>
     <constant name="TrackerBarrelInner_NModules" value="30"/>
     <constant name="TrackerBarrelOuter_NModules" value="56"/>
 
+    <constant name="TrackerEndcapInnerModOpeningAngle" value="30.0*degree"/>
+    <constant name="TrackerEndcapInnerMod1_x1"            value="2.0*TrackerEndcapInner_rmin1*sin(TrackerEndcapInnerModOpeningAngle/2.0)"/>
+    <constant name="TrackerEndcapInnerMod1_x2"            value="2.0*TrackerEndcapInner_rmax1*sin(TrackerEndcapInnerModOpeningAngle/2.0)"/>
+    <constant name="TrackerEndcapInnerMod1_y"             value="TrackerEndcapInner_rmax1*cos(TrackerEndcapInnerModOpeningAngle/2.0) - TrackerEndcapInner_rmin1"/>
+
+    <constant name="TrackerEndcapOuterModOpeningAngle" value="30.0*degree"/>
+    <constant name="TrackerEndcapOuterMod1_x1"            value="2.0*TrackerEndcapOuter_rmin1*sin(TrackerEndcapOuterModOpeningAngle/2.0)"/>
+    <constant name="TrackerEndcapOuterMod1_x2"            value="2.0*TrackerEndcapOuter_rmax1*sin(TrackerEndcapOuterModOpeningAngle/2.0)"/>
+    <constant name="TrackerEndcapOuterMod1_y"             value="TrackerEndcapOuter_rmax1*cos(TrackerEndcapOuterModOpeningAngle/2.0) - TrackerEndcapOuter_rmin1"/>
+
+
+    <!--
+    <constant name="GEMTrackerEndcap_zmin"            value="BarrelTracking_length/2.0"/>
+    <constant name="GEMTrackerEndcap_NLayers"         value="1"/>
+    <constant name="GEMTrackerEndcapFoilOpeningAngle" value="30.1*degree"/>
+    <constant name="GEMTrackerEndcapFoilX1"           value="43.0 * mm"/>
+
+    <constant name="GEMTrackerEndcapLayer_thickness"  value="ForwardTrackingGEMLength/GEMTrackerEndcap_NLayers"/>
+    <constant name="GEMTrackerEndcapFoil_rmin"        value="GEMTrackerEndcapFoilX1/(tan(GEMTrackerEndcapFoilOpeningAngle/2.0)*2.0)"/>
+    <constant name="GEMTrackerEndcapFoilY"            value="BarrelTracking_rmax- GEMTrackerEndcapFoil_rmin- 1.0*cm"/>
+    <constant name="GEMTrackerEndcapFoilX2"           value="2*GEMTrackerEndcapFoilY*tan(GEMTrackerEndcapFoilOpeningAngle/2.0) +  GEMTrackerEndcapFoilX1"/>
+    <constant name="GEMTrackerEndcapFoil_rmax"        value="(GEMTrackerEndcapFoilY+GEMTrackerEndcapFoil_rmin)/(cos(GEMTrackerEndcapFoilOpeningAngle/2.0))"/>
+
+
+      // Frame parameters accoring to Kondo's sbsCrossSection.pdf file),
+    <constant name="GEMTrackerEndcapFrame_thickness"     value="18.0 * mm"/>
+    <constant name="GEMTrackerEndcapFrameBotEdge_width"  value="30.0 * mm"/>
+    <constant name="GEMTrackerEndcapFrameTopEdge_width"  value="30.0 * mm"/>
+    <constant name="GEMTrackerEndcapFrameSideEdge_width" value=" 8.0 * mm"/>
+    -->
+
   </define>
 
   <display>
@@ -82,6 +116,35 @@
 
   <detectors>
 
+
+    <!--
+    <detector id="TrackerBarrelSubAssembly_Inner_ID"
+      name="TrackerBarrelSubAssembly_Inner"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerBarrel_Inner"/>
+    </detector>
+    <detector id="TrackerEndcapSubAssembly_Inner_ID"
+      name="TrackerEndcapSubAssembly_Inner"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerEndcapN_Inner"/>
+      <composite name="TrackerEndcapP_Inner"/>
+    </detector>
+    <detector id="TrackerBarrelSubAssembly_Outer_ID"
+      name="TrackerBarrelSubAssembly_Outer"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerBarrel_Outer"/>
+    </detector>
+    <detector id="TrackerEndcapSubAssembly_Outer_ID"
+      name="TrackerEndcapSubAssembly_Outer"
+      type="DD4hep_SubdetectorAssembly"
+      vis="TrackerSubAssemblyVis">
+      <composite name="TrackerEndcapP_Outer"/>
+      <composite name="TrackerEndcapN_Outer"/>
+    </detector>
+    -->
     <comment>
       -----------------------------------
       Inner Tracker Subassembly (group 1)
@@ -89,18 +152,10 @@
       Note: Endcap trackers are using SimpleDiskTracker construction.
             This should be changed to something more detailed in the future.
     </comment>
-    <detector id="TrackerSubAssemblyLayer1_ID"
-      name="TrackerSubAssemblyLayer1"
-      type="DD4hep_SubdetectorAssembly"
-      vis="TrackerSubAssemblyVis">
-      <composite name="TrackerEndcapN_Layer1"/>
-      <composite name="TrackerEndcapP_Layer1"/>
-      <composite name="TrackerBarrel_Layer1"/>
-    </detector>
 
     <detector
-      id="TrackerBarrel_Layer1_ID"
-      name="TrackerBarrel_Layer1"
+      id="TrackerBarrel_Inner_ID"
+      name="TrackerBarrel_Inner"
       type="athena_TrackerBarrel"
       readout="TrackerBarrelHits"
       insideTrackingVolume="true">
@@ -112,16 +167,20 @@
         Tracker Barrel Modules
       </comment>
       <module name="TrackerBarrelInner_Module1" vis="PurpleVis">
-        <frame 
+        <frame material="CarbonFiber_25percent" vis="BlueGreenVis" 
           width="TrackerBarrelSpaceFrame_width"  
           height="TrackerBarrelSpaceFrame_height" 
           length="TrackerBarrelInner_length1"
-          thickness="0.1*mm" material="CarbonFiber_25percent" vis="BlueGreenVis" />
+          thickness="0.1*mm" />
+        <module_component name="peek1" material="PEEK" sensitive="false"
+          width="TrackerBarrelSpaceFrame_width" length="TrackerBarrelInner_length1-4*mm" thickness="2.0*mm" />
         <module_component name="silicon" 
           width="TrackerBarrelSpaceFrame_width"
-          length="TrackerBarrelInner_length1-0.1*mm" thickness="0.05*mm" material="Silicon" sensitive="true">
-          <position z="-0.025*mm" y="0*mm"/>
+          length="TrackerBarrelInner_length1-5*mm" thickness="0.05*mm" material="Silicon" sensitive="true">
+          <!--position z="-0.025*mm" y="0*mm"/-->
         </module_component>
+        <module_component name="peek1" material="PEEK" sensitive="false"
+          width="TrackerBarrelSpaceFrame_width" length="TrackerBarrelInner_length1-6*mm" thickness="2.0*mm" />
       </module>
       <comment>
         Tracker Barrel Inner Layers
@@ -129,7 +188,7 @@
       <layer module="TrackerBarrelInner_Module1" id="1" vis="VertexVis">
         <barrel_envelope
           inner_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset"
-          outer_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness"
+          outer_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness-1.0*mm"
           z_length="TrackerBarrelInner_length1"/>
         <rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelInner_NModules" phi0="0.0" rc="TrackerBarrelInner_rmin1" dr="0.0 * mm"/>
         <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
@@ -144,64 +203,117 @@
       </layer>
     </detector>
 
-    <detector id="TrackerEndcapP_Layer1_ID" 
-      name="TrackerEndcapP_Layer1" 
+    <detector
+      id="TrackerEndcapP_Inner_ID"
+      name="TrackerEndcapP_Inner"
+      type="refdet_TrapEndcapTracker"
+      readout="TrackerEndcapHits"
+      vis="AnlRed"
+      reflect="false">
+      <module name="Module1" vis="AnlProcess_Blue">
+        <trd x1="TrackerEndcapInnerMod1_x1/2.0" x2="TrackerEndcapInnerMod1_x2/2.0" z="TrackerEndcapInnerMod1_y/2"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+        <module_component thickness="500.0*um" material="Silicon" sensitive="true"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+      </module>
+      <layer id="1">
+        <envelope  vis="AnlRed"
+          rmin="TrackerEndcapInner_rmin1"
+          rmax="TrackerEndcapInner_rmax2"
+          length="TrackerEndcapInnerLayer_dz"
+          zstart="TrackerEndcapInner_zmin" />
+        <ring vis="AnlRed"
+          r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0"
+          zstart="5.0*mm"
+          nmodules="12" dz="5 * mm" module="Module1" />
+      </layer>
+    </detector>
+
+    <detector
+      id="TrackerEndcapN_Inner_ID"
+      name="TrackerEndcapN_Inner"
+      type="refdet_TrapEndcapTracker"
+      readout="TrackerEndcapHits"
+      vis="AnlRed"
+      reflect="true">
+      <module name="Module1" vis="AnlProcess_Blue">
+        <trd x1="TrackerEndcapInnerMod1_x1/2.0" x2="TrackerEndcapInnerMod1_x2/2.0" z="TrackerEndcapInnerMod1_y/2"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+        <module_component thickness="500.0*um" material="Silicon" sensitive="true"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+      </module>
+      <layer id="1">
+        <envelope  vis="AnlRed"
+          rmin="TrackerEndcapInner_rmin1"
+          rmax="TrackerEndcapInner_rmax2"
+          length="TrackerEndcapInnerLayer_dz"
+          zstart="TrackerEndcapInner_zmin" />
+        <ring vis="AnlRed"
+          r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" zstart="5.0*mm"
+          nmodules="12" dz="5 * mm" module="Module1" />
+      </layer>
+    </detector>
+
+    <!--
+    <detector id="TrackerEndcapP_Inner_ID" 
+      name="TrackerEndcapP_Inner" 
       type="athena_SimpleDiskTracker"
       readout="TrackerEndcapHits"
       insideTrackingVolume="true" 
       reflect="false" vis="AnlRed">
       <position x="0" y="0" z="0"/>
       <layer id="1" vis="AnlOrange"
-        inner_z="TrackerEndcapInner_zmin + 0*TrackerEndcapInnerLayer_dz" 
+        inner_z="TrackerEndcapInner_zmin + 0.5*TrackerEndcapInnerLayer_dz" 
         inner_r="TrackerEndcapInner_rmin1" 
         outer_r="TrackerEndcapInner_rmax1">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="2" vis="AnlOrange"
-        inner_z="TrackerEndcapInner_zmin + 1*TrackerEndcapInnerLayer_dz" 
+        inner_z="TrackerEndcapInner_zmin + 1.5*TrackerEndcapInnerLayer_dz" 
         inner_r="TrackerEndcapInner_rmin2" 
         outer_r="TrackerEndcapInner_rmax2">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
     </detector>
 
-    <detector id="TrackerEndcapN_Layer1_ID" 
-      name="TrackerEndcapN_Layer1" 
+    <detector id="TrackerEndcapN_Inner_ID" 
+      name="TrackerEndcapN_Inner" 
       type="athena_SimpleDiskTracker"
       readout="TrackerEndcapHits"
       insideTrackingVolume="true" 
       reflect="true" vis="AnlRed">
       <position x="0" y="0" z="-1.0e-6*mm"/>
       <layer id="1" vis="AnlOrange"
-        inner_z="TrackerEndcapInner_zmin + 0*TrackerEndcapInnerLayer_dz" 
+        inner_z="TrackerEndcapInner_zmin + 0.5*TrackerEndcapInnerLayer_dz" 
         inner_r="TrackerEndcapInner_rmin1" 
         outer_r="TrackerEndcapInner_rmax1">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="2" vis="AnlOrange"
-        inner_z="TrackerEndcapInner_zmin + 1*TrackerEndcapInnerLayer_dz" 
+        inner_z="TrackerEndcapInner_zmin + 1.5*TrackerEndcapInnerLayer_dz" 
         inner_r="TrackerEndcapInner_rmin2" 
         outer_r="TrackerEndcapInner_rmax2">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
     </detector>
+    -->
 
     <comment>
       -----------------------------------
       Outer Tracker Subassembly (group 2)
       -----------------------------------
     </comment>
-    <detector id="TrackerSubAssemblyLayer2_ID"
-      name="TrackerSubAssemblyLayer2"
-      type="DD4hep_SubdetectorAssembly"
-      vis="TrackerSubAssemblyVis">
-      <composite name="TrackerEndcapN_Layer2"/>
-      <composite name="TrackerEndcapP_Layer2"/>
-      <composite name="TrackerBarrel_Layer2"/>
-    </detector>
     <detector
-      id="TrackerBarrel_Layer2_ID"
-      name="TrackerBarrel_Layer2"
+      id="TrackerBarrel_Outer_ID"
+      name="TrackerBarrel_Outer"
       type="athena_TrackerBarrel"
       readout="TrackerBarrelHits"
       insideTrackingVolume="true">
@@ -213,17 +325,20 @@
         Tracker Barrel Modules
       </comment>
       <module name="TrackerBarrelOuter_Module1" vis="PurpleVis">
-        <frame 
+        <frame  material="CarbonFiber_25percent" vis="BlueGreenVis"
           width="TrackerBarrelSpaceFrame_width"  
           height="TrackerBarrelSpaceFrame_height" 
           length="TrackerBarrelOuter_length1"
-          thickness="0.1*mm" material="CarbonFiber_25percent" vis="BlueGreenVis" />
+          thickness="0.1*mm" />
+        <module_component name="peek1" material="PEEK" sensitive="false"
+          width="TrackerBarrelSpaceFrame_width" length="TrackerBarrelOuter_length1-0.1*mm" thickness="2.0*mm" />
         <module_component name="silicon" 
           width="TrackerBarrelSpaceFrame_width"
           length="TrackerBarrelOuter_length1-0.1*mm" 
           thickness="0.05*mm" material="Silicon" sensitive="true">
-          <position z="-0.025*mm" y="0*mm"/>
         </module_component>
+        <module_component name="peek2" material="PEEK" sensitive="false"
+          width="TrackerBarrelSpaceFrame_width" length="TrackerBarrelOuter_length1-0.1*mm" thickness="2.0*mm" />
       </module>
       <comment>
         Tracker Barrel Inner Layers
@@ -231,7 +346,7 @@
       <layer module="TrackerBarrelOuter_Module1" id="1" vis="VertexVis">
         <barrel_envelope
           inner_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset"
-          outer_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness"
+          outer_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness-1.0*mm"
           z_length="TrackerBarrelOuter_length"/>
         <rphi_layout phi_tilt="10.0*degree" nphi="TrackerBarrelOuter_NModules" phi0="0.0" rc="TrackerBarrelOuter_rmin1" dr="0.0 * mm"/>
         <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
@@ -246,59 +361,124 @@
       </layer>
     </detector>
 
-    <detector id="TrackerEndcapP_Layer2_ID" 
-      name="TrackerEndcapP_Layer2" 
+    <detector
+      id="TrackerEndcapP_Outer_ID"
+      name="TrackerEndcapP_Outer"
+      type="refdet_TrapEndcapTracker"
+      readout="TrackerEndcapHits"
+      vis="AnlRed"
+      reflect="false">
+      <module name="Module1" vis="AnlProcess_Blue">
+        <trd x1="TrackerEndcapOuterMod1_x1/2.0" x2="TrackerEndcapOuterMod1_x2/2.0" z="TrackerEndcapOuterMod1_y/2"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+        <module_component thickness="500.0*um" material="Silicon" sensitive="true"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+      </module>
+      <layer id="1">
+        <envelope  vis="AnlRed"
+          rmin="TrackerEndcapOuter_rmin1"
+          rmax="TrackerEndcapOuter_rmax"
+          length="TrackerEndcapOuterLayer_dz"
+          zstart="TrackerEndcapOuter_zmin" />
+        <ring vis="AnlRed"
+          r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0"
+          zstart="5.0*mm"
+          nmodules="12" dz="5 * mm" module="Module1" />
+      </layer>
+    </detector>
+
+    <detector
+      id="TrackerEndcapN_Outer_ID"
+      name="TrackerEndcapN_Outer"
+      type="refdet_TrapEndcapTracker"
+      readout="TrackerEndcapHits"
+      vis="AnlRed"
+      reflect="true">
+      <module name="Module1" vis="AnlProcess_Blue">
+        <trd x1="TrackerEndcapOuterMod1_x1/2.0" x2="TrackerEndcapOuterMod1_x2/2.0" z="TrackerEndcapOuterMod1_y/2"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+        <module_component thickness="500.0*um" material="Silicon" sensitive="true"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+      </module>
+      <layer id="1">
+        <envelope  vis="AnlRed"
+          rmin="TrackerEndcapOuter_rmin1"
+          rmax="TrackerEndcapOuter_rmax"
+          length="TrackerEndcapOuterLayer_dz"
+          zstart="TrackerEndcapOuter_zmin" />
+        <ring vis="AnlRed"
+          r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0"
+          zstart="5.0*mm"
+          nmodules="12" dz="5 * mm" module="Module1" />
+      </layer>
+    </detector>
+    <!--
+    <detector id="TrackerEndcapP_Outer_ID" 
+      name="TrackerEndcapP_Outer" 
       type="athena_SimpleDiskTracker"
       insideTrackingVolume="true" 
       readout="TrackerEndcapHits"
       reflect="false" vis="AnlRed">
       <position x="0" y="0" z="0"/>
       <layer id="1" vis="AnlOrange"
-        inner_z="TrackerEndcapOuter_zmin + 0*TrackerEndcapOuterLayer_dz" 
+        inner_z="TrackerEndcapOuter_zmin + 0.5*TrackerEndcapOuterLayer_dz" 
         inner_r="TrackerEndcapOuter_rmin" 
         outer_r="TrackerEndcapOuter_rmax">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="2" vis="AnlOrange"
-        inner_z="TrackerEndcapOuter_zmin + 1*TrackerEndcapOuterLayer_dz" 
+        inner_z="TrackerEndcapOuter_zmin + 1.5*TrackerEndcapOuterLayer_dz" 
         inner_r="TrackerEndcapOuter_rmin" 
         outer_r="TrackerEndcapOuter_rmax">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="3" vis="AnlOrange"
-        inner_z="TrackerEndcapOuter_zmin + 2*TrackerEndcapOuterLayer_dz" 
+        inner_z="TrackerEndcapOuter_zmin + 2.5*TrackerEndcapOuterLayer_dz" 
         inner_r="TrackerEndcapOuter_rmin" 
         outer_r="TrackerEndcapOuter_rmax">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
     </detector>
 
-    <detector id="TrackerEndcapN_Layer2_ID" 
-      name="TrackerEndcapN_Layer2" 
+    <detector id="TrackerEndcapN_Outer_ID" 
+      name="TrackerEndcapN_Outer" 
       type="athena_SimpleDiskTracker"
       insideTrackingVolume="true" 
       readout="TrackerEndcapHits"
       reflect="true" vis="AnlRed">
       <position x="0" y="0" z="-1.0e-6*mm"/>
       <layer id="1" vis="AnlOrange"
-        inner_z="TrackerEndcapOuter_zmin + 0*TrackerEndcapOuterLayer_dz" 
+        inner_z="TrackerEndcapOuter_zmin + 0.5*TrackerEndcapOuterLayer_dz" 
         inner_r="TrackerEndcapOuter_rmin" 
         outer_r="TrackerEndcapOuter_rmax">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="2" vis="AnlOrange"
-        inner_z="TrackerEndcapOuter_zmin + 1*TrackerEndcapOuterLayer_dz" 
+        inner_z="TrackerEndcapOuter_zmin + 1.5*TrackerEndcapOuterLayer_dz" 
         inner_r="TrackerEndcapOuter_rmin" 
         outer_r="TrackerEndcapOuter_rmax">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="3" vis="AnlOrange"
-        inner_z="TrackerEndcapOuter_zmin + 2*TrackerEndcapOuterLayer_dz" 
+        inner_z="TrackerEndcapOuter_zmin + 2.5*TrackerEndcapOuterLayer_dz" 
         inner_r="TrackerEndcapOuter_rmin" 
         outer_r="TrackerEndcapOuter_rmax">
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
         <slice material="Silicon" thickness="0.5*mm" vis="AnlOrange" sensitive="true" />
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
     </detector>
+    -->
 
   </detectors>
 
@@ -309,7 +489,7 @@
     </readout>
     <readout name="TrackerEndcapHits">
       <segmentation type="CartesianGridXY" grid_size_x="0.20*mm" grid_size_y="0.20*mm" />
-      <id>system:8,barrel:2,layer:8,slice:10,sensor:2,x:32:-16,y:-16</id>
+      <id>system:8,barrel:2,layer:4,module:12,sensor:2,x:32:-16,y:-16</id>
     </readout>
   </readouts>
 
diff --git a/compact/definitions.xml b/compact/definitions.xml
index c1afa33368c12c25877477c2347102f3ec5963d4..01b81b0a4ad64ca7bd42533f4668597b757db286 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -69,7 +69,8 @@
       Layer 5 subassembly ID: 30
     </comment>
     <constant name="VertexBarrel_ID" value="25"/>
-    <constant name="VertexSubAssembly_ID" value="26"/>
+    <constant name="VertexBarrelSubAssembly_ID" value="26"/>
+    <constant name="VertexEndcapSubAssembly_ID" value="27"/>
     <constant name="VertexEndcapP_ID" value="30"/>
     <constant name="VertexEndcapN_ID" value="40"/>
     
@@ -100,20 +101,22 @@
 
     </comment>
 
-    <constant name="TrackerSubAssembly_ID" value="50"/>
-    <constant name="TrackerSubAssemblyLayer1_ID" value="51"/>
-    <constant name="TrackerSubAssemblyLayer2_ID" value="52"/>
-    <constant name="TrackerSubAssemblyLayer3_ID" value="53"/>
-    <constant name="TrackerSubAssemblyLayer4_ID" value="54"/>
-    <constant name="TrackerSubAssemblyLayer5_ID" value="55"/>
+    <constant name="TrackerBarrelSubAssembly_Inner_ID" value="50"/>
+    <constant name="TrackerEndcapSubAssembly_Inner_ID" value="51"/>
 
-    <constant name="TrackerBarrel_Layer1_ID"      value="56"/>
-    <constant name="TrackerEndcapP_Layer1_ID"     value="57"/>
-    <constant name="TrackerEndcapN_Layer1_ID"     value="58"/>
+    <constant name="TrackerBarrelSubAssembly_Outer_ID" value="52"/>
+    <constant name="TrackerEndcapSubAssembly_Outer_ID" value="53"/>
 
-    <constant name="TrackerBarrel_Layer2_ID"      value="59"/>
-    <constant name="TrackerEndcapP_Layer2_ID"     value="60"/>
-    <constant name="TrackerEndcapN_Layer2_ID"     value="61"/>
+    <!--constant name="TrackerSubAssemblyLayer4_ID" value="54"/-->
+    <!--constant name="TrackerSubAssemblyLayer5_ID" value="55"/-->
+
+    <constant name="TrackerBarrel_Inner_ID"      value="56"/>
+    <constant name="TrackerEndcapP_Inner_ID"     value="57"/>
+    <constant name="TrackerEndcapN_Inner_ID"     value="58"/>
+
+    <constant name="TrackerBarrel_Outer_ID"      value="59"/>
+    <constant name="TrackerEndcapP_Outer_ID"     value="60"/>
+    <constant name="TrackerEndcapN_Outer_ID"     value="61"/>
 
     <constant name="TrackerBarrel_Layer3_ID"      value="62"/>
     <constant name="TrackerEndcapP_Layer3_ID"     value="63"/>
@@ -378,8 +381,10 @@
 
     <constant name="VertexTrackerEndcapP_rmax"  value="VertexTrackerBarrel_rmax"/>
     <constant name="VertexTrackerEndcapN_rmax"  value="VertexTrackerBarrel_rmax"/>
-    <constant name="VertexTrackerEndcapP_rmin"  value="VertexTrackerBarrel_rmin"/>
-    <constant name="VertexTrackerEndcapN_rmin"  value="VertexTrackerBarrel_rmin"/>
+
+    <constant name="VertexTrackerEndcapP_rmin"  value="Beampipe_rmax+5.0*mm"/>
+    <constant name="VertexTrackerEndcapN_rmin"  value="Beampipe_rmax+5.0*mm"/>
+
     <constant name="VertexTrackerEndcapP_zmax"  value="500.0*mm/2.0"/>
     <constant name="VertexTrackerEndcapN_zmax"  value="500.0*mm/2.0"/>
 
diff --git a/compact/vertex_tracker.xml b/compact/vertex_tracker.xml
index 6a9c3f4cb81d06caee7460ff5b01ebe393eaf9b2..b32f9166962059ae17b2d24aa8474c8095be710f 100644
--- a/compact/vertex_tracker.xml
+++ b/compact/vertex_tracker.xml
@@ -18,7 +18,6 @@
     <constant name="VertexBarrel_NModules2" value="24"/>
 
     <!--
-
     <constant name="VertexTrackerEndcapP_rmin" value="VertexTrackerInnerRadius"/>
     <constant name="VertexTrackerEndcapP_rmax" value="VertexTrackerOuterRadius"/>
     <constant name="VertexTrackerEndcapP_zmin" value="VertexTrackerBarrel_length + 5*mm"/>
@@ -32,8 +31,13 @@
 
     <constant name="VertexEndcap_NLayers" value="2"/>
     <constant name="VertexTrackerEndcap_delta" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/>
+    <constant name="VertexEndcapLayer_dz" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/>
+
+    <constant name="VertexEndcapModOpeningAngle" value="30.0*degree"/>
+    <constant name="VertexEndcapMod1_x1"            value="2.0*VertexTrackerEndcapP_rmin*sin(VertexEndcapModOpeningAngle/2.0)"/>
+    <constant name="VertexEndcapMod1_x2"            value="2.0*VertexTrackerEndcapP_rmax*sin(VertexEndcapModOpeningAngle/2.0)"/>
+    <constant name="VertexEndcapMod1_y"             value="VertexTrackerEndcapP_rmax*cos(VertexEndcapModOpeningAngle/2.0) - VertexTrackerEndcapP_rmin"/>
 
-  
 </define>
 
 
@@ -43,54 +47,75 @@
 
   <detectors>
 
-    <detector id="VertexSubAssembly_ID" 
-      name="VertexSubAssembly" 
+    <!--
+    <detector id="VertexBarrelSubAssembly_ID" 
+      name="VertexBarrelSubAssembly" 
       type="DD4hep_SubdetectorAssembly" 
       vis="TrackerSubAssemblyVis">
-      <composite name="VertexEndcapN"/>
-      <composite name="VertexEndcapP"/> 
-      <composite name="VertexBarrel"/>
+      <composite name="VertexBarrel" />
     </detector>
+    <detector id="VertexEndcapSubAssembly_ID" 
+      name="VertexEndcapSubAssembly" 
+      type="DD4hep_SubdetectorAssembly" 
+      vis="TrackerSubAssemblyVis">
+      <composite name="VertexEndcapN" />
+      <composite name="VertexEndcapP" />
+    </detector>
+    -->
 
-
-    <detector 
+    <detector
       id="VertexBarrel_ID"
       name="VertexBarrel"
       type="athena_VertexBarrel"
       readout="VertexBarrelHits"
       insideTrackingVolume="true">
-      <dimensions 
-        rmin="VertexBarrel_rmin-VertexBarrelLayer_rOffset" 
-        rmax="VertexBarrel_rmax-VertexBarrelLayer_rOffset" 
+      <dimensions
+        rmin="VertexBarrel_rmin-VertexBarrelLayer_rOffset"
+        rmax="VertexBarrel_rmax-VertexBarrelLayer_rOffset"
         length="VertexBarrel_length"/>
-      <comment> Define available modules </comment>
+      <comment>Barrel Modules</comment>
       <module name="Module1" vis="PurpleVis">
-        <frame width="15*mm"  height="10.0*mm" 
-          length="VertexBarrel_length" thickness="0.1 * mm" material="CarbonFiber_25percent" vis="BlueGreenVis" />
-        <module_component name="silicon" 
-          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="0.05*mm" material="Silicon" sensitive="true">
-          <position z="-0.025*mm" y="0*mm"/>
+        <frame  material="CarbonFiber_25percent" vis="BlueGreenVis"
+          width="15*mm"
+          height="10.0*mm"
+          length="VertexBarrel_length-1.0*mm"
+          thickness="0.1 * mm"/>
+        <module_component name="peek1" material="PEEK" sensitive="false"
+          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="2.0*mm" />
+        <module_component name="silicon" material="Silicon" sensitive="true"
+          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="1.0*mm">
+          <!--position x="0" y="0*mm" z="-0.025*mm" --> />
         </module_component>
+        <module_component name="peek2" material="PEEK" sensitive="false"
+          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="2.0*mm" />
       </module>
       <module name="Module2">
-        <frame width="15*mm"  height="10.0*mm" length="VertexBarrel_length" thickness="0.1 * mm" material="CarbonFiber_25percent" vis="BlueGreenVis" />
-        <module_component name="silicon" 
-          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="0.05*mm" material="Silicon" sensitive="true">
-          <position z="-0.025*mm" y="0*mm"/>
+        <frame  material="CarbonFiber_25percent" vis="BlueGreenVis"
+          width="15*mm"
+          height="10.0*mm"
+          length="VertexBarrel_length-1.0*mm"
+          thickness="0.1 * mm"/>
+        <module_component name="peek1" material="PEEK" sensitive="false"
+          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="2.0*mm" />
+        <module_component name="silicon" material="Silicon" sensitive="true"
+          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="1.0*mm">
+          <!--position x="0" y="0*mm" z="-0.025*mm"/-->
         </module_component>
+        <module_component name="peek2" material="PEEK" sensitive="false"
+          width="14.0*mm" length="VertexBarrel_length-0.1*mm" thickness="2.0*mm" />
       </module>
       <comment> Layers composed of many arrayed modules  </comment>
       <layer module="Module1" id="1" vis="VertexVis">
-        <barrel_envelope 
-          inner_r="VertexBarrel_rmin1-VertexBarrelLayer_rOffset" 
-          outer_r="VertexBarrel_rmin2-VertexBarrelLayer_rOffset"
+        <barrel_envelope
+          inner_r="VertexBarrel_rmin1-VertexBarrelLayer_rOffset"
+          outer_r="VertexBarrel_rmin2-VertexBarrelLayer_rOffset-1.0*mm"
           z_length="VertexBarrel_length"/>
         <rphi_layout phi_tilt="10.0*degree" nphi="VertexBarrel_NModules1" phi0="0.0" rc="VertexBarrel_rmin1" dr="0.0 * mm"/>
         <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
       </layer>
       <layer module="Module2" id="2" vis="VertexVis">
-        <barrel_envelope 
-          inner_r="VertexBarrel_rmin2-VertexBarrelLayer_rOffset" 
+        <barrel_envelope
+          inner_r="VertexBarrel_rmin2-VertexBarrelLayer_rOffset"
           outer_r="VertexBarrel_rmax-VertexBarrelLayer_rOffset"
           z_length="VertexBarrel_length"/>
         <rphi_layout phi_tilt="10.0*degree" nphi="VertexBarrel_NModules2" phi0="0.0" rc="VertexBarrel_rmin2" dr="0.0 * mm"/>
@@ -98,45 +123,111 @@
       </layer>
     </detector>
 
+    <detector
+      id="VertexEndcapP_ID"
+      name="VertexEndcapP"
+      type="refdet_TrapEndcapTracker"
+      readout="VertexEndcapHits"
+      vis="AnlRed"
+      reflect="false">
+      <module name="Module1" vis="AnlProcess_Blue">
+        <trd x1="VertexEndcapMod1_x1/2.0" x2="VertexEndcapMod1_x2/2.0" z="VertexEndcapMod1_y/2"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+        <module_component thickness="500.0*um" material="Silicon" sensitive="true"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+      </module>
+      <layer id="1">
+        <envelope  vis="AnlRed"
+          rmin="VertexTrackerEndcapP_rmin"
+          rmax="VertexTrackerEndcapP_rmax"
+          length="VertexEndcapLayer_dz"
+          zstart="VertexTrackerEndcapP_zmin" />
+        <ring vis="AnlRed"
+          r="VertexTrackerEndcapP_rmin+VertexEndcapMod1_y/2.0"
+          zstart="5.0*mm"
+          nmodules="12" dz="5 * mm" module="Module1" />
+      </layer>
+    </detector>
+
+
+    <detector
+      id="VertexEndcapN_ID"
+      name="VertexEndcapN"
+      type="refdet_TrapEndcapTracker"
+      readout="VertexEndcapHits"
+      vis="AnlRed"
+      reflect="true">
+      <module name="Module1" vis="AnlProcess_Blue">
+        <trd x1="VertexEndcapMod1_x1/2.0" x2="VertexEndcapMod1_x2/2.0" z="VertexEndcapMod1_y/2"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+        <module_component thickness="500.0*um" material="Silicon" sensitive="true"/>
+        <module_component thickness="1.0*mm" material="PEEK"/>
+      </module>
+      <layer id="1">
+        <envelope  vis="AnlRed"
+          rmin="VertexTrackerEndcapN_rmin"
+          rmax="VertexTrackerEndcapN_rmax"
+          length="VertexEndcapLayer_dz"
+          zstart="VertexTrackerEndcapN_zmin" />
+        <ring vis="AnlRed"
+          r="VertexTrackerEndcapN_rmin+VertexEndcapMod1_y/2.0"
+          zstart="5.0*mm"
+          nmodules="12" dz="5 * mm" module="Module1" />
+      </layer>
+    </detector>
+
+
+    <!--
     <detector id="VertexEndcapP_ID" 
       name="VertexEndcapP" 
       type="athena_SimpleDiskTracker"
+      readout="VertexEndcapHits"
       insideTrackingVolume="true" 
       reflect="false" vis="AnlRed">
-      <position x="0" y="0" z="0"/>
+      <position x="0" y="0" z="0.0*mm"/>
       <layer id="1" vis="AnlOrange"
-        inner_z="VertexTrackerEndcapP_zmin + 0*VertexTrackerEndcap_delta" 
-        inner_r="VertexTrackerEndcapP_rmin" 
+        inner_z="VertexTrackerEndcapP_zmin + 0.5*VertexTrackerEndcap_delta" 
+        inner_r="VertexTrackerEndcapP_rmin-3*mm" 
         outer_r="VertexTrackerEndcapP_rmax">
         <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
+        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="2" vis="AnlOrange"
-        inner_z="VertexTrackerEndcapP_zmin + 1*VertexTrackerEndcap_delta" 
+        inner_z="VertexTrackerEndcapP_zmin + 1.5*VertexTrackerEndcap_delta" 
         inner_r="VertexTrackerEndcapP_rmin" 
         outer_r="VertexTrackerEndcapP_rmax">
         <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
+        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
     </detector>
 
     <detector id="VertexEndcapN_ID" 
       name="VertexEndcapN" 
-      type="ref_DiskTracker"
-      insideTrackingVolume="true" reflect="true" vis="AnlRed">
-      <position x="0" y="0" z="-1.0e-6*mm"/>
+      type="athena_SimpleDiskTracker"
+      readout="VertexEndcapHits"
+      insideTrackingVolume="true"
+      reflect="true" vis="AnlRed">
+      <position x="0" y="0" z="-0.0*mm-1.0e-9*mm"/>
       <layer id="1" vis="AnlOrange"
-        inner_z="VertexTrackerEndcapN_zmin + 0*VertexTrackerEndcap_delta" 
+        inner_z="VertexTrackerEndcapN_zmin + 0.5*VertexTrackerEndcap_delta" 
         inner_r="VertexTrackerEndcapN_rmin" 
         outer_r="VertexTrackerEndcapN_rmax">
         <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
+        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
       <layer id="2" vis="AnlOrange"
-        inner_z="VertexTrackerEndcapN_zmin + 1*VertexTrackerEndcap_delta" 
+        inner_z="VertexTrackerEndcapN_zmin + 1.5*VertexTrackerEndcap_delta" 
         inner_r="VertexTrackerEndcapN_rmin" 
         outer_r="VertexTrackerEndcapN_rmax">
         <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
+        <slice material="Silicon" thickness="1.0*mm" vis="AnlOrange"  sensitive="true"/>
+        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
       </layer>
     </detector>
-
+    -->
   </detectors>
 
   <readouts>
diff --git a/scripts/test_ACTS.cxx b/scripts/test_ACTS.cxx
index cbb6bc6c1e067c68bda2e38ce44d1cf1e0eac5c9..4fffb8be95ff108f1aec82b39e6823e1059c73dd 100644
--- a/scripts/test_ACTS.cxx
+++ b/scripts/test_ACTS.cxx
@@ -35,14 +35,17 @@ void test_ACTS(const char* compact = "athena.xml"){
 
   //std::unique_ptr<const Acts::TrackingGeometry> 
   auto acts_tracking_geometry  = Acts::convertDD4hepDetector (detector.world(),Acts::Logging::Level::VERBOSE);
+  //acts_tracking_geometry  = Acts::convertDD4hepDetector (detector.world(),Acts::Logging::Level::INFO);
 
   if(acts_tracking_geometry) {
-    if(acts_tracking_geometry->highestTrackingVolume()) {
-      std::cout << " volume name \n ";
-      std::cout << acts_tracking_geometry->highestTrackingVolume()->volumeName() << std::endl;
-    } else {
-      std::cout << "derp\n";
-    }
+    std::cout << "success?\n";
   }
+  //  if(acts_tracking_geometry->highestTrackingVolume()) {
+  //    std::cout << " volume name \n ";
+  //    std::cout << acts_tracking_geometry->highestTrackingVolume()->volumeName() << std::endl;
+  //  } else {
+  //    std::cout << "derp\n";
+  //  }
+  //}
 
 }
diff --git a/src/BarrelTrackerWithFrame_geo.cpp b/src/BarrelTrackerWithFrame_geo.cpp
index 0b298451ff347f7bb2d85c7e8e1fbf9613d7d401..3dce897b451fd6fa166a95f7722412bab1013db2 100644
--- a/src/BarrelTrackerWithFrame_geo.cpp
+++ b/src/BarrelTrackerWithFrame_geo.cpp
@@ -102,10 +102,6 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     Volume v_module(m_nam+"_vol", moduleframe, description.material(m_env.materialStr()));
     v_module.setVisAttributes(description, m_env.visStr());
 
-    // module assembly
-    Assembly m_vol( m_nam );
-    m_vol.placeVolume(v_module, Position(0.0,0.0,frame_height/2));
-
     int ncomponents   = 0;
     int sensor_number = 1;
 
@@ -113,69 +109,86 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
       printout(ERROR, "SiTrackerBarrel", "Logics error in building modules.");
       throw runtime_error("Logics error in building modules.");
     }
+    double total_thickness = 0;
+    xml_coll_t ci(x_mod, _U(module_component));
+    for (ci.reset(), total_thickness = 0.0; ci; ++ci) {
+      total_thickness += xml_comp_t(ci).thickness();
+    }
+    // module assembly
+    Assembly m_vol( m_nam );
+    m_vol.placeVolume(v_module, Position(0.0,0.0,frame_height/2+total_thickness/2.0));
     volumes[m_nam] = m_vol;
     m_vol.setVisAttributes(description.visAttributes(x_mod.visStr()));
 
+    double thickness_sum = -total_thickness/2.0;
     for (xml_coll_t ci(x_mod, _U(module_component)); ci; ++ci, ++ncomponents) {
       xml_comp_t x_comp = ci;
-      xml_comp_t x_pos = x_comp.position(false);
-      xml_comp_t x_rot = x_comp.rotation(false);
-      string c_nam = _toString(ncomponents, "component%d");
-      Box c_box(x_comp.width() / 2, x_comp.length() / 2, x_comp.thickness() / 2);
-      Volume c_vol(c_nam, c_box, description.material(x_comp.materialStr()));
+      xml_comp_t x_pos  = x_comp.position(false);
+      xml_comp_t x_rot  = x_comp.rotation(false);
+      string     c_nam  = _toString(ncomponents, "component%d");
+      Box        c_box(x_comp.width() / 2, x_comp.length() / 2, x_comp.thickness() / 2);
+      Volume     c_vol(c_nam, c_box, description.material(x_comp.materialStr()));
 
       if (x_pos && x_rot) {
         Position c_pos(x_pos.x(0), x_pos.y(0), x_pos.z(0));
         RotationZYX c_rot(x_rot.z(0), x_rot.y(0), x_rot.x(0));
         pv = m_vol.placeVolume(c_vol, Transform3D(c_rot, c_pos));
       } else if (x_rot) {
-        pv = m_vol.placeVolume(c_vol, RotationZYX(x_rot.z(0), x_rot.y(0), x_rot.x(0)));
+        Position c_pos(0, 0, thickness_sum + x_comp.thickness() / 2.0);
+        pv = m_vol.placeVolume(c_vol, Transform3D(RotationZYX(x_rot.z(0), x_rot.y(0), x_rot.x(0)),c_pos));
       } else if (x_pos) {
         pv = m_vol.placeVolume(c_vol, Position(x_pos.x(0), x_pos.y(0), x_pos.z(0)));
       } else {
-        pv = m_vol.placeVolume(c_vol);
+        pv = m_vol.placeVolume(c_vol, Position(0,0,thickness_sum+x_comp.thickness()/2.0));
       }
       c_vol.setRegion(description, x_comp.regionStr());
       c_vol.setLimitSet(description, x_comp.limitsStr());
       c_vol.setVisAttributes(description, x_comp.visStr());
       if (x_comp.isSensitive()) {
-        pv.addPhysVolID(_U(sensor), sensor_number++);
+        pv.addPhysVolID("sensor", sensor_number++);
         c_vol.setSensitiveDetector(sens);
         sensitives[m_nam].push_back(pv);
       }
+      thickness_sum += x_comp.thickness();
     }
   }
 
   // now build the layers
   for (xml_coll_t li(x_det, _U(layer)); li; ++li) {
-    xml_comp_t x_layer = li;
+    xml_comp_t x_layer  = li;
     xml_comp_t x_barrel = x_layer.child(_U(barrel_envelope));
     xml_comp_t x_layout = x_layer.child(_U(rphi_layout));
-    xml_comp_t z_layout = x_layer.child(_U(z_layout));  // Get the <z_layout> element.
-    int lay_id = x_layer.id();
-    string m_nam = x_layer.moduleStr();
-    string lay_nam = _toString(x_layer.id(), "layer%d");
-    Tube lay_tub(x_barrel.inner_r(), x_barrel.outer_r(), x_barrel.z_length()/2.0 );
-    Volume lay_vol(lay_nam, lay_tub, air);  // Create the layer envelope volume.
+    xml_comp_t z_layout = x_layer.child(_U(z_layout)); // Get the <z_layout> element.
+    int        lay_id   = x_layer.id();
+    string     m_nam    = x_layer.moduleStr();
+    string     lay_nam  = _toString(x_layer.id(), "layer%d");
+    Tube       lay_tub(x_barrel.inner_r(), x_barrel.outer_r(), x_barrel.z_length() / 2.0);
+    Volume     lay_vol(lay_nam, lay_tub, air); // Create the layer envelope volume.
     lay_vol.setVisAttributes(description.visAttributes(x_layer.visStr()));
-    double phi0 = x_layout.phi0();          // Starting phi of first module.
-    double phi_tilt = x_layout.phi_tilt();  // Phi tilt of a module.
-    double rc = x_layout.rc();              // Radius of the module center.
-    int nphi = x_layout.nphi();             // Number of modules in phi.
-    double rphi_dr = x_layout.dr();         // The delta radius of every other module.
-    double phi_incr = (M_PI * 2) / nphi;    // Phi increment for one module.
-    double phic = phi0;                     // Phi of the module center.
-    double z0 = z_layout.z0();              // Z position of first module in phi.
-    double nz = z_layout.nz();              // Number of modules to place in z.
-    double z_dr = z_layout.dr();            // Radial displacement parameter, of every other module.
-    Volume module_env = volumes[m_nam];
-    DetElement lay_elt(sdet, _toString(x_layer.id(), "layer%d"), lay_id);
+
+    double      phi0       = x_layout.phi0();     // Starting phi of first module.
+    double      phi_tilt   = x_layout.phi_tilt(); // Phi tilt of a module.
+    double      rc         = x_layout.rc();       // Radius of the module center.
+    int         nphi       = x_layout.nphi();     // Number of modules in phi.
+    double      rphi_dr    = x_layout.dr();       // The delta radius of every other module.
+    double      phi_incr   = (M_PI * 2) / nphi;   // Phi increment for one module.
+    double      phic       = phi0;                // Phi of the module center.
+    double      z0         = z_layout.z0();       // Z position of first module in phi.
+    double      nz         = z_layout.nz();       // Number of modules to place in z.
+    double      z_dr       = z_layout.dr();       // Radial displacement parameter, of every other module.
+
+    Volume      module_env = volumes[m_nam];
+    DetElement  lay_elt(sdet, _toString(x_layer.id(), "layer%d"), lay_id);
     Placements& sensVols = sensitives[m_nam];
 
     // the local coordinate systems of modules in dd4hep and acts differ
     // see http://acts.web.cern.ch/ACTS/latest/doc/group__DD4hepPlugins.html
     Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
     layerExtension->addType("sensitive cylinder", "layer");
+    //layerExtension->addValue(0, "r_min", "envelope");
+    //layerExtension->addValue(0, "r_max", "envelope");
+    //layerExtension->addValue(0, "z_min", "envelope");
+    //layerExtension->addValue(0, "z_max", "envelope");
     //layerExtension->addType("axes", "definitions", "XzY");
     lay_elt.addExtension<Acts::ActsExtension>(layerExtension);
 
@@ -209,10 +222,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
           PlacedVolume sens_pv = sensVols[ic];
           DetElement comp_de(mod_elt, std::string("de_") + sens_pv.volume().name(), module);
           comp_de.setPlacement(sens_pv);
-          Acts::ActsExtension* moduleExtension = new Acts::ActsExtension();
-          comp_de.addExtension<Acts::ActsExtension>(moduleExtension);
-          comp_de.setAttributes(description, sens_pv.volume(), x_layer.regionStr(), x_layer.limitsStr(),
-                                xml_det_t(xmleles[m_nam]).visStr());
+          Acts::ActsExtension* sensorExtension = new Acts::ActsExtension();
+          //sensorExtension->addType("sensor", "detector");
+          comp_de.addExtension<Acts::ActsExtension>(sensorExtension);
+          //comp_de.setAttributes(description, sens_pv.volume(), x_layer.regionStr(), x_layer.limitsStr(),
+          //                      xml_det_t(xmleles[m_nam]).visStr());
         }
 
         /// Increase counters etc.
diff --git a/src/SimpleDiskTracker_geo.cpp b/src/SimpleDiskTracker_geo.cpp
index 54a9ea93d190250ee01d62a5b76941c4cd132369..484276e33548da44b242246d878b412e44571d15 100644
--- a/src/SimpleDiskTracker_geo.cpp
+++ b/src/SimpleDiskTracker_geo.cpp
@@ -56,27 +56,40 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     Volume l_vol(l_nam, l_tub, air);
     l_vol.setVisAttributes(description, x_layer.visStr());
     DetElement layer;
+    PlacedVolume layer_pv;
     if (!reflect) {
       layer = DetElement(sdet, l_nam + "_pos", l_num);
-      pv = assembly.placeVolume(l_vol, Position(0, 0, zmin + layerWidth / 2.));
-      pv.addPhysVolID("layer", l_num);
-      pv.addPhysVolID("barrel", 3);
-      layer.setPlacement(pv);
+      layer_pv = assembly.placeVolume(l_vol, Position(0, 0, zmin + layerWidth / 2.));
+      layer_pv.addPhysVolID("barrel", 3).addPhysVolID("layer", l_num);
+      layer.setPlacement(layer_pv);
+      Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
+      layerExtension->addType("sensitive disk", "layer");
+      //layerExtension->addType("axes", "definitions", "XzY");
+      // need all four of these or else it is ignored.
+      //layerExtension->addValue(0, "r_min", "envelope");
+      //layerExtension->addValue(0, "r_max", "envelope");
+      //layerExtension->addValue(0, "z_min", "envelope");
+      //layerExtension->addValue(0, "z_max", "envelope");
+      // layerExtension->addType("axes", "definitions", "XZY");
+
+      layer.addExtension<Acts::ActsExtension>(layerExtension);
     } else {
       layer = DetElement(sdet, l_nam + "_neg", l_num);
-      (sdet, l_nam + "_pos", l_num);
-      pv = assembly.placeVolume(l_vol, Transform3D(RotationY(M_PI), Position(0, 0, -zmin - layerWidth / 2)));
-      pv.addPhysVolID("layer", l_num);
-      pv.addPhysVolID("barrel", 2);
-      layer.setPlacement(pv);
+      layer_pv = assembly.placeVolume(l_vol, Transform3D(RotationY(M_PI), Position(0, 0, -zmin - layerWidth / 2)));
+      layer_pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_num);
+      layer.setPlacement(layer_pv);
       // DetElement layerR = layer.clone(l_nam+"_neg");
       // sdet.add(layerR.setPlacement(pv));
+      Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
+      layerExtension->addType("sensitive disk", "layer");
+      //layerExtension->addValue(0, "r_min", "envelope");
+      //layerExtension->addValue(0, "r_max", "envelope");
+      //layerExtension->addValue(0, "z_min", "envelope");
+      //layerExtension->addValue(0, "z_max", "envelope");
+      layer.addExtension<Acts::ActsExtension>(layerExtension);
     }
-    Acts::ActsExtension* layerExtension = new Acts::ActsExtension();
-    layerExtension->addType("layer", "layer");
-    //layerExtension->addType("axes", "definitions", "XZY");
-    layer.addExtension<Acts::ActsExtension>(layerExtension);
 
+    double tot_thickness = -layerWidth / 2.0;
     for (xml_coll_t j(x_layer, _U(slice)); j; ++j, ++s_num) {
       xml_comp_t x_slice = j;
       double     thick   = x_slice.thickness();
@@ -92,13 +105,15 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
       if (x_slice.isSensitive()) {
         sens.setType("tracker");
         s_vol.setSensitiveDetector(sens);
-        Acts::ActsExtension* moduleExtension = new Acts::ActsExtension("XZY");
-        slice_de.addExtension<Acts::ActsExtension>(moduleExtension);
+        Acts::ActsExtension* sensorExtension = new Acts::ActsExtension();
+        //sensorExtension->addType("sensor", "detector");
+        slice_de.addExtension<Acts::ActsExtension>(sensorExtension);
       }
       s_vol.setAttributes(description, x_slice.regionStr(), x_slice.limitsStr(), x_slice.visStr());
-      pv = l_vol.placeVolume(s_vol, Position(0, 0, z - zmin - layerWidth / 2 + thick / 2));
+      pv = l_vol.placeVolume(s_vol, Position(0, 0, tot_thickness + thick / 2));
       pv.addPhysVolID("slice", s_num);
       slice_de.setPlacement(pv);
+      tot_thickness = tot_thickness + thick;
     }
 
   }
diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp
index dafc0c2e6ecabc59bdf089890dbf50db0e661b62..58ec274627b070ea79cddb06eb560968bfa35f36 100644
--- a/src/TrapEndcapTracker_geo.cpp
+++ b/src/TrapEndcapTracker_geo.cpp
@@ -33,6 +33,9 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
   bool                         reflect  = x_det.reflect(false);
   DetElement                   sdet(det_name, det_id);
   Assembly                     assembly(det_name);
+
+
+  Material  air  = description.material("Air");
   // Volume      assembly    (det_name,Box(10000,10000,10000),vacuum);
   Volume                  motherVol = description.pickMotherVolume(sdet);
   int                     m_id = 0, c_id = 0, n_sensor = 0;
@@ -134,30 +137,32 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     int        l_id    = x_layer.id();
     int        mod_num = 1;
 
-    //xml_comp_t l_env      = x_layer.child(_U(envelope));
+    xml_comp_t l_env      = x_layer.child(_U(envelope));
     string     layer_name = det_name + std::string("_layer") + std::to_string(l_id);
 
-    //std::string layer_vis    = l_env.attr<std::string>(_Unicode(vis));
-    //double      layer_rmin   = l_env.attr<double>(_Unicode(rmin));
-    //double      layer_rmax   = l_env.attr<double>(_Unicode(rmax));
-    //double      layer_length = l_env.attr<double>(_Unicode(length));
-    //double      layer_zstart = l_env.attr<double>(_Unicode(zstart));
+    std::string layer_vis    = l_env.attr<std::string>(_Unicode(vis));
+    double      layer_rmin   = l_env.attr<double>(_Unicode(rmin));
+    double      layer_rmax   = l_env.attr<double>(_Unicode(rmax));
+    double      layer_length = l_env.attr<double>(_Unicode(length));
+    double      layer_zstart = l_env.attr<double>(_Unicode(zstart));
+    double      layer_center_z =  layer_zstart + layer_length/2.0;
     //printout(INFO,"ROOTGDMLParse","+++ Read geometry from GDML file file:%s",input.c_str());
     //std::cout << "SiTracker Endcap layer " << l_id << " zstart = " << layer_zstart/dd4hep::mm << "mm ( " << layer_length/dd4hep::mm << " mm thick )\n";
 
-    Assembly    layer_assembly(layer_name);
+    //Assembly    layer_assembly(layer_name);
     //assembly.placeVolume(layer_assembly);
-    //Tube       layer_tub(layer_rmin, layer_rmax, layer_length / 2);
-    //Volume     layer_vol(layer_name, layer_tub, air); // Create the layer envelope volume.
-    //layer_assembly.setVisAttributes(description.visAttributes(layer_vis));
+    Tube       layer_tub(layer_rmin, layer_rmax, layer_length / 2);
+    Volume     layer_vol(layer_name, layer_tub, air); // Create the layer envelope volume.
+    layer_vol.setVisAttributes(description.visAttributes(layer_vis));
 
     PlacedVolume layer_pv;
     if (reflect) {
-      layer_pv = assembly.placeVolume(layer_assembly, Position(0,0,-1.0e-9));//-layer_zstart-layer_length/2));
+      layer_pv =
+          assembly.placeVolume(layer_vol, Transform3D(RotationZYX(0.0, -M_PI, 0.0), Position(0, 0, -layer_center_z)));
       layer_pv.addPhysVolID("barrel", 3).addPhysVolID("layer", l_id);
       layer_name += "_N";
     } else {
-      layer_pv = assembly.placeVolume(layer_assembly);//, Position(0, 0, +layer_zstart + layer_length / 2));
+      layer_pv = assembly.placeVolume(layer_vol, Position(0, 0, layer_center_z));
       layer_pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id);
       layer_name += "_P";
     }
@@ -185,20 +190,23 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
         string     m_base = _toString(l_id, "layer%d") + _toString(mod_num, "_module%d");
         double     x      = -r * std::cos(phi);
         double     y      = -r * std::sin(phi);
-        DetElement module(sdet, m_base + "_pos", det_id);
-        pv = assembly.placeVolume(m_vol,
-                                  Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, zstart + dz)));
-        pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
-        module.setPlacement(pv);
-        for (size_t ic = 0; ic < sensVols.size(); ++ic) {
-          PlacedVolume sens_pv = sensVols[ic];
-          DetElement   comp_elt(module, sens_pv.volume().name(), mod_num);
-          comp_elt.setPlacement(sens_pv);
-        }
 
-        if (reflect) {
-          pv = assembly.placeVolume(
-              m_vol, Transform3D(RotationZYX(M_PI, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, -zstart - dz)));
+        if (!reflect) {
+          DetElement module(sdet, m_base + "_pos", det_id);
+          pv = layer_vol.placeVolume(
+              m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, zstart + dz)));
+          pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
+          module.setPlacement(pv);
+          for (size_t ic = 0; ic < sensVols.size(); ++ic) {
+            PlacedVolume sens_pv = sensVols[ic];
+            DetElement   comp_elt(module, sens_pv.volume().name(), mod_num);
+            comp_elt.setPlacement(sens_pv);
+            Acts::ActsExtension* moduleExtension = new Acts::ActsExtension();
+            comp_elt.addExtension<Acts::ActsExtension>(moduleExtension);
+          }
+        } else {
+          pv = layer_vol.placeVolume(
+              m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, -zstart - dz)));
           pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
           DetElement r_module(sdet, m_base + "_neg", det_id);
           r_module.setPlacement(pv);
@@ -206,7 +214,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
             PlacedVolume sens_pv = sensVols[ic];
             DetElement   comp_elt(r_module, sens_pv.volume().name(), mod_num);
             comp_elt.setPlacement(sens_pv);
-            Acts::ActsExtension* moduleExtension = new Acts::ActsExtension("XZY");
+            Acts::ActsExtension* moduleExtension = new Acts::ActsExtension();
             comp_elt.addExtension<Acts::ActsExtension>(moduleExtension);
           }
         }
@@ -216,7 +224,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
       }
     }
   }
-  pv = motherVol.placeVolume(assembly);
+  pv = motherVol.placeVolume(assembly,Position(0,0,(reflect?-1.0e-9:1.0e-9)) );
   pv.addPhysVolID("system", det_id);
   sdet.setPlacement(pv);
   return sdet;