diff --git a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
index a262b30104b1af6267325a2c1d420b42319f34db..46cae9185618b9005c62e751cb6b3a4ce7243079 100644
--- a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
+++ b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
@@ -151,3 +151,30 @@ def makeNameGetPreAndSuffix( name, kwargs) :
     nameSuffix=kwargs.pop('nameSuffix','')
     return namePrefix + name + nameSuffix,namePrefix,nameSuffix
 
+
+
+### Common InDet/ITk config interfaces
+
+def PrdAssociationToolCfg(flags, name='InDetPrdAssociationTool',**kwargs):
+  if flags.Detector.GeometryID:
+    return InDetPrdAssociationToolCfg(name,**kwargs)
+  elif flags.Detector.GeometryITk:
+    name = name.replace("InDet", "ITk")
+    from InDetConfig.ITkRecToolConfig import ITkPrdAssociationToolCfg
+    return ITkPrdAssociationToolCfg(flags, name,**kwargs)
+
+def TrackHoleSearchToolCfg(flags, name = 'InDetHoleSearchTool', **kwargs):
+  if flags.Detector.GeometryID:
+    return InDetTrackHoleSearchToolCfg(flags, name, **kwargs)
+  elif flags.Detector.GeometryITk:
+    name = name.replace("InDet", "ITk")
+    from InDetConfig.ITkRecToolConfig import ITkTrackHoleSearchToolCfg
+    return ITkTrackHoleSearchToolCfg(flags, name, **kwargs)
+
+def TrackSummaryHelperToolCfg(flags, name='InDetSummaryHelper', **kwargs):
+  if flags.Detector.GeometryID:
+    return InDetTrackSummaryHelperToolCfg(flags, name, **kwargs)
+  elif flags.Detector.GeometryITk:
+    name = name.replace("InDet", "ITk")
+    from InDetConfig.ITkRecToolConfig import ITkTrackSummaryHelperToolCfg
+    return ITkTrackSummaryHelperToolCfg(flags, name, **kwargs)
diff --git a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
index d750ce310b27004bed4302f75c4244245905eee0..6df71978972c8e495ece49066862474e718ce9d2 100644
--- a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
@@ -39,7 +39,7 @@ def DeterministicAnnealingFilterCfg(flags, name = 'InDetDAF', **kwargs):
     InDetExtrapolator = acc.getPrimaryAndMerge(InDetExtrapolatorCfg(flags))
 
     from InDetConfig.TrackingCommonConfig import InDetUpdatorCfg
-    InDetUpdator = acc.getPrimaryAndMerge(InDetUpdatorCfg(flags))
+    InDetUpdator = acc.popToolsAndMerge(InDetUpdatorCfg(flags))
 
     kwargs.setdefault("ToolForExtrapolation", InDetExtrapolator)
     kwargs.setdefault("ToolForCompetingROTsCreation", InDetCompetingRotCreator)
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index 579c38eae30f19cd006523326b53a2aff488153c..c29429784f3ec3e12afa56d62e156715fc12c013 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -196,7 +196,7 @@ def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", OutputTrackParticl
     result.addEventAlgo(CompFactory.xAODMaker.TrackParticleCnvAlg(name, **kwargs))
     return result
 
-def TrackRecoCfg(flags):
+def InDetTrackRecoCfg(flags):
     """Configures complete ID tracking """
     result = ComponentAccumulator()
 
@@ -263,6 +263,16 @@ def TrackRecoCfg(flags):
     result.merge(addToAOD(flags, toAOD))
     return result
 
+### Common InDet/ITk config interfaces
+
+def TrackRecoCfg(flags):
+    if flags.Detector.GeometryID:
+        return InDetTrackRecoCfg(flags)
+    elif flags.Detector.GeometryITk:
+        from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
+        return ITkTrackRecoCfg(flags)
+
+
 if __name__ == "__main__":
     from AthenaCommon.Configurable import Configurable
     Configurable.configurableRun3Behavior=1
diff --git a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
index 87c304b376e12477965772ffc53a4914087454bb..60b2b4683c243f19fe901e53fc10ee52793c71b7 100644
--- a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
@@ -820,7 +820,7 @@ def InDetGlobalChi2FitterBaseCfg(flags, name='GlobalChi2FitterBase', **kwargs):
     InDetExtrapolator = acc.getPrimaryAndMerge(InDetExtrapolatorCfg(flags))
     InDetNavigator = acc.getPrimaryAndMerge(AtlasNavigatorCfg(flags))
     InDetPropagator = acc.getPrimaryAndMerge(InDetPropagatorCfg(flags))
