diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py
index 7fb807262c721291345813d33c039b9e933c3b1d..b4b249322cf7b4d2c084837e44627317990a2a48 100755
--- a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py
+++ b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py
@@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
 from RngComps.RandomServices import RNG, AthEngines
 from PileUpComps.PileUpCompsConf import PileUpXingFolder
+from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg
 from BCM_Digitization.BCM_DigitizationConf import BCM_DigitizationTool, BCM_Digitization
 
 # The earliest and last bunch crossing times for which interactions will be sent
@@ -56,8 +57,9 @@ def BCM_DigitizationToolCfg(flags, name="BCM_DigitizationTool", **kwargs):
 
 def BCM_DigitizationCfg(flags, name="BCM_OverlayDigitization", **kwargs):
     """Return a ComponentAccumulator with configured BCM_Digitization algorithm"""
-    acc = BCM_DigitizationToolCfg(flags, **kwargs)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = PixelGeometryCfg(flags)
+    tool = acc.popToolsAndMerge(BCM_DigitizationToolCfg(flags, **kwargs))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(BCM_Digitization(name, **kwargs))
     return acc
 
@@ -68,8 +70,9 @@ def BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **
 
 def BCM_OverlayDigitizationCfg(flags, name="BCM_OverlayDigitization", **kwargs):
     """Return a ComponentAccumulator with BCM_Digitization algorithm configured for Overlay"""
-    acc = BCM_OverlayDigitizationToolCfg(flags, **kwargs)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = PixelGeometryCfg(flags)
+    tool = acc.popToolsAndMerge(BCM_OverlayDigitizationToolCfg(flags, **kwargs))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(BCM_Digitization(name, **kwargs))
     return acc
 
diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py
index a75e3bd1098a9b46389f2a4d7a98893d8419fa0b..a2b4330e42c22a465bea92b809351f6e1dc58200 100755
--- a/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py
+++ b/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py
@@ -3,6 +3,7 @@
 
 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
+import sys
 import os
 from AthenaCommon.Logging import log
 from AthenaCommon.Constants import DEBUG
@@ -14,11 +15,7 @@ from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags
 from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags
-from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg
-from BCM_Digitization.BCM_DigitizationConfigNew import (
-    BCM_RangeCfg, BCM_DigitizationToolCfg, BCM_DigitizationCfg,
-    BCM_OverlayDigitizationToolCfg, BCM_OverlayDigitizationCfg,
-)
+from BCM_Digitization.BCM_DigitizationConfigNew import BCM_DigitizationCfg
 
 # Set up logging and new style config
 log.setLevel(DEBUG)
@@ -30,31 +27,23 @@ ConfigFlags.Input.Files = defaultTestFiles.HITS
 ConfigFlags.Output.RDOFileName = "myRDO.pool.root"
 ConfigFlags.GeoModel.Align.Dynamic = False
 ConfigFlags.lock()
-# Function tests
-tool = BCM_RangeCfg(ConfigFlags)
-tacc = BCM_DigitizationToolCfg(ConfigFlags)
-overlayacc = BCM_OverlayDigitizationToolCfg(ConfigFlags)
-overlayacc.popPrivateTools()
-tacc.merge(overlayacc)
-digiacc = BCM_DigitizationToolCfg(ConfigFlags)
-digiacc.popPrivateTools()
-tacc.merge(digiacc)
-tacc.merge(BCM_OverlayDigitizationCfg(ConfigFlags))
-# reset to prevent errors on deletion
-tacc.__init__()
 # Construct our accumulator to run
 acc = MainServicesSerialCfg()
 acc.merge(PoolReadCfg(ConfigFlags))
-acc.merge(PixelGeometryCfg(ConfigFlags))
+acc.merge(BCM_DigitizationCfg(ConfigFlags))
 # Add configuration to write HITS pool file
