diff --git a/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml b/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml
index db98f5e03805ad71c147cec869b05c29f4d45419..7d1839f2ae327273550b2874924911e0b439dcdc 100644
--- a/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml
+++ b/Detector/DetCRD/compact/CRD_common_v02/VXD_StaggeredLadder_v02_01.xml
@@ -39,6 +39,8 @@
               sensitive_mat="G4_Si" support_mat="G4_C" sensitive_threshold_KeV="64*keV"  />
       <display ladder="SeeThrough" support="VXDSupportVis" flex="VXDFlexVis" sens_env="SeeThrough" sens="GrayVis" deadsensor="GreenVis" deadwire="RedVis"/>
 
+      <shell rmin="70*mm" rmax="72.5*mm" zhalf="510*mm" material="CFRP_CMS" vis="LightGrayVis"/>
+
       <layer layer_id="0" ladder_radius="12.459*mm" ladder_offset="(8.7+0.235607)*mm" n_ladders="8" n_sensors_per_side="0">
         <ladder isDoubleSided="true">
           <ladderSupport height="1.7*mm" length="VXDLayer1_length" thickness="334*um" width="17.4*mm" mat="CFRP_CMS"/>
@@ -125,7 +127,7 @@
       </layer>
     </detector>
 
-    <detector name="VXDShell" type="DD4hep_Solenoid_o1_v01" id="DetID_NOTUSED" insideTrackingVolume="true">
+    <!--detector name="VXDShell" type="DD4hep_Solenoid_o1_v01" id="DetID_NOTUSED" insideTrackingVolume="true">
       <envelope>
         <shape type="Tube" rmin="70*mm" rmax="72.5*mm" dz="510*mm" material="Air"/>
 	<position x="0" y="0" z="0*mm"/>
@@ -136,7 +138,7 @@
       <layer id="0" inner_r="70*mm" outer_z="510*mm" vis="SeeThrough">
         <slice material="CFRP_CMS" thickness="2.5*mm" vis="ShellVis"/>
       </layer>
-    </detector>
+    </detector-->
   </detectors>
   
   <readouts>
diff --git a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
index 1496aff196289e0d5700f48255054a38bcc5f3f9..895ca4aabe67c839a07dc3b2a584791fa24057ef 100644
--- a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
+++ b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
@@ -16,6 +16,7 @@
 using namespace std;
 
 using dd4hep::Box;
+using dd4hep::Tube;
 using dd4hep::DetElement;
 using dd4hep::Material;
 using dd4hep::Position;
@@ -76,26 +77,47 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
   if(theDetector.buildType()==dd4hep::BUILD_ENVELOPE) return vxd;
   envelope.setVisAttributes(theDetector.visAttributes("SeeThrough"));
 
-  sens.setType("tracker");
+  if (x_det.hasAttr(_U(sensitive))) {
+    xml_dim_t sd_typ = x_det.child(_U(sensitive));
+    sens.setType(sd_typ.typeStr());
+  }
+  else {
+    sens.setType("tracker");
+  }
   std::cout << " ** building SiTrackerSkewBarrel_v01 ..." << std::endl ;
 
   dd4hep::rec::ZPlanarData* zPlanarData = new dd4hep::rec::ZPlanarData;
 
-   // fetch the global parameters
-   
-   //fetch the display parameters
-   xml_comp_t x_display(x_det.child(_Unicode(display)));
-   std::string ladderVis      = x_display.attr<string>(_Unicode(ladder));
-   std::string supportVis     = x_display.attr<string>(_Unicode(support));
-   std::string flexVis        = x_display.attr<string>(_Unicode(flex));
-   std::string sensEnvVis     = x_display.attr<string>(_Unicode(sens_env));
-   std::string sensVis        = x_display.attr<string>(_Unicode(sens));
-   std::string deadsensVis    = x_display.attr<string>(_Unicode(deadsensor));
-   std::string deadwireVis    = x_display.attr<string>(_Unicode(deadwire));
-
-
- for(xml_coll_t layer_i(x_det,_U(layer)); layer_i; ++layer_i){
-   xml_comp_t x_layer(layer_i);
+  // fetch the global parameters
+
+  //fetch the display parameters
+  xml_comp_t x_display(x_det.child(_Unicode(display)));
+  std::string ladderVis      = x_display.attr<string>(_Unicode(ladder));
+  std::string supportVis     = x_display.attr<string>(_Unicode(support));
+  std::string flexVis        = x_display.attr<string>(_Unicode(flex));
+  std::string sensEnvVis     = x_display.attr<string>(_Unicode(sens_env));
+  std::string sensVis        = x_display.attr<string>(_Unicode(sens));
+  std::string deadsensVis    = x_display.attr<string>(_Unicode(deadsensor));
+  std::string deadwireVis    = x_display.attr<string>(_Unicode(deadwire));
+
+  //fetch the shell parameters
+  if (x_det.hasAttr(_Unicode(shell))) {
+    xml_comp_t x_shell(x_det.child(_Unicode(shell)));
+    double rmin_shell = x_shell.rmin();
+    double rmax_shell = x_shell.rmax();
+    double zhalf_shell = x_shell.zhalf();
+    Tube shellSolid(rmin_shell, rmax_shell, zhalf_shell);
+    Volume shellLogical(name + "_ShellLogical", shellSolid, theDetector.material(x_shell.materialStr()));
+    shellLogical.setVisAttributes(theDetector.visAttributes(x_shell.visStr()));
+    envelope.placeVolume(shellLogical);
+
+    zPlanarData->zHalfShell  = zhalf_shell;
+    zPlanarData->rInnerShell = rmin_shell;
+    zPlanarData->rOuterShell = rmax_shell;
+  }
+
+  for(xml_coll_t layer_i(x_det,_U(layer)); layer_i; ++layer_i){
+    xml_comp_t x_layer(layer_i);
    
    dd4hep::PlacedVolume pv;
    int layer_id                 = x_layer.attr<int>(_Unicode(layer_id));
@@ -353,7 +375,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
     std::cout << ladder_enum.str() << " done." << endl;
     if(i==0) std::cout << "xy=" << ladder_radius*cos(ladder_phi0) << " " << ladder_radius*sin(ladder_phi0) << std::endl;
   }
-  
+
   // package the reconstruction data
   dd4hep::rec::ZPlanarData::LayerLayout topLayer;
   dd4hep::rec::ZPlanarData::LayerLayout bottomLayer;