-    InDetUpdator = acc.getPrimaryAndMerge(InDetUpdatorCfg(flags))
+    InDetUpdator = acc.popToolsAndMerge(InDetUpdatorCfg(flags))
 
     InDetMultipleScatteringUpdator = acc.popToolsAndMerge(
         InDetMultipleScatteringUpdatorCfg())
@@ -1399,3 +1399,30 @@ def InDetNNScoringToolSiCfg(flags, name='InDetNNScoringToolSi', **kwargs) :
 def InDetCosmicsScoringToolCfg(flags, name='InDetCosmicsScoringTool', **kwargs) :
     return InDetCosmicsScoringToolBaseCfg(flags,
                                           name=name+flags.InDet.Tracking.extension)
+
+
+### Common InDet/ITk config interfaces
+
+def TrackSummaryToolCfg(flags, name='InDetTrackSummaryTool', **kwargs):
+    if flags.Detector.GeometryID:
+        return InDetTrackSummaryToolCfg(flags, name, **kwargs)
+    elif flags.Detector.GeometryITk:
+        name = name.replace("InDet", "ITk")
+        from InDetConfig.ITkTrackingCommonConfig import ITkTrackSummaryToolCfg
+        return ITkTrackSummaryToolCfg(flags, name, **kwargs)
+
+def UpdatorCfg(flags, name = 'InDetUpdator', **kwargs):
+    if flags.Detector.GeometryID:
+        return InDetUpdatorCfg(flags, name, **kwargs)
+    elif flags.Detector.GeometryITk:
+        name = name.replace("InDet", "ITk")
+        from InDetConfig.ITkRecToolConfig import ITkUpdatorCfg
+        return ITkUpdatorCfg(flags, name, **kwargs)
+
+def RotCreatorCfg(flags, name='InDetRotCreator', **kwargs):
+    if flags.Detector.GeometryID:
+        return InDetRotCreatorCfg(flags, name, **kwargs)
+    elif flags.Detector.GeometryITk:
+        name = name.replace("InDet", "ITk")
+        from InDetConfig.ITkTrackingCommonConfig import ITkRotCreatorCfg
+        return ITkRotCreatorCfg(flags, name, **kwargs)
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py
index 98efaaf9956675d57fdd58e4ed4fa788ec52bb7f..9019ff62ea9b1702acf8af96258de73a10585069 100644
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoringRun3Test/python/InDetGlobalMonitoringRun3TestConfig.py
@@ -48,12 +48,12 @@ def InDetGlobalMonitoringRun3TestConfig(flags):
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.CutLevel         = "TightPrimary"
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.minPt            = 5000
         
-        from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolCfg
-        InDetTrackSummaryTool = acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags))
-        inDetGlobalTrackMonAlg.TrackSummaryTool = InDetTrackSummaryTool
-        inDetGlobalTrackMonAlg.TrackSelectionTool.TrackSummaryTool = InDetTrackSummaryTool
+        from InDetConfig.TrackingCommonConfig import TrackSummaryToolCfg
+        TrackSummaryTool = acc.getPrimaryAndMerge(TrackSummaryToolCfg(flags))
+        inDetGlobalTrackMonAlg.TrackSummaryTool = TrackSummaryTool
+        inDetGlobalTrackMonAlg.TrackSelectionTool.TrackSummaryTool = TrackSummaryTool
         inDetGlobalTrackMonAlg.TrackSelectionTool.Extrapolator     = acc.getPublicTool("InDetExtrapolator")
-        inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.TrackSummaryTool = InDetTrackSummaryTool
+        inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.TrackSummaryTool = TrackSummaryTool
         inDetGlobalTrackMonAlg.Tight_TrackSelectionTool.Extrapolator     = acc.getPublicTool("InDetExtrapolator")
         
         InDetGlobalTrackMonAlgCfg(helper, inDetGlobalTrackMonAlg, **kwargsInDetGlobalTrackMonAlg)
