diff --git a/ForwardDetectors/ForwardSimulation/ForwardRegionMgField/python/ForwardRegionMgFieldConfigNew.py b/ForwardDetectors/ForwardSimulation/ForwardRegionMgField/python/ForwardRegionMgFieldConfigNew.py
index 57eaa82f7c875cb3fca378809599446753a1279a..8582fbd425ff608f010b731fa58943825c43df15 100644
--- a/ForwardDetectors/ForwardSimulation/ForwardRegionMgField/python/ForwardRegionMgFieldConfigNew.py
+++ b/ForwardDetectors/ForwardSimulation/ForwardRegionMgField/python/ForwardRegionMgFieldConfigNew.py
@@ -1,66 +1,66 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 from ForwardRegionMgField.ForwardRegionMgFieldConf import MagField__ForwardRegionFieldSvc
 
-def Q1FieldSvcCfg(name="Q1", **kwargs):
+def Q1FieldSvcCfg(ConfigFlags, name="Q1", **kwargs):
     kwargs.setdefault("Magnet", 0) # FIXME find a better way to do this.
     kwargs.setdefault("MQXA_DataFile", "MQXA_NOMINAL.dat")
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q2FieldSvcCfg(name="Q2", **kwargs):
+def Q2FieldSvcCfg(ConfigFlags, name="Q2", **kwargs):
     kwargs.setdefault("Magnet", 1) # FIXME find a better way to do this.
     kwargs.setdefault("MQXB_DataFile", "MQXB_NOMINAL.dat")
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q3FieldSvcCfg(name="Q3", **kwargs):
+def Q3FieldSvcCfg(ConfigFlags, name="Q3", **kwargs):
     kwargs.setdefault("Magnet", 2) # FIXME find a better way to do this.
     kwargs.setdefault("MQXA_DataFile", "MQXA_NOMINAL.dat")
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def D1FieldSvcCfg(name="D1", **kwargs):
+def D1FieldSvcCfg(ConfigFlags, name="D1", **kwargs):
     kwargs.setdefault("Magnet", 3) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def D2FieldSvcCfg(name="D2", **kwargs):
+def D2FieldSvcCfg(ConfigFlags, name="D2", **kwargs):
     kwargs.setdefault("Magnet", 4) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q4FieldSvcCfg(name="Q4", **kwargs):
+def Q4FieldSvcCfg(ConfigFlags, name="Q4", **kwargs):
     kwargs.setdefault("Magnet", 5) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q5FieldSvcCfg(name="Q5", **kwargs):
+def Q5FieldSvcCfg(ConfigFlags, name="Q5", **kwargs):
     kwargs.setdefault("Magnet", 6) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q6FieldSvcCfg(name="Q6", **kwargs):
+def Q6FieldSvcCfg(ConfigFlags, name="Q6", **kwargs):
     kwargs.setdefault("Magnet", 7) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q7FieldSvcCfg(name="Q7", **kwargs):
+def Q7FieldSvcCfg(ConfigFlags, name="Q7", **kwargs):
     kwargs.setdefault("Magnet", 8) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q1hkickFieldSvcCfg(name="Q1HKick", **kwargs):
+def Q1hkickFieldSvcCfg(ConfigFlags, name="Q1HKick", **kwargs):
     kwargs.setdefault("Magnet", 9) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q1vkickFieldSvcCfg(name="Q1VKick", **kwargs):
+def Q1vkickFieldSvcCfg(ConfigFlags, name="Q1VKick", **kwargs):
     kwargs.setdefault("Magnet", 10) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q2hkickFieldSvcCfg(name="Q2HKick", **kwargs):
+def Q2hkickFieldSvcCfg(ConfigFlags, name="Q2HKick", **kwargs):
     kwargs.setdefault("Magnet", 11) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q2vkickFieldSvcCfg(name="Q2VKick", **kwargs):
+def Q2vkickFieldSvcCfg(ConfigFlags, name="Q2VKick", **kwargs):
     kwargs.setdefault("Magnet", 12) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q3hkickFieldSvcCfg(name="Q3HKick", **kwargs):
+def Q3hkickFieldSvcCfg(ConfigFlags, name="Q3HKick", **kwargs):
     kwargs.setdefault("Magnet", 13) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q3vkickFieldSvcCfg(name="Q3VKick", **kwargs):
+def Q3vkickFieldSvcCfg(ConfigFlags, name="Q3VKick", **kwargs):
     kwargs.setdefault("Magnet", 14) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q4vkickAFieldSvcCfg(name="Q4VKickA", **kwargs):
+def Q4vkickAFieldSvcCfg(ConfigFlags, name="Q4VKickA", **kwargs):
     kwargs.setdefault("Magnet", 15) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q4hkickFieldSvcCfg(name="Q4HKick", **kwargs):
+def Q4hkickFieldSvcCfg(ConfigFlags, name="Q4HKick", **kwargs):
     kwargs.setdefault("Magnet", 16) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q4vkickBFieldSvcCfg(name="Q4VKickB", **kwargs):
