diff --git a/InnerDetector/InDetDetDescr/SCT_GeoModel/SCT_GeoModel/SCT_InterLink.h b/InnerDetector/InDetDetDescr/SCT_GeoModel/SCT_GeoModel/SCT_InterLink.h
index 079026e9ea5acc8477232cac5d0f501eb64d252a..331a2dd2995830c80ff26cb2751aae7d7a9aebe9 100755
--- a/InnerDetector/InDetDetDescr/SCT_GeoModel/SCT_GeoModel/SCT_InterLink.h
+++ b/InnerDetector/InDetDetDescr/SCT_GeoModel/SCT_GeoModel/SCT_InterLink.h
@@ -8,8 +8,14 @@
 #include "SCT_GeoModel/SCT_ComponentFactory.h"
 
 #include <string>
+#include <vector>
 
 class GeoMaterial;
+class GeoTube;
+class GeoLogVol;
+class GeoPhysVol;
+class GeoTubs;
+class GeoTransform;
 
 class SCT_InterLink : public SCT_SharedComponentFactory
 {
@@ -23,7 +29,6 @@ public:
   double outerRadius() const {return m_outerRadius;} 
   double length() const {return m_length;} 
 
- 
 private:
   void getParameters();
   virtual GeoVPhysVol * build();
@@ -52,6 +57,19 @@ private:
   double m_phiPosBearing;
   int m_nRepeatBearing;
 
+  const GeoTube* m_interLinkShape;
+  const GeoLogVol* m_interLinkLog;
+  GeoPhysVol* m_interLink;
+  const GeoTubs* m_interLinkSegShape;
+  const GeoLogVol* m_interLinkSegLog;
+  GeoPhysVol* m_interLinkSeg;
+  const GeoTubs* m_bearingShape;
+  const GeoLogVol* m_bearingLog;
+  GeoPhysVol* m_bearing;
+  const GeoTubs* m_FSIFlangeShape;
+  const GeoLogVol* m_FSIFlangeLog;
+  GeoPhysVol* m_FSIFlange;
+  std::vector<GeoTransform*> m_geoTransforms;
 };
 
 #endif // SCT_GEOMODEL_SCT_INTERLINK_H
diff --git a/InnerDetector/InDetDetDescr/SCT_GeoModel/src/SCT_InterLink.cxx b/InnerDetector/InDetDetDescr/SCT_GeoModel/src/SCT_InterLink.cxx
index c598f20907224e79f338cb8090157402ee2e7102..3e14d2ae33d064833c2136b5d1e3ba68f765fc6c 100755
--- a/InnerDetector/InDetDetDescr/SCT_GeoModel/src/SCT_InterLink.cxx
+++ b/InnerDetector/InDetDetDescr/SCT_GeoModel/src/SCT_InterLink.cxx
@@ -17,13 +17,24 @@
 #include "CLHEP/Units/SystemOfUnits.h"
 
 SCT_InterLink::SCT_InterLink(const std::string & name)
-  : SCT_SharedComponentFactory(name)
+  : SCT_SharedComponentFactory(name),
+    m_interLinkShape(nullptr),
+    m_interLinkLog(nullptr),
+    m_interLink(nullptr),
+    m_interLinkSegShape(nullptr),
+    m_interLinkSegLog(nullptr),
+    m_interLinkSeg(nullptr),
+    m_bearingShape(nullptr),
+    m_bearingLog(nullptr),
+    m_bearing(nullptr),
+    m_FSIFlangeShape(nullptr),
+    m_FSIFlangeLog(nullptr),
+    m_FSIFlange(nullptr)
 {
   getParameters();
   m_physVolume = build();
 }
 
