diff --git a/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt b/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt
index 27dfefdb3c56c795c22e9db681787764f543bf89..ac713fc23b920f72c6aa5bf529766294cfd60e32 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt
+++ b/Simulation/ISF/ISF_Core/ISF_Services/CMakeLists.txt
@@ -99,5 +99,5 @@ atlas_add_test( ISF_ServicesConfigNew_test
 set_target_properties( ISF_Services_TruthSvc_test PROPERTIES ENABLE_EXPORTS True )
 
 # Install files from the package:
-atlas_install_python_modules( python/*.py )
+atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py
index 7cefb98f4f5377f2a5ea4a475ba7e98d00633b65..9e911a26c77a5319bbd03779c48223e014cc264d 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py
+++ b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesConfigNew.py
@@ -20,7 +20,10 @@ from ISF_HepMC_Tools.ISF_HepMC_ToolsConfigNew import (
     ParticleSimWhiteListCfg,
 )
 from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg
-
+from ISF_Geant4CommonTools.ISF_Geant4CommonToolsConfigNew import (
+    EntryLayerToolCfg, AFIIEntryLayerToolCfg
+)
+from ISF_Tools.ISF_ToolsConfigNew import ParticleOrderingToolCfg
 
 def GenParticleFiltersToolCfg(ConfigFlags):
     result = ComponentAccumulator()
@@ -64,6 +67,39 @@ def LongLivedInputConverterCfg(ConfigFlags, name="ISF_LongLivedInputConverter",
     return InputConverterCfg(name, **kwargs)
 
 
+def ParticleBrokerSvcNoOrderingCfg(ConfigFlags, name="ISF_ParticleBrokerSvcNoOrdering", **kwargs):
+    result = EntryLayerToolCfg(ConfigFlags)
+    kwargs.setdefault("EntryLayerTool", result.popPrivateTools())
+    kwargs.setdefault("GeoIDSvc", result.getService("ISF_GeoIDSvc"))
+    kwargs.setdefault("AlwaysUseGeoIDSvc", False)
+    kwargs.setdefault("ValidateGeoIDs", ConfigFlags.ISF.ValidationMode)
+    kwargs.setdefault("ValidationOutput", ConfigFlags.ISF.ValidationMode)
+    kwargs.setdefault("ValidationStreamName", "ParticleBroker")
+    
+    baracc = BarcodeSvcCfg(ConfigFlags)
+    kwargs.setdefault("BarcodeService", baracc.getPrimary())
+    result.merge(baracc)
+    
+    result.addService(CompFactory.ISF.ParticleBrokerDynamicOnReadIn(name, **kwargs))
+    return result
+
+
+def ParticleBrokerSvcCfg(ConfigFlags, name="ISF_ParticleBrokerSvc", **kwargs):
+    # comment copied from old config
+    #kwargs.setdefault("ParticleOrderingTool", "ISF_InToOutSubDetOrderingTool")
+    result = ParticleOrderingToolCfg(ConfigFlags)
+    kwargs.setdefault("ParticleOrderingTool", result.popPrivateTools())
+    result.merge(ParticleBrokerSvcNoOrderingCfg(name, **kwargs))
+    return result
+
+
+def AFIIParticleBrokerSvcCfg(ConfigFlags, name="ISF_AFIIParticleBrokerSvc", **kwargs):
+    result = AFIIEntryLayerToolCfg(ConfigFlags)
+    kwargs.setdefault("EntryLayerTool", result.popPrivateTools())
+    result.merge(ParticleBrokerSvcCfg(name, **kwargs))
+    return result
+
+
 # Generic Truth Service Configurations
 def TruthServiceCfg(ConfigFlags, **kwargs):
     """Return the TruthService config flagged by Sim.TruthStrategy"""
diff --git a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py
index 6dc3ea47bffa649c08e995f912b6d97c923540d9..fac9ab538c0dcd07fc8a615441f48b6f02dd53a1 100644
--- a/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py
+++ b/Simulation/ISF/ISF_Core/ISF_Services/python/ISF_ServicesCoreConfigNew.py
@@ -8,34 +8,9 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaCommon.SystemOfUnits import mm
 from SubDetectorEnvelopes.SubDetectorEnvelopesConfigNew import EnvelopeDefSvcCfg
-from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg
 from ISF_Tools.ISF_ToolsConfigNew import ParticleKillerToolCfg
 
 
-def ParticleBrokerSvcNoOrderingCfg(ConfigFlags, name="ISF_ParticleBrokerSvcNoOrdering", **kwargs):
-    kwargs.setdefault("EntryLayerTool", "ISF_EntryLayerTool") # TODO
-    kwargs.setdefault("GeoIDSvc", "ISF_GeoIDSvc") # TODO
-    kwargs.setdefault("AlwaysUseGeoIDSvc", False)
-    kwargs.setdefault("ValidateGeoIDs", ConfigFlags.ISF.ValidationMode)
-    kwargs.setdefault("ValidationOutput", ConfigFlags.ISF.ValidationMode)
-    kwargs.setdefault("ValidationStreamName", "ParticleBroker")
-    result = BarcodeSvcCfg(ConfigFlags)
-    kwargs.setdefault("BarcodeService", result.getPrimary())
-    result.addService(CompFactory.ISF.ParticleBrokerDynamicOnReadIn(name, **kwargs))
-    return result
-
-
-def ParticleBrokerSvcCfg(ConfigFlags, name="ISF_ParticleBrokerSvc", **kwargs):
-    #kwargs.setdefault("ParticleOrderingTool", "ISF_InToOutSubDetOrderingTool")
-    kwargs.setdefault("ParticleOrderingTool", "ISF_ParticleOrderingTool") # TODO
-    return ParticleBrokerSvcNoOrderingCfg(name, **kwargs)
-
-
-def AFIIParticleBrokerSvcCfg(ConfigFlags, name="ISF_AFIIParticleBrokerSvc", **kwargs):
-    kwargs.setdefault("EntryLayerTool", "ISF_AFIIEntryLayerTool") # TODO
-    return ParticleBrokerSvcCfg(name, **kwargs)
-
-
 def ISFEnvelopeDefSvcCfg(ConfigFlags, name="ISF_ISFEnvelopeDefSvc", **kwargs):
     result = EnvelopeDefSvcCfg(ConfigFlags)
     # ATLAS common envlope definitions
@@ -72,7 +47,8 @@ def AFIIGeoIDSvcCfg(ConfigFlags, name="ISF_AFIIGeoIDSvc", **kwargs):
 def ParticleKillerSvcCfg(ConfigFlags, name="ISF_ParticleKillerSvc", **kwargs):
     result = ComponentAccumulator()
     kwargs.setdefault("Identifier", "ParticleKiller")
-    kwargs.setdefault("SimulatorTool", ParticleKillerToolCfg(ConfigFlags))
+    tool = result.popToolsAndMerge(ParticleKillerToolCfg(ConfigFlags))
+    kwargs.setdefault("SimulatorTool", tool)
     svc = CompFactory.ISF.LegacySimSvc(name, **kwargs)
     result.addService(svc)
     return result
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt b/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt
index 5b8165fe255b83647da958ca5b88fb0b576c350a..5546a231ded81f6c655a7575be426ddbb5350022 100644
--- a/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/CMakeLists.txt
@@ -12,5 +12,5 @@ atlas_add_component( ISF_Tools
                      LINK_LIBRARIES GaudiKernel AthenaBaseComps AtlasDetDescr BarcodeInterfacesLib GeneratorObjects ISF_Event ISF_InterfacesLib TrackRecordLib )
 
 # Install files from the package:
-atlas_install_python_modules( python/*.py )
+atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 
diff --git a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py
index 2b8c4355e8c3e77acade30587783e9621fb01e51..b985690499a3fa81502c990370cb3ef0d3709ee2 100644
--- a/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py
+++ b/Simulation/ISF/ISF_Core/ISF_Tools/python/ISF_ToolsConfigNew.py
@@ -2,6 +2,7 @@
 
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaCommon.SystemOfUnits import MeV
 from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg
@@ -15,7 +16,9 @@ def ParticleHelperCfg(flags, name="ISF_ParticleHelper", **kwargs):
 
 
 def MemoryMonitorToolCfg(flags, name="ISF_MemoryMonitor", **kwargs):
-    return CompFactory.ISF.MemoryMonitoringTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.MemoryMonitoringTool(name, **kwargs))
+    return acc
 
 
 def EntryLayerFilterCfg(ConfigFlags, **kwargs):
@@ -112,12 +115,16 @@ def CosmicEventFilterToolCfg(flags, name="ISF_CosmicEventFilter", **kwargs):
     kwargs.setdefault("PDG_ID", flags.Sim.CosmicFilterID)
     kwargs.setdefault("ptMin", flags.Sim.CosmicFilterPTmin)
     kwargs.setdefault("ptMax", flags.Sim.CosmicFilterPTmax)
-    return CompFactory.ISF.CosmicEventFilterTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.CosmicEventFilterTool(name, **kwargs))
+    return acc
 
 
 def StoppedParticleFilterToolCfg(flags, name="ISF_StoppedParticleFilter", **kwargs):
     kwargs.setdefault("VolumeNames", ["StoppingPositions"])
-    return CompFactory.ISF.CosmicEventFilterTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.CosmicEventFilterTool(name, **kwargs))
+    return acc
 
 
 def InToOutSubDetOrderingToolCfg(flags, name="ISF_InToOutSubDetOrderingTool", **kwargs):
@@ -127,7 +134,9 @@ def InToOutSubDetOrderingToolCfg(flags, name="ISF_InToOutSubDetOrderingTool", **
     kwargs.setdefault("OrderCalo"    , 10000    )
     kwargs.setdefault("OrderMS"      , 100      )
     kwargs.setdefault("OrderCavern"  , 1        )
-    return CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs))
+    return acc
 
 
 def ParticleOrderingToolCfg(flags, name="ISF_ParticleOrderingTool", **kwargs):
@@ -136,12 +145,18 @@ def ParticleOrderingToolCfg(flags, name="ISF_ParticleOrderingTool", **kwargs):
     kwargs.setdefault("OrderCalo"    , 1)
     kwargs.setdefault("OrderMS"      , 1)
     kwargs.setdefault("OrderCavern"  , 1)
-    return CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.GenericParticleOrderingTool(name, **kwargs))
+    return acc
 
 
 def EnergyParticleOrderingToolCfg(flags, name="ISF_EnergyParticleOrderingTool", **kwargs):
-    return CompFactory.ISF.EnergyParticleOrderingTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.EnergyParticleOrderingTool(name, **kwargs))
+    return acc
 
 
 def ParticleKillerToolCfg(flags, name="ISF_ParticleKillerTool", **kwargs):
-    return CompFactory.ISF.ParticleKillerSimTool(name, **kwargs)
+    acc = ComponentAccumulator()
+    acc.setPrivateTools(CompFactory.ISF.ParticleKillerSimTool(name, **kwargs))
+    return acc
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py
index ab18670d240b9f8e30d575390315f5eeb98d4dac..ef13934d41ae61f507f44d63d82494b6f9ce18d5 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/python/ISF_Geant4CommonToolsConfigNew.py
@@ -2,16 +2,19 @@
 
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
-from ISF_Services.ISF_ServicesConfigNew import GeoIDSvcCfg, AFIIGeoIDSvcCfg
+from ISF_Services.ISF_ServicesCoreConfigNew import GeoIDSvcCfg, AFIIGeoIDSvcCfg
 from ISF_Tools.ISF_ToolsConfigNew import EntryLayerFilterCfg
 
 
 def EntryLayerToolCfg(flags, name="ISF_EntryLayerTool", **kwargs):
-    acc = GeoIDSvcCfg(flags)
-    kwargs.setdefault("GeoIDSvc", acc.getService("ISF_GeoIDSvc"))
-    acc_filter = EntryLayerFilterCfg(flags)
-    kwargs.setdefault("ParticleFilters", [acc.popToolsAndMerge(acc_filter)])
+    acc = ComponentAccumulator()
+    if "GeoIDSvc" not in kwargs:
+        acc.merge(GeoIDSvcCfg(flags))
+        kwargs["GeoIDSvc"] = acc.getService("ISF_GeoIDSvc")
+    filt = acc.popToolsAndMerge(EntryLayerFilterCfg(flags))
+    kwargs.setdefault("ParticleFilters", [filt])
     if flags.Sim.DoFullChain: # TODO and DetFlags.pileup.any_on():
         kwargs.setdefault("EvtStore", "OriginalEvent_SG") # For Fast Chain
     acc.setPrivateTools(CompFactory.ISF.EntryLayerTool(name, **kwargs))
@@ -19,10 +22,12 @@ def EntryLayerToolCfg(flags, name="ISF_EntryLayerTool", **kwargs):
 
 
 def EntryLayerToolMTCfg(flags, name="ISF_EntryLayerToolMT", **kwargs):
-    acc = GeoIDSvcCfg(flags)
-    kwargs.setdefault("GeoIDSvc", acc.getService("ISF_GeoIDSvc"))
-    acc_filter = EntryLayerFilterCfg(flags)
-    kwargs.setdefault("ParticleFilters", [acc.popToolsAndMerge(acc_filter)])
+    acc = ComponentAccumulator()
+    if "GeoIDSvc" not in kwargs:
+        acc.merge(GeoIDSvcCfg(flags))
+        kwargs["GeoIDSvc"] = acc.getService("ISF_GeoIDSvc")
+    filt = acc.popToolsAndMerge(EntryLayerFilterCfg(flags))
+    kwargs.setdefault("ParticleFilters", [filt])
     if flags.Sim.DoFullChain: # TODO and DetFlags.pileup.any_on():
         kwargs.setdefault("EvtStore", "OriginalEvent_SG") # For Fast Chain
     acc.setPrivateTools(CompFactory.ISF.EntryLayerToolMT(name, **kwargs))
@@ -30,14 +35,20 @@ def EntryLayerToolMTCfg(flags, name="ISF_EntryLayerToolMT", **kwargs):
 
 
 def AFIIEntryLayerToolCfg(flags, name="ISF_AFIIEntryLayerTool", **kwargs):
-    acc = AFIIGeoIDSvcCfg(flags)
-    kwargs.setdefault("GeoIDSvc", acc.getService("ISF_AFIIGeoIDSvc"))
-    acc.merge(EntryLayerToolCfg(name, **kwargs))
+    acc = ComponentAccumulator()
+    if "GeoIDSvc" not in kwargs:
+        acc.merge(AFIIGeoIDSvcCfg(flags))
+        kwargs["GeoIDSvc"] = acc.getService("ISF_AFIIGeoIDSvc")
+    tool = acc.popToolsAndMerge(EntryLayerToolCfg(name, **kwargs))
+    acc.setPrivateTools(tool)
     return acc
 
 
 def AFIIEntryLayerToolMTCfg(flags, name="ISF_AFIIEntryLayerToolMT", **kwargs):
-    acc = AFIIGeoIDSvcCfg(flags)
-    kwargs.setdefault("GeoIDSvc", acc.getService("ISF_AFIIGeoIDSvc"))
-    acc.merge(EntryLayerToolMTCfg(name, **kwargs))
+    acc = ComponentAccumulator()
+    if "GeoIDSvc" not in kwargs:
+        acc.merge(AFIIGeoIDSvcCfg(flags))
+        kwargs["GeoIDSvc"] = acc.getService("ISF_AFIIGeoIDSvc")
+    tool = acc.popToolsAndMerge(EntryLayerToolMTCfg(name, **kwargs))
+    acc.setPrivateTools(tool)
     return acc
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt
index 4b519f49a9dbadc13a4211f860fa457c11fd191d..a055119d2cfa1b54512e09ff1f1ed1813966eb37 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/CMakeLists.txt
@@ -26,5 +26,5 @@ atlas_add_component( ISF_Geant4Tools
                      LINK_LIBRARIES ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib ${GEANT4_LIBRARIES} ${EIGEN_LIBRARIES} AthenaKernel GaudiKernel G4AtlasInterfaces AthenaBaseComps StoreGateLib SGtests AtlasDetDescr GeneratorObjects G4AtlasToolsLib G4AtlasAlgLib MCTruth SimHelpers ISF_Event ISF_InterfacesLib ISF_Geant4Event ISF_Geant4ToolsLib )
 
 # Install files from the package:
-atlas_install_python_modules( python/*.py )
+atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 
diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py
index f132d21e71f0eeb5c5e03c89ea0d7ab1f26599e6..6d92ec8ecf05f99837e0cf59cdb98b9fee9fe8d8 100644
--- a/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py
+++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4Tools/python/ISF_Geant4ToolsConfigNew.py
@@ -5,8 +5,9 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaCommon.SystemOfUnits import MeV
+from ISF_Services.ISF_ServicesCoreConfigNew import GeoIDSvcCfg, AFIIGeoIDSvcCfg
 from ISF_Services.ISF_ServicesConfigNew import (
-    TruthServiceCfg, GeoIDSvcCfg, AFIIGeoIDSvcCfg,
+    TruthServiceCfg,
     ParticleBrokerSvcCfg, InputConverterCfg,
     LongLivedInputConverterCfg
 )