+def Q4vkickBFieldSvcCfg(ConfigFlags, name="Q4VKickB", **kwargs):
     kwargs.setdefault("Magnet", 17) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q5hkickFieldSvcCfg(name="Q5HKick", **kwargs):
+def Q5hkickFieldSvcCfg(ConfigFlags, name="Q5HKick", **kwargs):
     kwargs.setdefault("Magnet", 18) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
-def Q6vkickFieldSvcCfg(name="Q6VKick", **kwargs):
+def Q6vkickFieldSvcCfg(ConfigFlags, name="Q6VKick", **kwargs):
     kwargs.setdefault("Magnet", 19) # FIXME find a better way to do this.
     return MagField__ForwardRegionFieldSvc(name, **kwargs)
diff --git a/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfigNew.py b/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfigNew.py
index c9595956d62bdd0b78e3f643fa0487315dd1f13a..24438e296a79b1c7dec891048dac89b042088ad3 100644
--- a/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfigNew.py
+++ b/Simulation/G4Atlas/G4AtlasAlg/python/G4AtlasAlgConfigNew.py
@@ -49,9 +49,8 @@ def G4AtlasAlgCfg(ConfigFlags, name='G4AtlasAlg', **kwargs):
     print "TESTTTTT" #check if it runs!
     kwargs.setdefault('DetGeoSvc', acc.getService("DetectorGeometrySvc"))
     #result.addService(DetGeoSvc)
-    tools = result.popToolsAndMerge(acc)
-    result.setPrivateTools(tools)
-
+    result.merge(acc)
+    
     kwargs.setdefault("InputTruthCollection", "BeamTruthEvent") #tocheck -are these string inputs?
     kwargs.setdefault("OutputTruthCollection", "TruthEvent")
     ## Killing neutrinos
diff --git a/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasFieldServices.py b/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasFieldServices.py
index 42986dbff4ca440ecee804b200203358c220b3ea..6bc118786800e64a55bafcf3430268dd0fb50742 100644
--- a/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasFieldServices.py
+++ b/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasFieldServices.py
@@ -4,6 +4,8 @@ from G4AtlasServices.G4AtlasServicesConf import StandardFieldSvc
 
 from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg
 
+from ForwardRegionMgField.ForwardRegionMgFieldConfigNew import Q1FieldSvcCfg, Q2FieldSvcCfg, Q3FieldSvcCfg, D1FieldSvcCfg, D2FieldSvcCfg, Q4FieldSvcCfg, Q5FieldSvcCfg, Q6FieldSvcCfg, Q7FieldSvcCfg, Q1hkickFieldSvcCfg, Q1vkickFieldSvcCfg, Q2hkickFieldSvcCfg, Q2vkickFieldSvcCfg, Q3hkickFieldSvcCfg, Q3vkickFieldSvcCfg, Q4vkickAFieldSvcCfg, Q4hkickFieldSvcCfg, Q4vkickBFieldSvcCfg, Q5hkickFieldSvcCfg, Q6vkickFieldSvcCfg
+
 def StandardFieldSvcCfg(ConfigFlags,name="StandardField", **kwargs):
     result = ComponentAccumulator()
 