diff --git a/InnerDetector/InDetMonitoring/PixelMonitoring/python/PixelMonitoringConfig.py b/InnerDetector/InDetMonitoring/PixelMonitoring/python/PixelMonitoringConfig.py
index 2f5de62a66b641b54d8260c485321f82080413fe..e6c6a4e37f86c0ab18c469e766cabfcc3f5f1a1b 100644
--- a/InnerDetector/InDetMonitoring/PixelMonitoring/python/PixelMonitoringConfig.py
+++ b/InnerDetector/InDetMonitoring/PixelMonitoring/python/PixelMonitoringConfig.py
@@ -52,8 +52,8 @@ def PixelMonitoringConfig(flags):
         pixelAthClusterMonAlg.TrackSelectionTool.maxD0            = 2
         pixelAthClusterMonAlg.TrackSelectionTool.maxZ0            = 150
 
-        from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolCfg
-        pixelAthClusterMonAlg.TrackSelectionTool.TrackSummaryTool = acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags))
+        from InDetConfig.TrackingCommonConfig import TrackSummaryToolCfg
+        pixelAthClusterMonAlg.TrackSelectionTool.TrackSummaryTool = acc.getPrimaryAndMerge(TrackSummaryToolCfg(flags))
         pixelAthClusterMonAlg.TrackSelectionTool.Extrapolator     = acc.getPublicTool("InDetExtrapolator")
         
         
diff --git a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py
index 7dc2155ecbc7b4e70c193b69edd6f9b039fd79f8..acea86ca750bdb23536ebaea717514751132ac0a 100644
--- a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py
+++ b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py
@@ -46,8 +46,8 @@ def SCTLorentzMonAlgConfig(inputFlags):
     # myMonAlg.RandomHist = True
 
     # Set InDetTrackSummaryTool to TrackSummaryTool of SCTLorentzMonAlg
-    from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolCfg
-    myMonAlg.TrackSummaryTool = result.getPrimaryAndMerge(InDetTrackSummaryToolCfg(inputFlags))
+    from InDetConfig.TrackingCommonConfig import TrackSummaryToolCfg
+    myMonAlg.TrackSummaryTool = result.getPrimaryAndMerge(TrackSummaryToolCfg(inputFlags))
 
     ### STEP 4 ###
     # Add some tools. N.B. Do not use your own trigger decion tool. Use the
diff --git a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTTracksMonAlg.py b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTTracksMonAlg.py
index 90132c5a100779bc548272d8d6b0f1f75945443e..b4cc6c8857084fe21005ad7c4989c2cf99664a5e 100644
--- a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTTracksMonAlg.py
+++ b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTTracksMonAlg.py
@@ -51,8 +51,8 @@ def SCTTracksMonAlgConfig(inputFlags):
     myMonAlg.TriggerChain = ''
     # myMonAlg.RandomHist = True
 
-    from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolCfg
-    myMonAlg.TrackSummaryTool = result.getPrimaryAndMerge(InDetTrackSummaryToolCfg(inputFlags))
+    from InDetConfig.TrackingCommonConfig import TrackSummaryToolCfg
+    myMonAlg.TrackSummaryTool = result.getPrimaryAndMerge(TrackSummaryToolCfg(inputFlags))
 
     ### STEP 4 ###
     # Add some tools. N.B. Do not use your own trigger decion tool. Use the
diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py
index 07f9f30bbdf46a5fefabf717275e9dab5fa39148..ece4875d2e93176dd8fd77a8692bec5395459ab6 100644
--- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py
+++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3ESD_Alg.py
@@ -35,8 +35,8 @@ def TRTMonitoringRun3ESD_AlgConfig(inputFlags):
     result.merge(addFoldersSplitOnline(inputFlags, "TRT","/TRT/Onl/Calib/RT","/TRT/Calib/RT",className="TRTCond::RtRelationMultChanContainer"))
     result.merge(addFoldersSplitOnline(inputFlags, "TRT","/TRT/Onl/Calib/T0","/TRT/Calib/T0",className="TRTCond::StrawT0MultChanContainer"))
 
