diff --git a/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Full.cxx b/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Full.cxx
index 42d239346b9f485d671031bdd4f62c701f5a1bab..e8b1c8df7a08686ad25ea969269e8f77652b98c2 100755
--- a/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Full.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Full.cxx
@@ -1170,8 +1170,8 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
       pStrawPlaneA_Kr	= makeStrawPlane(firstIndexOfA, GM_KRYPTON);
     if (m_doArgon)
       pStrawPlaneA_Ar = makeStrawPlane(firstIndexOfA, GM_ARGON);
-    GeoFullPhysVol* pStrawPlaneA      = makeStrawPlane(firstIndexOfA);
-    // pStrawPlaneA->ref();
+    GeoIntrusivePtr<GeoFullPhysVol> pStrawPlaneA      = makeStrawPlane(firstIndexOfA);
+
 
     //TK:
     // Instead of this confusing stuf (main, thin, middle??), make:
@@ -1424,28 +1424,25 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
 							 m_data->endCapOuterRadiusOfSupportA - m_data->endCapRadialThicknessOfOuterSupportA,
 							 m_data->endCapFaradayFoilThickness/2);
 	      GeoLogVol* lFaradayFoilWheelAB = new GeoLogVol("FaradayKaptonFoil",sFaradayFoilWheelAB, m_materialManager->getMaterial("trt::FaradayFoilMaterial"));
-	      GeoPhysVol* pFaradayFoilWheelAB = new GeoPhysVol(lFaradayFoilWheelAB);
+	      GeoIntrusivePtr<GeoPhysVol> pFaradayFoilWheelAB{new GeoPhysVol(lFaradayFoilWheelAB)};
 	      
 	      // Heat Exchanger added
 	      GeoTube* sHeatExchangerA = new GeoTube(m_data->endCapRMinOfHeatExchanger,m_data->endCapRMaxOfHeatExchanger,m_data->endCapHeatExchangerThicknessA/2);
 	      GeoLogVol* lHeatExchangerA = new GeoLogVol("HeatExchangerA",sHeatExchangerA, m_materialManager->getMaterial("trt::HeatExchangerAMat"));
-	      GeoPhysVol* pHeatExchangerA = new GeoPhysVol(lHeatExchangerA);
-	      pHeatExchangerA->ref(); // So we can unref later since doesn't get used for every wheel
+	      GeoIntrusivePtr<GeoPhysVol> pHeatExchangerA{new GeoPhysVol(lHeatExchangerA)};
 
 	      // Inner/Outer Support Gapper added
 	      GeoTube* sInnerSupportGapperA = new GeoTube(m_data->endCapInnerRadiusOfSupportA,
 					                  m_data->endCapInnerRadiusOfSupportA + m_data->endCapRadialThicknessOfInnerSupportA,
                                                           m_data->endCapHeatExchangerThicknessA/2 + m_data->endCapFaradayFoilThickness/2 + zdelta);
 	      GeoLogVol* lInnerSupportGapperA = new GeoLogVol("InnerSupportGapperA", sInnerSupportGapperA, m_materialManager->getMaterial("trt::InnerSupportA"));
-	      GeoPhysVol* pInnerSupportGapperA = new GeoPhysVol(lInnerSupportGapperA);
-	      pInnerSupportGapperA->ref(); // So we can unref later since doesn't get used for every wheel
+	      GeoIntrusivePtr<GeoPhysVol> pInnerSupportGapperA{new GeoPhysVol(lInnerSupportGapperA)};
 
 	      GeoTube* sOuterSupportGapperA = new GeoTube(m_data->endCapOuterRadiusOfSupportA - m_data->endCapRadialThicknessOfOuterSupportA,
 					                  m_data->endCapOuterRadiusOfSupportA, 
 							  m_data->endCapHeatExchangerThicknessA/2 + m_data->endCapFaradayFoilThickness/2 + zdelta);
 	      GeoLogVol* lOuterSupportGapperA = new GeoLogVol("OuterSupportGapperA", sOuterSupportGapperA, m_materialManager->getMaterial("trt::OuterSupportA"));