-outConfig = OutputStreamCfg(ConfigFlags, "RDO",
-    ItemList=["InDetSimDataCollection#*", "BCM_RDO_Container#*"])
-acc.merge(outConfig)
+ItemList = [
+    "InDetSimDataCollection#*",
+    "BCM_RDO_Container#*",
+]
+acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList))
 # Dump config
 acc.getService("StoreGateSvc").Dump=True
 acc.getService("ConditionStore").Dump = True
 acc.printConfig(withDetails=True)
 ConfigFlags.dump()
 # Execute and finish
-acc.run(maxEvents=3)
+sc = acc.run(maxEvents=3)
+# Success should be 0
+sys.exit(not sc.isSuccess())
 
diff --git a/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py
index 3347550638b1d13ef2da1600725304a4238f4c94..2cbb69bc4f335fe5dfa47a598e072543af774e53 100644
--- a/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py
+++ b/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py
@@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from StoreGate.StoreGateConf import StoreGateSvc
+from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 from CSC_Digitization.CSC_DigitizationConf import (
     CscDigitizationTool, CscDigitBuilder,
 )
@@ -50,8 +51,9 @@ def CSC_DigitizationToolCfg(flags, name="CSC_DigitizationTool", **kwargs):
 
 def CSC_DigitBuilderCfg(flags, name="CSC_DigitBuilder", **kwargs):
     """Return a ComponentAccumulator with configured CscDigitBuilder algorithm"""