@@ -32,65 +34,105 @@ def ForwardFieldSvcCfg(ConfigFlags, name="ForwardField", **kwargs):
     return result
 
 def Q1FwdG4FieldSvcCfg(ConfigFlags, name='Q1FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q1")
-    return StandardFieldSvc(name, **kwargs)
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q1FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
 def Q2FwdG4FieldSvcCfg(ConfigFlags, name='Q2FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q2")
-    return StandardFieldSvc(name, **kwargs)
-def Q3FwdG4FieldSvcCfg(ConfigFlags, name='Q3FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q3")
-    return StandardFieldSvc(name, **kwargs)
-def D1FwdG4FieldSvcCfg(ConfigFlags, name='D1FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "D1")
-    return StandardFieldSvc(name, **kwargs)
-def D2FwdG4FieldSvcCfg(ConfigFlags, name='D2FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "D2")
-    return StandardFieldSvc(name, **kwargs)
-def Q4FwdG4FieldSvcCfg(ConfigFlags, name='Q4FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q4")
-    return StandardFieldSvc(name, **kwargs)
-def Q5FwdG4FieldSvcCfg(ConfigFlags, name='Q5FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q5")
-    return StandardFieldSvc(name, **kwargs)
-def Q6FwdG4FieldSvcCfg(ConfigFlags, name='Q6FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q6")
-    return StandardFieldSvc(name, **kwargs)
-def Q7FwdG4FieldSvcCfg(ConfigFlags, name='Q7FwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q7")
-    return StandardFieldSvc(name, **kwargs)
-def Q1HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q1HKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q1HKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q1VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q1VKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q1VKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q2HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q2HKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q2HKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q2VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q2VKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q2VKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q3HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q3HKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q3HKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q3VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q3VKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q3VKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q4VKickAFwdG4FieldSvcCfg(ConfigFlags, name='Q4VKickAFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q4VKickA")
-    return StandardFieldSvc(name, **kwargs)
-def Q4HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q4HKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q4HKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q4VKickBFwdG4FieldSvcCfg(ConfigFlags, name='Q4VKickBFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q4VKickB")
-    return StandardFieldSvc(name, **kwargs)
-def Q5HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q5HKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q5HKick")
-    return StandardFieldSvc(name, **kwargs)
-def Q6VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q6VKickFwdG4FieldSvc', **kwargs):
-    kwargs.setdefault("MagneticFieldSvc",           "Q6VKick")
-    return StandardFieldSvc(name, **kwargs)
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q2FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q3FwdG4FieldSvcCfg(ConfigFlags, name='Q3FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q3FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def D1FwdG4FieldSvcCfg(ConfigFlags, name='D1FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           D1FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def D2FwdG4FieldSvcCfg(ConfigFlags, name='D2FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           D2FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q4FwdG4FieldSvcCfg(ConfigFlags, name='Q4FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q4FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q5FwdG4FieldSvcCfg(ConfigFlags, name='Q5FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q5FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q6FwdG4FieldSvcCfg(ConfigFlags, name='Q6FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q6FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q7FwdG4FieldSvcCfg(ConfigFlags, name='Q7FwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q7FieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q1HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q1HKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q1hkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q1VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q1VKickFwdG4FieldSvc', **kwargs): #note is lower case "v" in ForwardRegionMgFieldConfig.py
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q1vkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q2HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q2HKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q2hkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q2VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q2VKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q2vkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q3HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q3HKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q3hkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q3VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q3VKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q3vkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q4VKickAFwdG4FieldSvcCfg(ConfigFlags, name='Q4VKickAFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q4vkickAFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q4HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q4HKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q4hkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q4VKickBFwdG4FieldSvcCfg(ConfigFlags, name='Q4VKickBFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q4vkickBFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q5HKickFwdG4FieldSvcCfg(ConfigFlags, name='Q5HKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q5hkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
+def Q6VKickFwdG4FieldSvcCfg(ConfigFlags, name='Q6VKickFwdG4FieldSvc', **kwargs): 
+    result = ComponentAccumulator()
+    kwargs.setdefault("MagneticFieldSvc",           Q6vkickFieldSvcCfg(ConfigFlags))
+    result.addService(StandardFieldSvc(name, **kwargs))
+    return result
 
 
 if __name__ == '__main__':
diff --git a/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py b/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py
index 93b1fd44b8f98fd56f361e4fa1812d25309b7d10..586b243b7237855119eba6c0d9957009458b2976 100644
--- a/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py
+++ b/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py
@@ -9,16 +9,6 @@ from G4AtlasServices.G4AtlasServicesConf import DetectorGeometrySvc, G4AtlasSvc,
 #the physics region tools
 from G4AtlasTools.G4PhysicsRegionConfigNew import SX1PhysicsRegionToolCfg, BedrockPhysicsRegionToolCfg, CavernShaftsConcretePhysicsRegionToolCfg, PixelPhysicsRegionToolCfg, SCTPhysicsRegionToolCfg, TRTPhysicsRegionToolCfg, TRT_ArPhysicsRegionToolCfg, BeampipeFwdCutPhysicsRegionToolCfg, FWDBeamLinePhysicsRegionToolCfg, EMBPhysicsRegionToolCfg, EMECPhysicsRegionToolCfg, HECPhysicsRegionToolCfg, FCALPhysicsRegionToolCfg, DriftWallPhysicsRegionToolCfg, DriftWall1PhysicsRegionToolCfg, DriftWall2PhysicsRegionToolCfg, MuonSystemFastPhysicsRegionToolCfg
 
-"""FwdRegionPhysicsRegionToolCfg,  
- TRT_KrPhysicsRegionToolCfg,  
- EMECParaPhysicsRegionToolCfg, 
- FCALParaPhysicsRegionToolCfg, 
- FCAL2ParaPhysicsRegionToolCfg, 
- PreSampLArPhysicsRegionToolCfg, 
- DeadMaterialPhysicsRegionToolCfg, 
- MuonPhysicsRegionToolCfg, 
- SX1PhysicsRegionToolCfg,  
- SCTSiliconPhysicsRegionToolCfg"""
 
 from G4AtlasTools.G4GeometryToolConfig import MaterialDescriptionToolCfg, G4AtlasDetectorConstructionToolCfg, ATLASEnvelopeCfg
 from G4AtlasTools.G4FieldConfigNew import ATLASFieldManagerToolCfg, TightMuonsATLASFieldManagerToolCfg, BeamPipeFieldManagerToolCfg, InDetFieldManagerToolCfg, MuonsOnlyInCaloFieldManagerToolCfg, MuonFieldManagerToolCfg, Q1FwdFieldManagerToolCfg, Q2FwdFieldManagerToolCfg, Q3FwdFieldManagerToolCfg, D1FwdFieldManagerToolCfg, D2FwdFieldManagerToolCfg, Q4FwdFieldManagerToolCfg, Q5FwdFieldManagerToolCfg, Q6FwdFieldManagerToolCfg, Q7FwdFieldManagerToolCfg, Q1HKickFwdFieldManagerToolCfg, Q1VKickFwdFieldManagerToolCfg, Q2HKickFwdFieldManagerToolCfg, Q2VKickFwdFieldManagerToolCfg, Q3HKickFwdFieldManagerToolCfg, Q3VKickFwdFieldManagerToolCfg, Q4VKickAFwdFieldManagerToolCfg, Q4HKickFwdFieldManagerToolCfg, Q4VKickBFwdFieldManagerToolCfg, Q5HKickFwdFieldManagerToolCfg,  Q6VKickFwdFieldManagerToolCfg, FwdRegionFieldManagerToolCfg
@@ -132,55 +122,134 @@ def getTB_RegionCreatorList(ConfigFlags):
     return regionCreatorList
 
 #########################################################################
-def getATLAS_FieldMgrList(ConfigFlags):
+def ATLAS_FieldMgrListCfg(ConfigFlags):
     result = ComponentAccumulator()
     fieldMgrList = []
-    from G4AtlasApps.SimFlags import simFlags
+    #from G4AtlasApps.SimFlags import simFlags
     #if not simFlags.TightMuonStepping.statusOn or\
     #   not simFlags.TightMuonStepping():
     if False:
-        fieldMgrList += [ATLASFieldManagerToolCfg(ConfigFlags)]
+        #fieldMgrList += [ATLASFieldManagerToolCfg(ConfigFlags)]
+        acc   = ATLASFieldManagerToolCfg(ConfigFlags)
+        tool  = result.popToolsAndMerge(acc)
+        fieldMgrList += [tool]
     else:
-        acc, tool = TightMuonsATLASFieldManagerToolCfg(ConfigFlags)
-        #fieldMgrList += [acc.getPublicTool('TightMuonsATLASFieldManager')] # issue with public tools?
+        acc   = TightMuonsATLASFieldManagerToolCfg(ConfigFlags)
+        tool  = result.popToolsAndMerge(acc)
         fieldMgrList += [tool]
-        result.merge(acc)
 
     from AthenaCommon.DetFlags import DetFlags
     if ConfigFlags.Detector.SimulateBpipe:
-        fieldMgrList += [BeamPipeFieldManagerToolCfg(ConfigFlags)]
+        acc = BeamPipeFieldManagerToolCfg(ConfigFlags)
+        tool  = result.popToolsAndMerge(acc)
+        fieldMgrList += [tool]
     if ConfigFlags.Detector.SimulateID:
-        fieldMgrList += [InDetFieldManagerToolCfg(ConfigFlags)]
+        acc = InDetFieldManagerToolCfg(ConfigFlags)
+        tool  = result.popToolsAndMerge(acc)
+        fieldMgrList += [tool]
     #if ConfigFlags.Detector.SimulateCalo and simFlags.MuonFieldOnlyInCalo.statusOn and simFlags.MuonFieldOnlyInCalo():
     if False:
-        fieldMgrList += [MuonsOnlyInCaloFieldManagerToolCfg(ConfigFlags)]
+        acc = MuonsOnlyInCaloFieldManagerToolCfg(ConfigFlags)
+        tool  = result.popToolsAndMerge(acc)
+        fieldMgrList += [tool]
     if ConfigFlags.Detector.SimulateMuon:
-        fieldMgrList += [MuonFieldManagerToolCfg(ConfigFlags)]
+        acc = MuonFieldManagerToolCfg(ConfigFlags)
+        tool  = result.popToolsAndMerge(acc)
+        fieldMgrList += [tool]
+
+    #sort these forward ones later
     if ConfigFlags.Detector.SimulateForward: #needed?
         if ConfigFlags.Detector.GeometryFwdRegion: #or forward?
-            fieldMgrList += [Q1FwdFieldManagerToolCfg(ConfigFlags),
-                             Q2FwdFieldManagerToolCfg(ConfigFlags),
-                             Q3FwdFieldManagerToolCfg(ConfigFlags),
-                             D1FwdFieldManagerToolCfg(ConfigFlags),
-                             D2FwdFieldManagerToolCfg(ConfigFlags),
-                             Q4FwdFieldManagerToolCfg(ConfigFlags),
-                             Q5FwdFieldManagerToolCfg(ConfigFlags),
-                             Q6FwdFieldManagerToolCfg(ConfigFlags),
-                             Q7FwdFieldManagerToolCfg(ConfigFlags),
-                             Q1HKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q1VKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q2HKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q2VKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q3HKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q3VKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q4VKickAFwdFieldManagerToolCfg(ConfigFlags),
-                             Q4HKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q4VKickBFwdFieldManagerToolCfg(ConfigFlags),
-                             Q5HKickFwdFieldManagerToolCfg(ConfigFlags),
-                             Q6VKickFwdFieldManagerToolCfg(ConfigFlags),
-                             FwdRegionFieldManagerToolCfg(ConfigFlags)]
+          """fieldMgrList += [Q1FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q2FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q3FwdFieldManagerToolCfg(ConfigFlags),
+                                                           D1FwdFieldManagerToolCfg(ConfigFlags),
+                                                           D2FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q4FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q5FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q6FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q7FwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q1HKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q1VKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q2HKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q2VKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q3HKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q3VKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q4VKickAFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q4HKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q4VKickBFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q5HKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           Q6VKickFwdFieldManagerToolCfg(ConfigFlags),
+                                                           FwdRegionFieldManagerToolCfg(ConfigFlags)]"""
+
+          accQ1FwdRegionFieldManager = Q1FwdFieldManagerToolCfg(ConfigFlags)
+          accQ2FwdRegionFieldManager = Q2FwdFieldManagerToolCfg(ConfigFlags)
+          accQ3FwdRegionFieldManager = Q3FwdFieldManagerToolCfg(ConfigFlags)
+          accD1FwdRegionFieldManager = D1FwdFieldManagerToolCfg(ConfigFlags)
+          accD2FwdRegionFieldManager = D2FwdFieldManagerToolCfg(ConfigFlags)
+          accQ4FwdRegionFieldManager = Q4FwdFieldManagerToolCfg(ConfigFlags)
+          accQ5FwdRegionFieldManager = Q5FwdFieldManagerToolCfg(ConfigFlags)
+          accQ6FwdRegionFieldManager = Q6FwdFieldManagerToolCfg(ConfigFlags)
+          accQ7FwdRegionFieldManager = Q7FwdFieldManagerToolCfg(ConfigFlags)
+          accQ1HKickFwdRegionFieldManager = Q1HKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ1VKickFwdRegionFieldManager = Q1VKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ2HKickFwdRegionFieldManager = Q2HKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ2VKickFwdRegionFieldManager = Q2VKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ3HKickFwdRegionFieldManager = Q3HKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ3VKickFwdRegionFieldManager = Q3VKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ4VKickAFwdRegionFieldManager = Q4VKickAFwdFieldManagerToolCfg(ConfigFlags)
+          accQ4HKickFwdRegionFieldManager = Q4HKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ4VKickBFwdRegionFieldManager = Q4VKickBFwdFieldManagerToolCfg(ConfigFlags)
+          accQ5HKickFwdRegionFieldManager = Q5HKickFwdFieldManagerToolCfg(ConfigFlags)
+          accQ6VKickFwdRegionFieldManager = Q6VKickFwdFieldManagerToolCfg(ConfigFlags)
+          accFwdRegionFieldManager = FwdRegionFieldManagerToolCfg(ConfigFlags)
+
+          toolQ1FwdRegionFieldManager = result.popToolsAndMerge(accQ1FwdRegionFieldManager)
+          toolQ2FwdFieldManager = result.popToolsAndMerge(accQ2FwdRegionFieldManager)
+          toolQ3FwdFieldManager = result.popToolsAndMerge(accQ3FwdRegionFieldManager)
+          toolD1FwdFieldManager = result.popToolsAndMerge(accD1FwdRegionFieldManager)
+          toolD2FwdFieldManager = result.popToolsAndMerge(accD2FwdRegionFieldManager)
+          toolQ4FwdFieldManager = result.popToolsAndMerge(accQ4FwdRegionFieldManager)
+          toolQ5FwdFieldManager = result.popToolsAndMerge(accQ5FwdRegionFieldManager)
+          toolQ6FwdFieldManager = result.popToolsAndMerge(accQ6FwdRegionFieldManager)
+          toolQ7FwdFieldManager = result.popToolsAndMerge(accQ7FwdRegionFieldManager)
+          toolQ1HKickFwdFieldManager = result.popToolsAndMerge(accQ1HKickFwdRegionFieldManager)
+          toolQ1VKickFwdFieldManager = result.popToolsAndMerge(accQ1VKickFwdRegionFieldManager)
+          toolQ2HKickFwdFieldManager = result.popToolsAndMerge(accQ2HKickFwdRegionFieldManager)
+          toolQ2VKickFwdFieldManager = result.popToolsAndMerge(accQ2VKickFwdRegionFieldManager)
+          toolQ3HKickFwdFieldManager = result.popToolsAndMerge(accQ3HKickFwdRegionFieldManager)
+          toolQ3VKickFwdFieldManager = result.popToolsAndMerge(accQ3VKickFwdRegionFieldManager)
+          toolQ4VKickAFwdFieldManager = result.popToolsAndMerge(accQ4VKickAFwdRegionFieldManager)
+          toolQ4HKickFwdFieldManager = result.popToolsAndMerge(accQ4HKickFwdRegionFieldManager)
+          toolQ4VKickBFwdFieldManager = result.popToolsAndMerge(accQ4VKickBFwdRegionFieldManager)
+          toolQ5HKickFwdFieldManager = result.popToolsAndMerge(accQ5HKickFwdRegionFieldManager)
+          toolQ6VKickFwdFieldManager = result.popToolsAndMerge(accQ6VKickFwdRegionFieldManager)
+          toolFwdRegionFieldManager = result.popToolsAndMerge(accFwdRegionFieldManager)
+
+          fieldMgrList+=[toolQ1FwdRegionFieldManager,
+                                                       toolQ2FwdFieldManager,
+                                                       toolQ3FwdFieldManager,
+                                                       toolD1FwdFieldManager,
+                                                       toolD2FwdFieldManager,
+                                                       toolQ4FwdFieldManager,
+                                                       toolQ5FwdFieldManager,
+                                                       toolQ6FwdFieldManager,
+                                                       toolQ7FwdFieldManager,
+                                                       toolQ1HKickFwdFieldManager,
+                                                       toolQ1VKickFwdFieldManager,
+                                                       toolQ2HKickFwdFieldManager,
+                                                       toolQ2VKickFwdFieldManager,
+                                                       toolQ3HKickFwdFieldManager,
+                                                       toolQ3VKickFwdFieldManager,
+                                                       toolQ4VKickAFwdFieldManager,
+                                                       toolQ4HKickFwdFieldManager,
+                                                       toolQ4VKickBFwdFieldManager,
+                                                       toolQ5HKickFwdFieldManager,
+                                                       toolQ6VKickFwdFieldManager,
+                                                       toolFwdRegionFieldManager]
+          #fieldMgrList+=[toolQ1FwdRegionFieldManager]
     result.setPrivateTools(fieldMgrList)
-    return result, fieldMgrList
+    return result#, fieldMgrList
 
 #called?
 def getCTB_FieldMgrList(ConfigFlags):
@@ -203,10 +272,10 @@ def DetectorGeometrySvcCfg(ConfigFlags, name="DetectorGeometrySvc", **kwargs):
     kwargs.setdefault("DetectorConstruction", G4AtlasDetectorConstructionToolCfg(ConfigFlags))
     ## For now just have the same geometry configurations tools loaded for ATLAS and TestBeam
     kwargs.setdefault("GeometryConfigurationTools", getGeometryConfigurationTools(ConfigFlags))
-    from G4AtlasApps.SimFlags import simFlags
+
     #if hasattr(simFlags,"Eta"): #FIXME ugly hack
     if False:
-        kwargs.setdefault("World", 'TileTB_World')
+        kwargs.setdefault("World", 'TileTB_World') # NEED TO ADD THIS
         kwargs.setdefault("RegionCreators", getTB_RegionCreatorList(ConfigFlags))
         kwargs.setdefault("FieldManagers", getTB_FieldMgrList(ConfigFlags))
     #elif hasattr(simFlags,"LArTB_H1TableYPos"): #FIXME ugly hack
@@ -225,10 +294,9 @@ def DetectorGeometrySvcCfg(ConfigFlags, name="DetectorGeometrySvc", **kwargs):
         kwargs.setdefault("RegionCreators", getATLAS_RegionCreatorList(ConfigFlags))
         #if hasattr(simFlags, 'MagneticField') and simFlags.MagneticField.statusOn:
         if True:
-            acc, fieldMgrList = getATLAS_FieldMgrList(ConfigFlags)
-            kwargs.setdefault("FieldManagers", fieldMgrList ) #causing issues...!
-            tool = result.popToolsAndMerge(acc)
-            result.setPrivateTools(tool)
+            acc = ATLAS_FieldMgrListCfg(ConfigFlags)
+            fieldMgrList = result.popToolsAndMerge(acc)
+            kwargs.setdefault("FieldManagers", fieldMgrList) 
 
     result.addService(DetectorGeometrySvc(name, **kwargs))
     return result
@@ -290,10 +358,10 @@ if __name__ == '__main__':
 
   #add the algorithm
   acc = DetectorGeometrySvcCfg(ConfigFlags)
+  cfg.merge(acc)
 
-  cfg.addService(acc.getService("DetectorGeometrySvc"))
 
-  tool = cfg.popToolsAndMerge(acc)
+  #cfg.addService(acc.getService("DetectorGeometrySvc"))
   #cfg.setPrivateTools(tool) #need to set private tools?
 
 
diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4FieldConfigNew.py b/Simulation/G4Atlas/G4AtlasTools/python/G4FieldConfigNew.py
index d459f864921c890a9f43f6a6455a32f5f1f0ab72..84c5e55b76206f3e5797dcd8156cdf767a13f4fb 100644
--- a/Simulation/G4Atlas/G4AtlasTools/python/G4FieldConfigNew.py
+++ b/Simulation/G4Atlas/G4AtlasTools/python/G4FieldConfigNew.py
@@ -2,11 +2,11 @@
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 
 from G4AtlasTools.G4AtlasToolsConf import GlobalFieldManagerTool, DetectorFieldManagerTool
-#from G4AtlasServices.G4AtlasServicesConfigNew import StandardFieldSvcCfg #either make new file for the StandardFieldSvcCfg etc.. or just import the file
 from G4AtlasServices.G4AtlasFieldServices import StandardFieldSvcCfg, ForwardFieldSvcCfg, Q1FwdG4FieldSvcCfg, Q2FwdG4FieldSvcCfg, Q3FwdG4FieldSvcCfg, D1FwdG4FieldSvcCfg, D2FwdG4FieldSvcCfg, Q4FwdG4FieldSvcCfg, Q5FwdG4FieldSvcCfg, Q6FwdG4FieldSvcCfg, Q7FwdG4FieldSvcCfg, Q1HKickFwdG4FieldSvcCfg, Q1VKickFwdG4FieldSvcCfg, Q2HKickFwdG4FieldSvcCfg, Q2VKickFwdG4FieldSvcCfg, Q3HKickFwdG4FieldSvcCfg, Q3VKickFwdG4FieldSvcCfg, Q4VKickAFwdG4FieldSvcCfg, Q4HKickFwdG4FieldSvcCfg, Q4VKickBFwdG4FieldSvcCfg, Q5HKickFwdG4FieldSvcCfg, Q6VKickFwdG4FieldSvcCfg
 
 # Field Managers
 def ATLASFieldManagerToolCfg(ConfigFlags, name='ATLASFieldManager', **kwargs):
+    result = ComponentAccumulator()
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault("IntegratorStepper", simFlags.G4Stepper.get_Value())
 
@@ -16,7 +16,10 @@ def ATLASFieldManagerToolCfg(ConfigFlags, name='ATLASFieldManager', **kwargs):
     kwargs.setdefault("UseTightMuonStepping", False)
     if simFlags.EquationOfMotion.statusOn:
         kwargs.setdefault("EquationOfMotion", simFlags.EquationOfMotion.get_Value() )
-    return GlobalFieldManagerTool(name, **kwargs)
+
+
+    result.setPrivateTools(GlobalFieldManagerTool(name, **kwargs))
+    return result#, GlobalFieldManagerTool(name, **kwargs)  # todo return accumulator 
 
 def TightMuonsATLASFieldManagerToolCfg(ConfigFlags, name='TightMuonsATLASFieldManager', **kwargs):
     result = ComponentAccumulator()
@@ -31,23 +34,28 @@ def TightMuonsATLASFieldManagerToolCfg(ConfigFlags, name='TightMuonsATLASFieldMa
     if simFlags.EquationOfMotion.statusOn:
         kwargs.setdefault("EquationOfMotion", simFlags.EquationOfMotion.get_Value() )
 
-    result.addPublicTool(GlobalFieldManagerTool(name, **kwargs))
-    return result, GlobalFieldManagerTool(name, **kwargs) #return tuple for now (add public / private tool later )
+    result.setPrivateTools(GlobalFieldManagerTool(name, **kwargs))
+    return result #, GlobalFieldManagerTool(name, **kwargs) #return tuple for now (add public / private tool later )
 
 def ClassicFieldManagerToolCfg(ConfigFlags, name='ClassicFieldManager', **kwargs):
     kwargs.setdefault("IntegratorStepper", "ClassicalRK4")
     return ATLASFieldManagerToolCfg(ConfigFlags, name, **kwargs)
 
 def BasicDetectorFieldManagerToolCfg(ConfigFlags, name='BasicDetectorFieldManager', **kwargs):
+    result = ComponentAccumulator()
     from G4AtlasApps.SimFlags import simFlags
     kwargs.setdefault("IntegratorStepper", simFlags.G4Stepper.get_Value())
     
     acc = StandardFieldSvcCfg(ConfigFlags)
     kwargs.setdefault("FieldSvc", acc.getService("StandardField"))
+    result.merge(acc)
+    
     kwargs.setdefault('MuonOnlyField',     False)
     if simFlags.EquationOfMotion.statusOn:
         kwargs.setdefault("EquationOfMotion", simFlags.EquationOfMotion.get_Value() )
-    return DetectorFieldManagerTool(name, **kwargs)
+
+    result.setPrivateTools(DetectorFieldManagerTool(name, **kwargs))
+    return result
 
 def BeamPipeFieldManagerToolCfg(ConfigFlags, name='BeamPipeFieldManager', **kwargs):
     kwargs.setdefault("LogicalVolumes", ['BeamPipe::BeamPipe'])
@@ -88,101 +96,191 @@ def MuonFieldManagerToolCfg(ConfigFlags, name='MuonFieldManager', **kwargs):
 
 
 def BasicFwdFieldManagerToolCfg(ConfigFlags, name='FwdFieldManagerTool', **kwargs):
+    result=ComponentAccumulator()
+
     #kwargs.setdefault('DeltaChord',         0.00000002)
     kwargs.setdefault('DeltaIntersection',  1e-9)
     kwargs.setdefault('DeltaOneStep',       1e-8)
     kwargs.setdefault('MaximumEpsilonStep', 1e-8)
     kwargs.setdefault('MinimumEpsilonStep', 1e-9)
-    kwargs.setdefault("FieldSvc", ForwardFieldSvcCfg(ConfigFlags))
+
+    accForwardField = ForwardFieldSvcCfg(ConfigFlags)
+    #kwargs.setdefault("FieldSvc", ForwardFieldSvcCfg(ConfigFlags))
+    kwargs.setdefault("FieldSvc", accForwardField.getService("ForwardField")) #accessing the right service?
+    result.merge(accForwardField)
+
     #from G4AtlasApps.SimFlags import simFlags
     #if simFlags.FwdStepLimitation.statusOn:
     #    kwargs.setdefault("MaximumStep", simFlags.FwdStepLimitation())
     if False:
         kwargs.setdefault("MaximumStep", 1000.)
-    return BasicDetectorFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc = BasicDetectorFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 
 def Q1FwdFieldManagerToolCfg(ConfigFlags, name='Q1FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q1FwdG4FieldSvcCfg(ConfigFlags))
+    result = Q1FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q1FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXAA.1R1MagQ1'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q2FwdFieldManagerToolCfg(ConfigFlags, name='Q2FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q2FwdG4FieldSvcCfg(ConfigFlags))
+    result=Q2FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q2FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXBA.2R1MagQ2a', 'FwdRegion::LQXBA.2R1MagQ2b'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q3FwdFieldManagerToolCfg(ConfigFlags, name='Q3FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q3FwdG4FieldSvcCfg(ConfigFlags))
+    result=Q3FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q3FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXAG.3R1MagQ3'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def D1FwdFieldManagerToolCfg(ConfigFlags, name='D1FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", D1FwdG4FieldSvcCfg(ConfigFlags))
+    result=D1FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('D1FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::MBXW.A4R1MagD1a', 'FwdRegion::MBXW.B4R1MagD1b',
                                          'FwdRegion::MBXW.C4R1MagD1c', 'FwdRegion::MBXW.D4R1MagD1d',
                                          'FwdRegion::MBXW.E4R1MagD1e', 'FwdRegion::MBXW.F4R1MagD1f'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def D2FwdFieldManagerToolCfg(ConfigFlags, name='D2FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", D2FwdG4FieldSvcCfg(ConfigFlags))
+    result=D2FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('D2FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LBRCD.4R1MagD2'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q4FwdFieldManagerToolCfg(ConfigFlags, name='Q4FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q4FwdG4FieldSvcCfg(ConfigFlags))
+    result=Q4FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q4FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQYCH.4R1MagQ4'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q5FwdFieldManagerToolCfg(ConfigFlags, name='Q5FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q5FwdG4FieldSvcCfg(ConfigFlags))
+    result=Q5FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q5FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQNDC.5R1MagQ5'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q6FwdFieldManagerToolCfg(ConfigFlags, name='Q6FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q6FwdG4FieldSvcCfg(ConfigFlags))
+    result=Q6FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q6FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQNDD.6R1MagQ6'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q7FwdFieldManagerToolCfg(ConfigFlags, name='Q7FwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q7FwdG4FieldSvcCfg(ConfigFlags))
+    result=Q7FwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q7FwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQNFD.7R1MagQ7a', 'FwdRegion::LQNFD.7R1MagQ7b'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q1HKickFwdFieldManagerToolCfg(ConfigFlags, name='Q1HKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q1HKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q1HKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q1HKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXAA.1R1MagQ1HKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q1VKickFwdFieldManagerToolCfg(ConfigFlags, name='Q1VKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q1VKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q1VKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q1VKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXAA.1R1MagQ1VKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q2HKickFwdFieldManagerToolCfg(ConfigFlags, name='Q2HKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q2HKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q2HKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q2HKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXBA.2R1MagQ2HKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q2VKickFwdFieldManagerToolCfg(ConfigFlags, name='Q2VKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q2VKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q2VKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q2VKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXBA.2R1MagQ2VKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q3HKickFwdFieldManagerToolCfg(ConfigFlags, name='Q3HKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q3HKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q3HKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q3HKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXAG.3R1MagQ3HKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q3VKickFwdFieldManagerToolCfg(ConfigFlags, name='Q3VKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q3VKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q3VKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q3VKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQXAG.3R1MagQ3VKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q4VKickAFwdFieldManagerToolCfg(ConfigFlags, name='Q4VKickAFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q4VKickAFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q4VKickAFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q4VKickAFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQYCH.4R1MagQ4VKickA'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q4HKickFwdFieldManagerToolCfg(ConfigFlags, name='Q4HKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q4HKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q4HKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q4HKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQYCH.4R1MagQ4HKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q4VKickBFwdFieldManagerToolCfg(ConfigFlags, name='Q4VKickBFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q4VKickBFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q4VKickBFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q4VKickBFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQYCH.4R1MagQ4VKickB'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q5HKickFwdFieldManagerToolCfg(ConfigFlags, name='Q5HKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q5HKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q5HKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q5HKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQNDC.5R1MagQ5HKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 def Q6VKickFwdFieldManagerToolCfg(ConfigFlags, name='Q6VKickFwdFieldManager', **kwargs):
-    kwargs.setdefault("FieldSvc", Q6VKickFwdG4FieldSvcCfg(ConfigFlags))
+    result=Q6VKickFwdG4FieldSvcCfg(ConfigFlags)
+    kwargs.setdefault("FieldSvc", result.getService('Q6VKickFwdG4FieldSvc'))
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::LQNDD.6R1MagQ6VKick'])
-    return BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    acc=BasicFwdFieldManagerToolCfg(ConfigFlags, name, **kwargs)
+    tool = result.popToolsAndMerge(acc)
+    result.setPrivateTools(tool)
+    return result
 
 def FwdRegionFieldManagerToolCfg(ConfigFlags, name='FwdRegionFieldManager', **kwargs):
     kwargs.setdefault("LogicalVolumes", ['FwdRegion::ForwardRegionGeoModel'])