-	      GeoPhysVol* pOuterSupportGapperA = new GeoPhysVol(lOuterSupportGapperA);
-              pOuterSupportGapperA->ref(); // So we can unref later since doesn't get used for every wheel
+	      GeoIntrusivePtr<GeoPhysVol> pOuterSupportGapperA{new GeoPhysVol(lOuterSupportGapperA)};
 
 	      if(iiWheel<=firstIndexOfB-1) 
 		{ 
@@ -1485,17 +1482,12 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
 		  pCommonEndcapAB[iiSide]->add(xfOuterSupportGapperA);
 		  pCommonEndcapAB[iiSide]->add(pOuterSupportGapperA);
 		}
-	      // Unref a few volumes. This will delete them if they did not get added.
-	      pHeatExchangerA->unref();
-	      pInnerSupportGapperA->unref();
-	      pOuterSupportGapperA->unref();
 
 	    } //include membrane, heat  exchanger and foil 
 	  } // iiWheel loop for Wheel A
       } // if (pCommonEndcapAB[iiSide]) block for Wheel A
     } // iiSide loop for Wheel A
     
-    //pStrawPlaneA->unref(); // Get eventual seg fault if unref. Clone doesn't increment ref count of orig, See bug #34074
 
 
       // ---------------  Wheel B  ----------------------------
@@ -1523,8 +1515,7 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
       pStrawPlaneB_Kr = makeStrawPlane(firstIndexOfB,GM_KRYPTON);
     if (m_doArgon)
       pStrawPlaneB_Ar = makeStrawPlane(firstIndexOfB,GM_ARGON);
-    GeoFullPhysVol* pStrawPlaneB    = makeStrawPlane(firstIndexOfB);
-//    pStrawPlaneB->ref();
+    GeoIntrusivePtr<GeoFullPhysVol> pStrawPlaneB {makeStrawPlane(firstIndexOfB)};
 
     // Radiators
     
@@ -1716,30 +1707,26 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
 							 m_data->endCapOuterRadiusOfSupportB - m_data->endCapRadialThicknessOfOuterSupportB,
 							 m_data->endCapFaradayFoilThickness/2);
 	      GeoLogVol* lFaradayFoilWheelAB = new GeoLogVol("FaradayKaptonFoil",sFaradayFoilWheelAB,  m_materialManager->getMaterial("trt::FaradayFoilMaterial"));
-	      GeoPhysVol* pFaradayFoilWheelAB = new GeoPhysVol(lFaradayFoilWheelAB);
-        pFaradayFoilWheelAB->ref(); //add a ref count here, then unref at the end to allow deletion (sar)
+	      GeoIntrusivePtr<GeoPhysVol> pFaradayFoilWheelAB{new GeoPhysVol(lFaradayFoilWheelAB)};
 
 	      // Heat Exchanger 
 	      GeoTube* sHeatExchangerB = new GeoTube(m_data->endCapRMinOfHeatExchanger,m_data->endCapRMaxOfHeatExchanger,m_data->endCapHeatExchangerThicknessB/2);
 
 	      GeoLogVol* lHeatExchangerB = new GeoLogVol("HeatExchangerB", sHeatExchangerB, m_materialManager->getMaterial("trt::HeatExchangerBMat"));
-	      GeoPhysVol* pHeatExchangerB = new GeoPhysVol(lHeatExchangerB);
-	      pHeatExchangerB->ref(); // Doesn't get used for every wheel// Doesn't get used for every wheel
+	      GeoIntrusivePtr<GeoPhysVol> pHeatExchangerB{new GeoPhysVol(lHeatExchangerB)};
 
 	      // Inner/Outer Support Gapper added
 	      GeoTube* sInnerSupportGapperB = new GeoTube(m_data->endCapInnerRadiusOfSupportB,
 							  m_data->endCapInnerRadiusOfSupportB + m_data->endCapRadialThicknessOfInnerSupportB,
                                                           m_data->endCapHeatExchangerThicknessB/2 + m_data->endCapFaradayFoilThickness/2 + zdelta);
 	      GeoLogVol* lInnerSupportGapperB = new GeoLogVol("InnerSupportGapperB", sInnerSupportGapperB, m_materialManager->getMaterial("trt::InnerSupportB"));