-    acc = CSC_DigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(CSC_DigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(CscDigitBuilder(name, **kwargs))
     return acc
     
@@ -68,8 +70,9 @@ def CSC_OverlayDigitizationToolCfg(flags, name="CSC_OverlayDigitizationTool",**k
 
 def CSC_OverlayDigitBuilderCfg(flags, name="CSC_OverlayDigitBuilder", **kwargs):
     """Return a ComponentAccumulator with CscDigitBuilder algorithm configured for Overlay"""
-    acc = CSC_OverlayDigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(CSC_OverlayDigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(CscDigitBuilder(name, **kwargs))
     return acc
 
diff --git a/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py
index 72e135665e6c54f2660c3093e55ca1b18a04ad1f..5d42452739ee797f234c14534c5946223e45813e 100755
--- a/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py
+++ b/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py
@@ -3,6 +3,7 @@
 
 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
+import sys
 from AthenaCommon.Logging import log
 from AthenaCommon.Constants import DEBUG
 from AthenaCommon.Configurable import Configurable
@@ -13,15 +14,10 @@ from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags
 from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
-# muon imports
-from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 # CSC imports
 from MuonConfig.MuonCalibConfig import CscCoolStrSvcCfg
 from MuonCondSvc.MuonCondSvcConf import CSCCondSummarySvc
-from CSC_Digitization.CSC_DigitizationConfigNew import (
-    CSC_RangeToolCfg, CSC_DigitizationToolCfg, CSC_DigitBuilderCfg,
-    CSC_OverlayDigitizationToolCfg, CSC_OverlayDigitBuilderCfg,
-)
+from CSC_Digitization.CSC_DigitizationConfigNew import CSC_DigitBuilderCfg
 
 # Set up logging and new style config
 log.setLevel(DEBUG)
@@ -34,19 +30,9 @@ ConfigFlags.join(createDigitizationCfgFlags())
 ConfigFlags.join(createOverlayCfgFlags())
 ConfigFlags.lock()
 # Function tests
-# using __init__ to prevent errors
-tool = CSC_RangeToolCfg(ConfigFlags)
-tacc = CSC_DigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = CSC_OverlayDigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = CSC_DigitBuilderCfg(ConfigFlags)
-tacc.merge(CSC_OverlayDigitBuilderCfg(ConfigFlags))
-tacc.__init__()
 # Construct our accumulator to run
 acc = MainServicesSerialCfg()
 acc.merge(PoolReadCfg(ConfigFlags))
-acc.merge(MuonGeoModelCfg(ConfigFlags))
 acc.merge(CSC_DigitBuilderCfg(ConfigFlags))
 # Add configuration to write HITS pool file
 ItemList = [
@@ -61,5 +47,7 @@ acc.getService("ConditionStore").Dump = True
 acc.printConfig(withDetails=True)
 ConfigFlags.dump()
 # Execute and finish
-acc.run(maxEvents=3)
+sc = acc.run(maxEvents=3)
+# Success should be 0
+sys.exit(not sc.isSuccess())
 
diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py
index b67aa1be8e695a97e880859be993176f3063da63..e3c0488e4bfca29a14c52f19513c19ddcc0bc3b5 100644
--- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py
+++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py
@@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from StoreGate.StoreGateConf import StoreGateSvc
+from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 from MDT_Digitization.MDT_DigitizationConf import (
     MdtDigitizationTool, MDT_Response_DigiTool, RT_Relation_DB_DigiTool, MDT_Digitizer
 )
@@ -55,14 +56,15 @@ def MDT_DigitizationToolCfg(flags, name="MDT_DigitizationTool", **kwargs):
         kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "MDT_SDO")
     else:
         kwargs.setdefault("OutputSDOName", "MDT_SDO")
-    acc.setPrivateTools(MdtDigitizationTool(name,**kwargs))
+    acc.setPrivateTools(MdtDigitizationTool(name, **kwargs))
     return acc
 
 def MDT_DigitizerCfg(flags, name="MDT_Digitizer", **kwargs):
     """Return a ComponentAccumulator with configured MDT_Digitizer algorithm"""
-    acc = MDT_DigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
-    acc.addEventAlgo(MDT_Digitizer(name,**kwargs))
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(MDT_DigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
+    acc.addEventAlgo(MDT_Digitizer(name, **kwargs))
     return acc
 
 def MDT_OverlayDigitizationToolCfg(flags, name="MDT_OverlayDigitizationTool",**kwargs):
@@ -73,13 +75,14 @@ def MDT_OverlayDigitizationToolCfg(flags, name="MDT_OverlayDigitizationTool",**k
     kwargs.setdefault("GetT0FromBD", flags.Detector.Overlay)
     if not flags.Detector.Overlay:
         kwargs.setdefault("OutputSDOName", flags.Overlay.Legacy.EventStore + "+MDT_SDO")
-    acc.setPrivateTools(MdtDigitizationTool(name,**kwargs))
+    acc.setPrivateTools(MdtDigitizationTool(name, **kwargs))
     return acc
 
 def MDT_OverlayDigitizerCfg(flags, name="MDT_OverlayDigitizer", **kwargs):
     """Return a ComponentAccumulator with MDT_Digitizer algorithm configured for Overlay"""
-    acc = MDT_OverlayDigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
-    acc.addEventAlgo(MDT_Digitizer(name,**kwargs))
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(MDT_OverlayDigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
+    acc.addEventAlgo(MDT_Digitizer(name, **kwargs))
     return acc
 
diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py
index d5c244d033030c334b4bbc79312414a887881213..4619c070e44032af34b9ce4c844e40d6c1118163 100755
--- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py
+++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py
@@ -3,6 +3,7 @@
 
 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
+import sys
 from AthenaCommon.Logging import log
 from AthenaCommon.Constants import DEBUG
 from AthenaCommon.Configurable import Configurable
@@ -13,14 +14,8 @@ from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags
 from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags
-# muon imports
-from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 # MDT imports
-from MDT_Digitization.MDT_DigitizationConfigNew import (
-    MDT_RangeToolCfg, MDT_DigitizationToolCfg, MDT_DigitizerCfg,
-    MDT_OverlayDigitizationToolCfg, MDT_OverlayDigitizerCfg,
-    RT_Relation_DB_DigiToolCfg,
-)
+from MDT_Digitization.MDT_DigitizationConfigNew import MDT_DigitizerCfg
 # Set up logging and new style config
 log.setLevel(DEBUG)
 Configurable.configurableRun3Behavior = True
@@ -31,21 +26,9 @@ ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16"
 ConfigFlags.join(createDigitizationCfgFlags())
 ConfigFlags.join(createOverlayCfgFlags())
 ConfigFlags.lock()
-# Function tests
-# using __init__ to prevent errors
-tool = MDT_RangeToolCfg(ConfigFlags)
-tool = RT_Relation_DB_DigiToolCfg(ConfigFlags)
-tacc = MDT_DigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = MDT_OverlayDigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = MDT_DigitizerCfg(ConfigFlags)
-tacc.merge(MDT_OverlayDigitizerCfg(ConfigFlags))
-tacc.__init__()
 # Construct our accumulator to run
 acc = MainServicesSerialCfg()
 acc.merge(PoolReadCfg(ConfigFlags))
-acc.merge(MuonGeoModelCfg(ConfigFlags))
 acc.merge(MDT_DigitizerCfg(ConfigFlags))
 # Add configuration to write HITS pool file
 ItemList = [
@@ -59,5 +42,7 @@ acc.getService("ConditionStore").Dump = True
 acc.printConfig(withDetails=True)
 ConfigFlags.dump()
 # Execute and finish
-acc.run(maxEvents=3)
+sc = acc.run(maxEvents=3)
+# Success should be 0
+sys.exit(not sc.isSuccess())
 
diff --git a/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py
index ec90a2be9c80d541091d3c9dfcd0af7afa299139..780321cf631d519bbffb1772cb6d0fe9e6ff5c6e 100644
--- a/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py
+++ b/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py
@@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from StoreGate.StoreGateConf import StoreGateSvc
+from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 from RPC_Digitization.RPC_DigitizationConf import RpcDigitizationTool, RPC_Digitizer
 from PileUpComps.PileUpCompsConf import PileUpXingFolder
 
@@ -71,8 +72,9 @@ def RPC_DigitizationToolCfg(flags, name="RPC_DigitizationTool", **kwargs):
 
 def RPC_DigitizerCfg(flags, name="RPC_Digitizer", **kwargs):
     """Return a ComponentAccumulator with configured RpcDigitization algorithm"""
-    acc = RPC_DigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(RPC_DigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(RPC_Digitizer(name,**kwargs))
     return acc
 
@@ -89,8 +91,9 @@ def RPC_OverlayDigitizationToolCfg(flags, name="RPC_DigitizationTool", **kwargs)
 
 def RPC_OverlayDigitizerCfg(flags, name="RPC_OverlayDigitizer", **kwargs):
     """Return a ComponentAccumulator with RpcDigitization algorithm configured for Overlay"""
-    acc = RPC_OverlayDigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(RPC_OverlayDigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(RPC_Digitizer(name,**kwargs))
     return acc
 
diff --git a/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py
index 84711c81978bdafe406ee09781cea5cfe56722ae..f6a3bddc490e093b7eed96c04ce5560bdf39d275 100755
--- a/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py
+++ b/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py
@@ -3,6 +3,7 @@
 
 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
+import sys
 from AthenaCommon.Logging import log
 from AthenaCommon.Constants import DEBUG
 from AthenaCommon.Configurable import Configurable
@@ -13,8 +14,6 @@ from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
 from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags
 from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags
-# muon imports
-from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 # RPC imports
 from RPC_Digitization.RPC_DigitizationConfigNew import (
     RPC_RangeToolCfg, RPC_DigitizationToolCfg, RPC_DigitizerCfg,
@@ -31,20 +30,9 @@ ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16"
 ConfigFlags.join(createDigitizationCfgFlags())
 ConfigFlags.join(createOverlayCfgFlags())
 ConfigFlags.lock()
-# Function tests
-# using __init__ to prevent errors
-tool = RPC_RangeToolCfg(ConfigFlags)
-tacc = RPC_DigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = RPC_OverlayDigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = RPC_DigitizerCfg(ConfigFlags)
-tacc.merge(RPC_OverlayDigitizerCfg(ConfigFlags))
-tacc.__init__()
 # Construct our accumulator to run
 acc = MainServicesSerialCfg()
 acc.merge(PoolReadCfg(ConfigFlags))
-acc.merge(MuonGeoModelCfg(ConfigFlags))
 acc.merge(RPC_DigitizerCfg(ConfigFlags))
 # Add configuration to write HITS pool file
 ItemList = [
@@ -58,5 +46,7 @@ acc.getService("ConditionStore").Dump = True
 acc.printConfig(withDetails=True)
 ConfigFlags.dump()
 # Execute and finish
-acc.run(maxEvents=3)
+sc = acc.run(maxEvents=3)
+# Success should be 0
+sys.exit(not sc.isSuccess())
 
diff --git a/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py
index 51b277f1ba761d2d6d20edfe8be90134a9eaa0bf..d562ab5346e567264607a06027cd10b073627adb 100644
--- a/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py
+++ b/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py
@@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from StoreGate.StoreGateConf import StoreGateSvc
+from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 from TGC_Digitization.TGC_DigitizationConf import TgcDigitizationTool, TGCDigitizer
 from PileUpComps.PileUpCompsConf import PileUpXingFolder
 
@@ -39,8 +40,9 @@ def TGC_DigitizationToolCfg(flags, name="TGC_DigitizationTool", **kwargs):
 
 def TGC_DigitizerCfg(flags, name="TGC_Digitizer", **kwargs):
     """Return a ComponentAccumulator with configured TGCDigitizer algorithm"""
-    acc = TGC_DigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(TGC_DigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(TGCDigitizer(name,**kwargs))
     return acc
 
@@ -57,8 +59,9 @@ def TGC_OverlayDigitizationToolCfg(flags, name="TGC_OverlayDigitizationTool", **
 
 def TGC_OverlayDigitizerCfg(flags, name="TGC_OverlayDigitizer", **kwargs):
     """Return a ComponentAccumulator with TGCDigitizer algorithm configured for Overlay"""
-    acc = TGC_OverlayDigitizationToolCfg(flags)
-    kwargs.setdefault("DigitizationTool", acc.popPrivateTools())
+    acc = MuonGeoModelCfg(flags)
+    tool = acc.popToolsAndMerge(TGC_OverlayDigitizationToolCfg(flags))
+    kwargs.setdefault("DigitizationTool", tool)
     acc.addEventAlgo(TGCDigitizer(name,**kwargs))
     return acc
 
diff --git a/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py
index e4e68309998b19310c0d58fd2c2c843449abbe90..6e2829991db4a3edab9a21d6c0ff8f6501861cc5 100755
--- a/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py
+++ b/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py
@@ -3,6 +3,7 @@
 
 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 """
+import sys
 from AthenaCommon.Logging import log
 from AthenaCommon.Constants import DEBUG
 from AthenaCommon.Configurable import Configurable
@@ -13,8 +14,6 @@ from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags
 from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
-# muon imports
-from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
 # TGC imports
 from TGC_Digitization.TGC_DigitizationConfigNew import (
     TGC_RangeToolCfg, TGC_DigitizationToolCfg, TGC_DigitizerCfg,
@@ -31,20 +30,9 @@ ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16"
 ConfigFlags.join(createDigitizationCfgFlags())
 ConfigFlags.join(createOverlayCfgFlags())
 ConfigFlags.lock()
-# Function tests
-# using __init__ to prevent errors
-tool = TGC_RangeToolCfg(ConfigFlags)
-tacc = TGC_DigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = TGC_OverlayDigitizationToolCfg(ConfigFlags)
-tacc.__init__()
-tacc = TGC_DigitizerCfg(ConfigFlags)
-tacc.merge(TGC_OverlayDigitizerCfg(ConfigFlags))
-tacc.__init__()
 # Construct our accumulator to run
 acc = MainServicesSerialCfg()
 acc.merge(PoolReadCfg(ConfigFlags))
-acc.merge(MuonGeoModelCfg(ConfigFlags))
 acc.merge(TGC_DigitizerCfg(ConfigFlags))
 # Add configuration to write HITS pool file
 ItemList = [
@@ -58,5 +46,7 @@ acc.getService("ConditionStore").Dump = True
 acc.printConfig(withDetails=True)
 ConfigFlags.dump()
 # Execute and finish
-acc.run(maxEvents=3)
+sc = acc.run(maxEvents=3)
+# Success should be 0
+sys.exit(not sc.isSuccess())
 
diff --git a/Simulation/Digitization/test/DigitizationConfigNew_test.py b/Simulation/Digitization/test/DigitizationConfigNew_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..2621454b09fa360385a9e4992591b4287202f393
--- /dev/null
+++ b/Simulation/Digitization/test/DigitizationConfigNew_test.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+"""Test various ComponentAccumulator Digitization configuration modules
+
+Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+"""
+import sys
+from AthenaCommon.Logging import log
+from AthenaCommon.Constants import DEBUG
+from AthenaCommon.Configurable import Configurable
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.AllConfigFlags import ConfigFlags
+from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg
+from AthenaConfiguration.TestDefaults import defaultTestFiles
+from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
+from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg
+from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
+from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
+from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags
+from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags
+from BCM_Digitization.BCM_DigitizationConfigNew import BCM_DigitizationCfg
+from SCT_Digitization.SCT_DigitizationConfigNew import SCT_DigitizationHSCfg
+from MDT_Digitization.MDT_DigitizationConfigNew import MDT_DigitizerCfg
+from TGC_Digitization.TGC_DigitizationConfigNew import TGC_DigitizerCfg
+from RPC_Digitization.RPC_DigitizationConfigNew import RPC_DigitizerCfg
+from CSC_Digitization.CSC_DigitizationConfigNew import CSC_DigitBuilderCfg
+
+# Set up logging and new style config
+log.setLevel(DEBUG)
+Configurable.configurableRun3Behavior = True
+# Configure
+ConfigFlags.join(createDigitizationCfgFlags())
+ConfigFlags.join(createOverlayCfgFlags())
+ConfigFlags.Input.Files = defaultTestFiles.HITS_SPECIAL
+ConfigFlags.Output.RDOFileName = "myRDO.pool.root"
+ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16"
+ConfigFlags.GeoModel.Align.Dynamic = False
+ConfigFlags.Concurrency.NumThreads = 1
+ConfigFlags.lock()
+# Construct our accumulator to run
+acc = MainServicesSerialCfg()
+acc.merge(PoolReadCfg(ConfigFlags))
+acc.merge(BCM_DigitizationCfg(ConfigFlags))
+acc.merge(SCT_DigitizationHSCfg(ConfigFlags))
+acc.merge(MDT_DigitizerCfg(ConfigFlags))
+acc.merge(TGC_DigitizerCfg(ConfigFlags))
+acc.merge(RPC_DigitizerCfg(ConfigFlags))
+acc.merge(CSC_DigitBuilderCfg(ConfigFlags))
+# add output configuration
+ItemList = [
+    "InDetSimDataCollection#*",
+    "BCM_RDO_Container#*",
+    "InDet::SiClusterContainer#*",
+    "SCT_RDO_Container#*",
+    "MuonSimDataCollection#*",
+    "MdtCsmContainer#*",
+    "TgcRdoContainer#*",
+    "RpcPadContainer#*",
+    "CscSimDataCollection#CSC_SDO",
+    "CscRawDataContainer#*",
+]
+acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList))
+# Dump config
+acc.getService("StoreGateSvc").Dump = True
+acc.getService("ConditionStore").Dump = True
+acc.printConfig(withDetails=True)
+ConfigFlags.dump()
+# Execute and finish
+sc = acc.run(maxEvents=3)
+# Success should be 0
+sys.exit(not sc.isSuccess())
+