-    from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolCfg
-    algTRTMonitoringRun3ESD.TrackSummaryTool = result.getPrimaryAndMerge(InDetTrackSummaryToolCfg(inputFlags))
+    from InDetConfig.TrackingCommonConfig import TrackSummaryToolCfg
+    algTRTMonitoringRun3ESD.TrackSummaryTool = result.getPrimaryAndMerge(TrackSummaryToolCfg(inputFlags))
 
 #     # To run job only with ID
 #    if hasattr(inputFlags, "Detector") and hasattr(inputFlags.Detector, "GeometryMuon") and hasattr(inputFlags.Detector, "GeometryID"):
diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py
index 25dd54b10d2957346c7f592c31f3cbc5c5cf9abb..aed9481d62658dac69eb1156de0a85f9d8438f84 100644
--- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py
+++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/python/TRTMonitoringRun3RAW_Alg.py
@@ -48,8 +48,8 @@ def TRTMonitoringRun3RAW_AlgConfig(inputFlags):
 
     # @TODO really run the TRT hole search ? Hole search still seems to use a condition service
     if isRun3Cfg():
-        from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolCfg
-        algTRTMonitoringRun3RAW.TrackSummaryTool = rv.getPrimaryAndMerge(InDetTrackSummaryToolCfg(inputFlags))
+        from InDetConfig.TrackingCommonConfig import TrackSummaryToolCfg
+        algTRTMonitoringRun3RAW.TrackSummaryTool = rv.getPrimaryAndMerge(TrackSummaryToolCfg(inputFlags))
         algTRTMonitoringRun3RAW.trt_hole_search= rv.popToolsAndMerge( TRTHoleSearchCfg(inputFlags) )
     else :
         algTRTMonitoringRun3RAW.trt_hole_search=TRTHoleSearch()
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py
index 19ac6cfb2d7ed59a468012eedfaef0b782d9e5de..7d4a20785e5ebd5a5f474333d09d44f82f109f32 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py
@@ -95,13 +95,9 @@ def createExtendNameIfNotDefaultCfg(alg,
     return acc
 
 
-def PhysValMonInDetHoleSearchToolCfg(flags, name="PhysValMonInDetHoleSearchTool", **kwargs):    
-    if flags.Detector.GeometryID:
-        from InDetConfig.InDetRecToolConfig import InDetTrackHoleSearchToolCfg
-        return InDetTrackHoleSearchToolCfg(flags, name=name, **kwargs)
-    elif flags.Detector.GeometryITk:
-        from InDetConfig.ITkRecToolConfig import ITkTrackHoleSearchToolCfg
-        return ITkTrackHoleSearchToolCfg(flags, name=name, **kwargs)
+def PhysValMonInDetHoleSearchToolCfg(flags, name="PhysValMonInDetHoleSearchTool", **kwargs):
+    from InDetConfig.InDetRecToolConfig import TrackHoleSearchToolCfg
+    return TrackHoleSearchToolCfg(flags, name=name, **kwargs)
 
 def InDetPhysHitDecoratorAlgCfg(flags, **kwargs):
     '''
@@ -113,13 +109,8 @@ def InDetPhysHitDecoratorAlgCfg(flags, **kwargs):
 
     kwargs.setdefault( "InDetTrackHoleSearchTool", acc.popToolsAndMerge(PhysValMonInDetHoleSearchToolCfg(flags)) )
 
-    Updator = None
-    if flags.Detector.GeometryID:
-        from InDetConfig.TrackingCommonConfig import InDetUpdatorCfg
-        Updator = acc.getPrimaryAndMerge(InDetUpdatorCfg(flags))
-    elif flags.Detector.GeometryITk:
-        from InDetConfig.ITkRecToolConfig import ITkUpdatorCfg
-        Updator = acc.popToolsAndMerge(ITkUpdatorCfg(flags))
+    from InDetConfig.TrackingCommonConfig import UpdatorCfg
+    Updator = acc.popToolsAndMerge(UpdatorCfg(flags))
     kwargs.setdefault( "Updator", Updator )
 
     acc.merge(createExtendNameIfNotDefaultCfg(CompFactory.InDetPhysHitDecoratorAlg,
diff --git a/Reconstruction/RecJobTransforms/python/RecoSteering.py b/Reconstruction/RecJobTransforms/python/RecoSteering.py
index 2ff4a8fc2d93bd97cb195fe54013e8b2aab0cfa8..17f59b3826a5d09d9e8c9d57e70b5e47cc9e7599 100644
--- a/Reconstruction/RecJobTransforms/python/RecoSteering.py
+++ b/Reconstruction/RecJobTransforms/python/RecoSteering.py
@@ -47,12 +47,8 @@ def RecoSteering(flags, tryConfiguringAll=False):
 
     # ID / ITk
     if flags.Reco.EnableTracking:
-        if flags.Detector.GeometryID:
-            from InDetConfig.TrackRecoConfig import TrackRecoCfg
-            acc.merge(TrackRecoCfg(flags))
-        elif flags.Detector.GeometryITk:
-            from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
-            acc.merge(ITkTrackRecoCfg(flags))
+        from InDetConfig.TrackRecoConfig import TrackRecoCfg
+        acc.merge(TrackRecoCfg(flags))
         log.info("---------- Configured tracking")
 
     # muons
diff --git a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py
index 07b1c0aa13d8455d6410f3dc5f56014710af7cdf..75bd13fa58c96819c1b844beb7a3ff94b4aa2629 100644
--- a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py
+++ b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py
@@ -37,9 +37,9 @@ def GSFTrackSummaryToolCfg(flags,
                     name="GSFBuildTestBLayerTool"))
 
         from InDetConfig.InDetRecToolConfig import (
-            InDetTrackSummaryHelperToolCfg)
+            TrackSummaryHelperToolCfg)
         kwargs["InDetSummaryHelperTool"] = acc.getPrimaryAndMerge(
-            InDetTrackSummaryHelperToolCfg(
+            TrackSummaryHelperToolCfg(
                 flags,
                 name="GSFBuildTrackSummaryHelperTool",
                 HoleSearch=None,
diff --git a/Reconstruction/egamma/egammaTrackTools/python/GSFTrackFitterConfig.py b/Reconstruction/egamma/egammaTrackTools/python/GSFTrackFitterConfig.py
index 03f721bd273b19489f7b0a743afbf8993b490c9b..f6523291a2b77276f0abf9142c3572f8830a89b9 100644
--- a/Reconstruction/egamma/egammaTrackTools/python/GSFTrackFitterConfig.py
+++ b/Reconstruction/egamma/egammaTrackTools/python/GSFTrackFitterConfig.py
@@ -47,14 +47,8 @@ def EMGSFTrackFitterCfg(flags, name='EMGSFTrackFitter', **kwargs):
 
     kwargs["ToolForROTCreation"] = None
     if not kwargs["RefitOnMeasurementBase"]:
-        if flags.Detector.EnableITk:
-            from InDetConfig.ITkTrackingCommonConfig import ITkRotCreatorCfg
-            kwargs["ToolForROTCreation"] = acc.popToolsAndMerge(
-                ITkRotCreatorCfg(flags))
-        else:
-            from InDetConfig.TrackingCommonConfig import InDetRotCreatorCfg
-            kwargs["ToolForROTCreation"] = acc.popToolsAndMerge(
-                InDetRotCreatorCfg(flags))
+        from InDetConfig.TrackingCommonConfig import RotCreatorCfg
+        kwargs["ToolForROTCreation"] = acc.popToolsAndMerge(RotCreatorCfg(flags))
 
     if "ToolForExtrapolation" not in kwargs:
         gsfextrap = EMGSFExtrapolatorToolCfg(flags)
diff --git a/Tracking/TrkConfig/python/AtlasTrackSummaryToolConfig.py b/Tracking/TrkConfig/python/AtlasTrackSummaryToolConfig.py
index 96946646cc01744192f5a89716cb6b09eaf8beaa..477583c2d91b82264d88028eefe6e0b231eb68ab 100644
--- a/Tracking/TrkConfig/python/AtlasTrackSummaryToolConfig.py
+++ b/Tracking/TrkConfig/python/AtlasTrackSummaryToolConfig.py
@@ -9,7 +9,6 @@ from AthenaConfiguration.AccumulatorCache import AccumulatorCache
 def AtlasTrackSummaryToolCfg(flags, name="", **kwargs):
     # Based on AtlasTrackSummaryTool.py
     # FIXME - check all of this once the ID configuration is available, because probably we can simplify this a lot
-    from InDetConfig.InDetRecToolConfig import InDetBoundaryCheckToolCfg, InDetTrackSummaryHelperToolCfg
 
     # Setup Atlas Extrapolator
     result = AtlasExtrapolatorCfg(flags)
@@ -17,45 +16,29 @@ def AtlasTrackSummaryToolCfg(flags, name="", **kwargs):
     result.addPublicTool(extrapolator)
 
     # Setup Association Tool
-    # FIXME - use InDetConfig when it works...
-    # acc = InDetPrdAssociationToolCfg(flags,
-    #                                  name='AtlasPrdAssociationTool',
-    #                                  PixelClusterAmbiguitiesMapName="PixelClusterAmbiguitiesMap")
-    # atlasPrdAssociationTool = acc.getPrimary()
-    atlasPrdAssociationTool = CompFactory.InDet.InDetPRD_AssociationToolGangedPixels(name='AtlasPrdAssociationTool',  
-                                                            PixelClusterAmbiguitiesMapName = "PixelClusterAmbiguitiesMap")
-    # result.merge(acc)
-
-    # Setup Boundary Check Tool
-    acc = InDetBoundaryCheckToolCfg(flags,
-                                    name="AtlasBoundaryCheckTool",
-                                    UsePixel=flags.Detector.EnablePixel,
-                                    UseSCT=flags.Detector.EnableSCT)
-    atlasBoundaryCheckTool = acc.getPrimary()
-    result.merge(acc)
+    from InDetConfig.InDetRecToolConfig import PrdAssociationToolCfg
+    atlasPrdAssociationTool = result.getPrimaryAndMerge(PrdAssociationToolCfg(flags,
+                                                                              name='AtlasPrdAssociationTool'))
+    atlasPrdAssociationTool.addTRToutliers = False
 
     # Loading Configurable HoleSearchTool
-    from InDetConfig.InDetRecToolConfig import InDetTrackHoleSearchToolCfg
-    acc = InDetTrackHoleSearchToolCfg(flags,
-                                      name="AtlasHoleSearchTool",
-                                      Extrapolator=extrapolator,
-                                      BoundaryCheckTool=atlasBoundaryCheckTool)
-    atlasHoleSearchTool = acc.getPrimary()
-    result.merge(acc)
+    from InDetConfig.InDetRecToolConfig import TrackHoleSearchToolCfg
+    atlasHoleSearchTool = result.getPrimaryAndMerge(TrackHoleSearchToolCfg(flags,
+                                                                           name="AtlasHoleSearchTool",
+                                                                           Extrapolator=extrapolator))
 
     # FIXME - need InDet to provide configuration for PixelConditionsSummaryTool
     # Also assuming we don't use DetailedPixelHoleSearch (since it seems to be off in standard workflows)
-    acc = InDetTrackSummaryHelperToolCfg(flags,
-                                         name="AtlasTrackSummaryHelperTool",
-                                         AssoTool=atlasPrdAssociationTool,
-                                         DoSharedHits=False,
-                                         HoleSearch=atlasHoleSearchTool)
-    indet_track_summary_helper_tool = acc.getPrimary()
-    result.merge(acc)
+    from InDetConfig.InDetRecToolConfig import TrackSummaryHelperToolCfg
+    indet_track_summary_helper_tool = result.getPrimaryAndMerge(TrackSummaryHelperToolCfg(flags,
+                                                                                          name="AtlasTrackSummaryHelperTool",
+                                                                                          AssoTool=atlasPrdAssociationTool,
+                                                                                          DoSharedHits=False,
+                                                                                          HoleSearch=atlasHoleSearchTool))
 
     from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryHelperToolCfg
-    acc = MuonTrackSummaryHelperToolCfg(flags)
-    muon_track_summary_helper_tool = acc.getPrimary()
+    muon_track_summary_helper_tool = result.getPrimaryAndMerge(MuonTrackSummaryHelperToolCfg(flags))
+
     track_summary_tool = CompFactory.Trk.TrackSummaryTool(name="CombinedMuonTrackSummary",
                                                           doSharedHits=False,
                                                           doHolesInDet=True,
@@ -67,6 +50,5 @@ def AtlasTrackSummaryToolCfg(flags, name="", **kwargs):
                                                           PixelToTPIDTool=None,
                                                           MuonSummaryHelperTool=muon_track_summary_helper_tool,
                                                           PixelExists=True)
-    result.merge(acc)
     result.setPrivateTools(track_summary_tool)
     return result