-	      GeoPhysVol* pInnerSupportGapperB = new GeoPhysVol(lInnerSupportGapperB);
-	      pInnerSupportGapperB->ref(); // So we can unref later since doesn't get used for every wheel
+	      GeoIntrusivePtr<GeoPhysVol> pInnerSupportGapperB{new GeoPhysVol(lInnerSupportGapperB)};
 
 	      GeoTube* sOuterSupportGapperB = new GeoTube(m_data->endCapOuterRadiusOfSupportB - m_data->endCapRadialThicknessOfOuterSupportB,
 							  m_data->endCapOuterRadiusOfSupportB,
 							  m_data->endCapHeatExchangerThicknessB/2 + m_data->endCapFaradayFoilThickness/2 + zdelta);
 	      GeoLogVol* lOuterSupportGapperB = new GeoLogVol("OuterSupportGapperB", sOuterSupportGapperB, m_materialManager->getMaterial("trt::OuterSupportB"));
-	      GeoPhysVol* pOuterSupportGapperB = new GeoPhysVol(lOuterSupportGapperB);
-	      pOuterSupportGapperB->ref(); // So we can unref later since doesn't get used for every wheel
+	      GeoIntrusivePtr<GeoPhysVol> pOuterSupportGapperB{new GeoPhysVol(lOuterSupportGapperB)};
 
 	      // Place kapton foils on a wheel just like a sandwitch 
 	      if(iiWheel-firstIndexOfB<firstIndexOfC-firstIndexOfB)
@@ -1782,16 +1769,10 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
 		pCommonEndcapAB[iiSide]->add(xfOuterSupportGapperB);
 		pCommonEndcapAB[iiSide]->add(pOuterSupportGapperB);
 	      }
-	      // Unref a few volumes. This will delete them if they did not get added.
-	      pHeatExchangerB->unref();
-	      pInnerSupportGapperB->unref();
-	      pOuterSupportGapperB->unref();
-        pFaradayFoilWheelAB->unref(); //added 31/05/2018 (sar)
 	    } // include foil, heat exchanger and membrane
 	  }// iiWheel loop  for Wheel B
       } // if (pCommonEndcapAB[iiSide]) block for Wheel B
     } // iiSide loop for Wheel B
-    //pStrawPlaneB->unref(); // Get eventual seg fault if unref. Clone doesn't increment ref count of orig, See bug #34074
     
   } // end AB
 
@@ -1843,8 +1824,7 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
     GeoPhysVol* pOuterSupportC = new GeoPhysVol(lOuterSupportC);
 
     // Straw plane
-    GeoFullPhysVol* pStrawPlaneC 	= makeStrawPlane(firstIndexOfC);
-    // pStrawPlaneC->ref();
+    GeoIntrusivePtr<GeoFullPhysVol> pStrawPlaneC 	= makeStrawPlane(firstIndexOfC);
 
     // Radiators
     GeoTube* sMainRadiatorC = new GeoTube(m_data->endCapInnerRadiusOfSupportC + m_data->endCapRadialThicknessOfInnerSupportC,
@@ -1997,7 +1977,6 @@ void TRTDetectorFactory_Full::create(GeoPhysVol *world)
 	  } // iiWheel loop for Wheel C
       } // if (pCommonEndcapC[iiSide]) block for Wheel C
     } // iiSide loop for Wheel C
-    //pStrawPlaneC->unref(); // Get eventual seg fault if unref. Clone doesn't increment ref count of orig, See bug #34074
 
   } // End Wheel C
 
diff --git a/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Lite.cxx b/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Lite.cxx
index 0fc6fb3508297f87cb61edaee2c5b0cf45e9d2d1..82104dfdd31232cec1f6e8a238fc9b4e1bf33e90 100755
--- a/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Lite.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_GeoModel/src/TRTDetectorFactory_Lite.cxx
@@ -932,7 +932,6 @@ void TRTDetectorFactory_Lite::create(GeoPhysVol *)
 	  }// iiWheel loop  for Wheel B
       } // if (pCommonEndcapAB[iiSide]) block for Wheel B
     } // iiSide loop for Wheel B
-    //pStrawPlaneB->unref(); // Get eventual seg fault if unref. Clone doesn't increment ref count of orig, See bug #34074
     
   } // end AB
   
@@ -1046,7 +1045,6 @@ void TRTDetectorFactory_Lite::create(GeoPhysVol *)
 	  } // iiWheel loop for Wheel C
       } // if (pCommonEndcapC[iiSide]) block for Wheel C
     } // iiSide loop for Wheel C
-    //pStrawPlaneC->unref(); // Get eventual seg fault if unref. Clone doesn't increment ref count of orig, See bug #34074
 
   } // End Wheel C