-
 void 
 SCT_InterLink::getParameters()
 {
@@ -70,64 +81,69 @@ SCT_InterLink::build()
   // Make the interlink.
  
   SCT_MaterialManager materials;
-  GeoPhysVol* interLink;
 
   if(m_nRepeat == 1) {
     // For old geometry interlink is a simple tube of material
-    const GeoTube* interLinkShape = new GeoTube(m_innerRadius, m_outerRadius, 0.5*m_length);
-    const GeoMaterial* material = materials.getMaterialForVolume(m_materialName, interLinkShape->volume());
+    m_interLinkShape = new GeoTube(m_innerRadius, m_outerRadius, 0.5*m_length);
+    const GeoMaterial* material = materials.getMaterialForVolume(m_materialName, m_interLinkShape->volume());
     if(!material) {material = materials.getMaterial(m_materialName);}
-    const GeoLogVol* interLinkLog = new GeoLogVol(getName(), interLinkShape, material);
-    interLink = new GeoPhysVol(interLinkLog);
+    m_interLinkLog = new GeoLogVol(getName(), m_interLinkShape, material);
+    m_interLink = new GeoPhysVol(m_interLinkLog);
   }
 
   else {
     // In updated version we make air tube containing interlink segments and B6 bearings
     // And also include FSI flange segments if defined
     // Air tube:
-    const GeoTube* interLinkShape = new GeoTube(m_innerRadius, m_outerRadiusBearing, 0.5*m_length);
-    const GeoLogVol* interLinkLog = new GeoLogVol(getName(), interLinkShape, materials.gasMaterial());
-    interLink = new GeoPhysVol(interLinkLog);
+    m_interLinkShape = new GeoTube(m_innerRadius, m_outerRadiusBearing, 0.5*m_length);
+    m_interLinkLog = new GeoLogVol(getName(), m_interLinkShape, materials.gasMaterial());
+    m_interLink = new GeoPhysVol(m_interLinkLog);
 
     // Interlink segments:
-    const GeoTubs* interLinkSegShape = new GeoTubs(m_innerRadius, m_outerRadius, 0.5*m_length, - 0.5*m_dPhi*CLHEP::radian, m_dPhi*CLHEP::radian);
-    const GeoLogVol* interLinkSegLog = new GeoLogVol("InterlinkSegment", interLinkSegShape, materials.getMaterialForVolume(m_materialName, interLinkSegShape->volume()));
-    GeoPhysVol* interLinkSeg = new GeoPhysVol(interLinkSegLog);
+    m_interLinkSegShape = new GeoTubs(m_innerRadius, m_outerRadius, 0.5*m_length, - 0.5*m_dPhi*CLHEP::radian, m_dPhi*CLHEP::radian);
+    m_interLinkSegLog = new GeoLogVol("InterlinkSegment", m_interLinkSegShape, materials.getMaterialForVolume(m_materialName, m_interLinkSegShape->volume()));
+    m_interLinkSeg = new GeoPhysVol(m_interLinkSegLog);
 
     for(int i=0; i<m_nRepeat; i++) {
       double interlinkAngle = m_phiPos + (i * 360./m_nRepeat)*CLHEP::deg;
-      interLink->add(new GeoTransform(HepGeom::RotateZ3D(interlinkAngle)));
-      interLink->add(interLinkSeg);
+      GeoTransform* geoTransform = new GeoTransform(HepGeom::RotateZ3D(interlinkAngle));
+      m_geoTransforms.push_back(geoTransform);
+      m_interLink->add(geoTransform);
+      m_interLink->add(m_interLinkSeg);
     }
 
     // B6 bearings
-    const GeoTubs* bearingShape = new GeoTubs(m_innerRadiusBearing, m_outerRadiusBearing, 0.5*m_lengthBearing, - 0.5*m_dPhiBearing*CLHEP::radian, m_dPhiBearing*CLHEP::radian);
-    const GeoLogVol* bearingLog = new GeoLogVol("Bearing", bearingShape, materials.getMaterialForVolume(m_materialNameBearing, bearingShape->volume()));
-    GeoPhysVol* bearing = new GeoPhysVol(bearingLog);
+    m_bearingShape = new GeoTubs(m_innerRadiusBearing, m_outerRadiusBearing, 0.5*m_lengthBearing, - 0.5*m_dPhiBearing*CLHEP::radian, m_dPhiBearing*CLHEP::radian);
+    m_bearingLog = new GeoLogVol("Bearing", m_bearingShape, materials.getMaterialForVolume(m_materialNameBearing, m_bearingShape->volume()));
+    m_bearing = new GeoPhysVol(m_bearingLog);
 
     for(int i=0; i<m_nRepeatBearing; i++) {
       double bearingAngle = m_phiPosBearing + (i * 360./m_nRepeatBearing)*CLHEP::deg;
-      interLink->add(new GeoTransform(HepGeom::RotateZ3D(bearingAngle)));
-      interLink->add(bearing);
+      GeoTransform* geoTransform = new GeoTransform(HepGeom::RotateZ3D(bearingAngle));
+      m_geoTransforms.push_back(geoTransform);
+      m_interLink->add(geoTransform);
+      m_interLink->add(m_bearing);
     }
 
     // FSI Flange segments:
     // These exactly fill gaps between interlink segments, with smaller radial extent
     if(m_includeFSIFlange) {
       double dPhiFSI = (360./m_nRepeat)*CLHEP::deg - m_dPhi; 
-      const GeoTubs* FSIFlangeShape = new GeoTubs(m_innerRadiusFSIFlange, m_outerRadiusFSIFlange, 0.5*m_length, - 0.5*dPhiFSI*CLHEP::radian, dPhiFSI*CLHEP::radian);
-      const GeoLogVol* FSIFlangeLog = new GeoLogVol("FSIFlangeSegment", FSIFlangeShape, materials.getMaterialForVolume(m_materialNameFSIFlange, FSIFlangeShape->volume()));
-      GeoPhysVol* FSIFlange = new GeoPhysVol(FSIFlangeLog);
+      m_FSIFlangeShape = new GeoTubs(m_innerRadiusFSIFlange, m_outerRadiusFSIFlange, 0.5*m_length, - 0.5*dPhiFSI*CLHEP::radian, dPhiFSI*CLHEP::radian);
+      m_FSIFlangeLog = new GeoLogVol("FSIFlangeSegment", m_FSIFlangeShape, materials.getMaterialForVolume(m_materialNameFSIFlange, m_FSIFlangeShape->volume()));
+      m_FSIFlange = new GeoPhysVol(m_FSIFlangeLog);
 
       for(int i=0; i<m_nRepeat; i++) {
 	double phiPosFSI = m_phiPos + (180./m_nRepeat)*CLHEP::deg;
 	double FSIFlangeAngle = phiPosFSI + (i * 360./m_nRepeat)*CLHEP::deg;
-	interLink->add(new GeoTransform(HepGeom::RotateZ3D(FSIFlangeAngle)));
-	interLink->add(FSIFlange);
+        GeoTransform* geoTransform = new GeoTransform(HepGeom::RotateZ3D(FSIFlangeAngle));
+        m_geoTransforms.push_back(geoTransform);
+	m_interLink->add(geoTransform);
+	m_interLink->add(m_FSIFlange);
       }
     }
   }
 
-  return interLink;
+  return m_interLink;
 }