diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py b/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py
index fa39682b09308bd2a5bef9258d2d372a546b703c..cd96b5c52fe7c2c13721d30c0b4b96851230d2d5 100644
--- a/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py
+++ b/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py
@@ -5,9 +5,5 @@
 #########################################################
 
 atlasG4log.info("Turning off photon inelastic interactions")
-def disable_photonuclear():
-    from G4AtlasApps import AtlasG4Eng
-    AtlasG4Eng.G4Eng.gbl.G4Commands().process.inactivate('PhotonInelastic', 'gamma')
-
 from G4AtlasApps.SimFlags import simFlags
-simFlags.InitFunctions.add_function("postInit", disable_photonuclear)
+simFlags.G4Commands += ['/process/inactivate PhotonInelastic gamma']
diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py
index 0ae1fb4ff55b2a06783b8d1c6b86a9c1619d68d7..71a477dc9c8c596e9537e9966666077c6d0ae4eb 100644
--- a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py
+++ b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py
@@ -1,9 +1,5 @@
 # Use verbose output for all G4 process.
 # Only works in dbg builds.
 
-def use_verbose_process():
-    from G4AtlasApps import AtlasG4Eng
-    AtlasG4Eng.G4Eng.gbl.G4Commands().process.verbose(10)
-
 from G4AtlasApps.SimFlags import simFlags
-simFlags.InitFunctions.add_function("preInitPhysics", use_verbose_process)
+simFlags.G4Commands += ['/process/verbose 10']
diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py
index c0c3bcc0dd15a224dd6eacad53356f827f2b4346..a688a54a1bd5d379f92be9d0cae33338f6c9f2a1 100644
--- a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py
+++ b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py
@@ -2,6 +2,5 @@
 # may find the VerboseSelector or VerboseSelectorArea preIncludes to be
 # more appropriate, but this one gives you all the output you can eat.
 
-from G4AtlasApps.SimFlags import simFlags
 from G4AtlasApps import callbacks
-simFlags.InitFunctions.add_function("preInitG4", callbacks.use_verbose_tracking)
+callbacks.use_verbose_tracking()
diff --git a/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py b/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py
index face2eefe6e3265b2ca956d28f5c2afa24ef577e..5d910db3b8770105bc4ee46488528f1a8b7abb3f 100644
--- a/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py
+++ b/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py
@@ -15,35 +15,29 @@ topSequence = AlgSequence()
 
 from AthenaCommon.DetFlags import DetFlags
 if DetFlags.pileup.any_on():
-   from MCTruthSimAlgs.MCTruthSimAlgsConf import MergeHijingPars
-   mergeHijingPars = MergeHijingPars()
-   index = 0
-   for alg in topSequence:
-      index += 1 #count position
-      if 'MergeMcEventCollection' == alg.name():
-         topSequence.insert(index, mergeHijingPars)
+    index = 0
+    for alg in topSequence:
+        index += 1 #count position
+        if 'PileUpToolsAlg' in alg.name():
+            from AthenaCommon.CfgGetter import getPublicTool
+            alg.PileUpTools+=[getPublicTool("MergeHijingParsTool")]
+            break
+        if 'MergeMcEventCollection' == alg.name():
+            from MCTruthSimAlgs.MCTruthSimAlgsConf import MergeHijingPars
+            mergeHijingPars = MergeHijingPars()
+            topSequence.insert(index, mergeHijingPars)
+            break
 else:
-   try:
-      from TruthIO.TruthIOConf import PrintHijingPars
-   except:
-      from TruthExamples.TruthExamplesConf import PrintHijingPars
-   topSequence += PrintHijingPars()
+    try:
+        from TruthIO.TruthIOConf import PrintHijingPars
+    except:
+        from TruthExamples.TruthExamplesConf import PrintHijingPars
+    topSequence += PrintHijingPars()
 
-## configure Athena for POOL persistency
-if hasattr(topSequence, 'StreamHITS'):
-    outStream = topSequence.StreamHITS
-elif hasattr(topSequence, 'StreamRDO'):
-    outStream = topSequence.StreamRDO
-else:
-   ## temporary back-compatibility
-   outStreams = AlgSequence( "Streams" )
-   if hasattr(outStreams, 'StreamHITS'):
-      outStream = outStreams.StreamHITS
-   elif hasattr(outStreams, 'StreamRDO'):
-      outStream = outStreams.StreamRDO
-   else:
-      #We should avoid creating the AthenaPoolOutputStream
-      #outside the core Sim/Digi python code
-      raise AttributeError("AthenaPoolOutputStream not found")
 
-outStream.ItemList += [ "HijingEventParams#Hijing_event_params" ]
+## configure Athena for POOL persistency
+streamAlgs = ['StreamHITS','StreamRDO','StreamESD','StreamAOD']
+for stream in streamAlgs:
+    outStream =  getattr(topSequence, stream, None)
+    if outStream is not None:
+        outStream.ItemList += [ "HijingEventParams#Hijing_event_params" ]
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py
index 5e9a0769c8f9075bc4542771509e9e8375f1b0d8..237c241eaec7e64e1d10167509087692e3a6900a 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py
@@ -40,11 +40,11 @@ try:
         simdict = digitizationFlags.specialConfiguration.get_Value()
         doG4SimConfig = False
     else:
-        from G4AtlasApps import AtlasG4Eng
-        simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+        from G4AtlasApps.SimFlags import simFlags
+        simdict = simFlags.specialConfiguration.get_Value()
 except:
-    from G4AtlasApps import AtlasG4Eng
-    simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+    from G4AtlasApps.SimFlags import simFlags
+    simdict = simFlags.specialConfiguration.get_Value()
 
 C1Mass = eval(simdict["AMSBC1Mass"])
 N1Mass = eval(simdict["AMSBN1Mass"])
@@ -53,45 +53,7 @@ get_and_fix_PDGTABLE([(1000022, N1Mass, '~chi(0,1)', '0'), (1000024, C1Mass, '~c
 
 if doG4SimConfig:
     from G4AtlasApps.SimFlags import simFlags
-    def amsb_processlist():
-        from G4AtlasApps import AtlasG4Eng
-        AtlasG4Eng.G4Eng.gbl.G4Commands().process.list()
-
-    simFlags.InitFunctions.add_function("postInit", amsb_processlist)
-
-    def amsb_setparams():
-        from G4AtlasApps import AtlasG4Eng
-        from GaudiKernel.SystemOfUnits import GeV, ns
-        C1Mass = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["AMSBC1Mass"])
-        N1Mass = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["AMSBN1Mass"])
-        C1Lifetime = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["AMSBC1Lifetime"])
-
-
-        AtlasG4Eng.G4Eng._ctrl.load("Charginos")
-        charginoPlus = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_plus_1")
-        charginoPlus.SetParticleMass(C1Mass)
-        if C1Lifetime == -1:
-            charginoPlus.Stable(True)
-        else:
-            charginoPlus.SetParticleLifeTime(C1Lifetime)
-            charginoPlus.Stable(False)
-            charginoPlus.AddDecayChannel("s_chi_plus_1", 1., "s_chi_0_1=pi+")
-
-        charginoMinus = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_minus_1")
-        charginoMinus.SetParticleMass(C1Mass)
-        if C1Lifetime == -1:
-            charginoMinus.Stable(True)
-        else:
-            charginoMinus.SetParticleLifeTime(C1Lifetime)
-            charginoMinus.Stable(False)
-            charginoMinus.AddDecayChannel("s_chi_minus_1", 1., "s_chi_0_1=pi-")
-
-        neutralino = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_0_1")
-        neutralino.SetParticleMass(N1Mass)
-        neutralino.Stable(True)
-
-
-    simFlags.InitFunctions.add_function("preInitPhysics", amsb_setparams)
+    simFlags.PhysicsOptions += ['CharginosPhysicsTool']
 
     def amsb_applycalomctruthstrategy():
 ## Applying the MCTruth strategies: add decays in the Calorimeter
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py
index ab18508bf70e847a5c1d858e85ac4b2d9703b603..2c462a3ec9b32c631bdc2b38b1b40f558b3e91fa 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py
@@ -18,18 +18,18 @@ def get_and_fix_PDGTABLE(replace):
         for r in replace:
             if l.find(r[1]) > -1:
                 ll = l.split()
-            
+
                 if ll[0] == r[0] and ll[1] == r[1]:
                     l = l[0:35] + ('%11.5E' % r[2]).strip().ljust(14) + l[49:]
                     continue
-        
+
         update.write(l)
     update.close()
 
 def load_files_for_GMSB_scenario(simdict):
 
     GMSBIndex = int(simdict["GMSBIndex"])
-    
+
     if GMSBIndex == 1:
         get_and_fix_PDGTABLE([('M', '1000022', eval(simdict["GMSBNeutralino"])), ('M', '1000039', eval(simdict.get("GMSBGravitino",'0')))])
 
@@ -54,14 +54,14 @@ def load_files_for_GMSB_scenario(simdict):
                               ('M', '2000013', m_slepton ), ('M', '2000015', 2.50E+02 ), ('M', '1000023', 1.00E+04 ), \
                               ('M', '1000024', 1.00E+04 ), ('M', '1000025', -1.0E+04 ), ('M', '1000035', 1.00E+04 ), \
                               ('M', '1000037', 1.00E+04 ) ])
-        
+
     elif GMSBIndex == 4:
         get_and_fix_PDGTABLE([('M', '1000015', eval(simdict["GMSBStau"]))])
 
     else:
         print 'GMSBIndex %i not supported' % GMSBIndex
         raise
-    
+
 doG4SimConfig = True
 from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
 import PyUtils.AthFile as af
@@ -73,11 +73,11 @@ try:
         simdict = digitizationFlags.specialConfiguration.get_Value()
         doG4SimConfig = False
     else:
-        from G4AtlasApps import AtlasG4Eng
-        simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+        from G4AtlasApps.SimFlags import simFlags
+        simdict = simFlags.specialConfiguration.get_Value()
 except:
-    from G4AtlasApps import AtlasG4Eng
-    simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+    from G4AtlasApps.SimFlags import simFlags
+    simdict = simFlags.specialConfiguration.get_Value()
 
 assert "GMSBIndex" in simdict
 #if 2525 == simdict["GMSBIndex"]:
@@ -89,7 +89,7 @@ if doG4SimConfig:
     def gmsb_processlist():
         from G4AtlasApps import AtlasG4Eng
         AtlasG4Eng.G4Eng.gbl.G4Commands().process.list()
-    
+
     simFlags.InitFunctions.add_function("postInit", gmsb_processlist)
 
     def gmsb_setparams():
@@ -98,57 +98,14 @@ if doG4SimConfig:
 
         ## Assuming that GMSBIndex is an int here...
         GMSBIndex = int(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBIndex"])
-        
-        def modify_slepton_mass(name, mass):
-            slepton = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier(name)
-            slepton.SetParticleMass(mass)
-
 
         if GMSBIndex == 1: # generic neutralino to photon scenario
+            from G4AtlasApps.SimFlags import simFlags
+            simFlags.PhysicsOptions += ["GauginosPhysicsTool"]
 
-            GMSBNeutralino = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBNeutralino"])
-            GMSBTime = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBLifeTime"])
-            AtlasG4Eng.G4Eng.log.info("Generic GMSB neutralino to photon scenario (mass=%s MeV/time=%s ns)" % (GMSBNeutralino, GMSBTime))
-
-            AtlasG4Eng.G4Eng._ctrl.load("Gauginos")
-            NLsp=AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_0_1")
-            NLsp.SetParticleMass(GMSBNeutralino)
-            NLsp.SetParticleLifeTime(GMSBTime)
-            NLsp.Stable(False)
-            NLsp.AddDecayChannel("s_chi_0_1",1.,"s_G=gamma")
-
-            if AtlasG4Eng.G4Eng.Dict_SpecialConfiguration.has_key("GMSBGravitino"):
-                GMSBGravitino = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBGravitino"])
-                AtlasG4Eng.G4Eng.log.info("Adding gravitino mass (gravitino mass=%s keV)" % (GMSBGravitino*1E3))
-
-                Lsp=AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_G")
-                Lsp.SetParticleMass(GMSBGravitino)
-
-                del GMSBGravitino
-
-            del GMSBNeutralino, GMSBTime
-            
         elif GMSBIndex == 2 or GMSBIndex == 3 or GMSBIndex == 4: # generic stau scenario
-
-            GMSBStau    = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBStau"])
-            AtlasG4Eng.G4Eng.log.info("Generic GMSB stau scenario (stau=%s MeV)" % GMSBStau)
-
-            AtlasG4Eng.G4Eng._ctrl.load("Sleptons")
-            modify_slepton_mass("s_tau_plus_1",  GMSBStau)
-            modify_slepton_mass("s_tau_minus_1", GMSBStau)
-
-            if AtlasG4Eng.G4Eng.Dict_SpecialConfiguration.has_key("GMSBSlepton"):
-                GMSBSlepton = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration.get("GMSBSlepton", None))
-                AtlasG4Eng.G4Eng.log.info("Adding slepton mass to GMSB stau scenario (slepton=%s MeV)" % GMSBSlepton)
-
-                modify_slepton_mass("s_mu_plus_R",   GMSBSlepton)
-                modify_slepton_mass("s_mu_minus_R",  GMSBSlepton)
-                modify_slepton_mass("s_e_plus_R",    GMSBSlepton)
-                modify_slepton_mass("s_e_minus_R",   GMSBSlepton)
-
-                del GMSBSlepton
-
-            del GMSBStau
+            from G4AtlasApps.SimFlags import simFlags
+            simFlags.PhysicsOptions += ["SleptonsPhysicsTool"]
 
         del GMSBIndex
 
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
index 221e3de9aae91e6e4b273332fc9ede358d8accbd..e1619727bad04a9fff91587290df4853238c63c7 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
@@ -46,11 +46,11 @@ try:
         simdict = digitizationFlags.specialConfiguration.get_Value()
         doG4SimConfig = False
     else:
-        from G4AtlasApps import AtlasG4Eng
-        simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+        from G4AtlasApps.SimFlags import simFlags
+        simdict = simFlags.specialConfiguration.get_Value()
 except:
-    from G4AtlasApps import AtlasG4Eng
-    simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+    from G4AtlasApps.SimFlags import simFlags
+    simdict = simFlags.specialConfiguration.get_Value()
 
 assert "MASS" in simdict
 assert "GCHARGE" in simdict
@@ -65,13 +65,14 @@ if doG4SimConfig:
     simFlags.EquationOfMotion.set_On()
     simFlags.EquationOfMotion.set_Value_and_Lock("MonopoleEquationOfMotion")
     simFlags.G4Stepper.set_Value_and_Lock('ClassicalRK4')
+    simFlags.PhysicsOptions += ["MonopolePhysicsTool"]
 
-    def monopole_setupg4():
-        from G4AtlasApps import PyG4Atlas, AtlasG4Eng
-        AtlasG4Eng.G4Eng.load_Lib("Monopole")
-    simFlags.InitFunctions.add_function("preInitPhysics", monopole_setupg4)
-
-    if (not hasattr(simFlags, 'UseV2UserActions') or not simFlags.UseV2UserActions():
+    try:
+        # MT-compatible UserActions
+        from G4AtlasServices.G4AtlasServicesConfig import addAction
+        addAction("LooperKillerTool",['Step'],False)
+        addAction("HIPKillerTool",['Step'],False)
+    except:
         # this configures the non-MT UserActions
         try:
             from G4AtlasServices.G4AtlasUserActionConfig import UAStore
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
index 9d2c39d3d6aec5d0f93907972169a12176d3bafc..53e9a3f1b57d37dc6bc6f20d6881bc943d0abe5a 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
@@ -48,11 +48,11 @@ try:
         simdict = digitizationFlags.specialConfiguration.get_Value()
         doG4SimConfig = False
     else:
-        from G4AtlasApps import AtlasG4Eng
-        simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+        from G4AtlasApps.SimFlags import simFlags
+        simdict = simFlags.specialConfiguration.get_Value()
 except:
-    from G4AtlasApps import AtlasG4Eng
-    simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+    from G4AtlasApps.SimFlags import simFlags
+    simdict = simFlags.specialConfiguration.get_Value()
 
 assert "MASS" in simdict
 assert "CHARGE" in simdict
@@ -67,18 +67,14 @@ if doG4SimConfig:
     simFlags.EquationOfMotion.set_On()
     simFlags.EquationOfMotion.set_Value_and_Lock("MonopoleEquationOfMotion")
     simFlags.G4Stepper.set_Value_and_Lock('ClassicalRK4')
+    simFlags.PhysicsOptions += ["MonopolePhysicsTool"]
 
-    def monopole_setupg4():
-        from G4AtlasApps import PyG4Atlas, AtlasG4Eng
-        AtlasG4Eng.G4Eng.load_Lib("Monopole")
-    simFlags.InitFunctions.add_function("preInitPhysics", monopole_setupg4)
-
-    if (hasattr(simFlags, 'UseV2UserActions') and simFlags.UseV2UserActions()):
+    try:
         # MT-compatible UserActions
         from G4AtlasServices.G4AtlasServicesConfig import addAction
         addAction("LooperKillerTool",['Step'],False)
         addAction("HIPKillerTool",['Step'],False)
-    else:
+    except:
         # this configures the non-MT UserActions
         try:
             from G4AtlasServices.G4AtlasUserActionConfig import UAStore
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py
index 3c990b5ca9c1b4246ff91e095a9747e249dcfb3a..6246f780ac1160f00fd20f0edaaf4a655e5e10c8 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py
@@ -16,11 +16,11 @@ try:
         simdict = digitizationFlags.specialConfiguration.get_Value()
         doG4SimConfig = False
     else:
-        from G4AtlasApps import AtlasG4Eng
-        simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+        from G4AtlasApps.SimFlags import simFlags
+        simdict = simFlags.specialConfiguration.get_Value()
 except:
-    from G4AtlasApps import AtlasG4Eng
-    simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+    from G4AtlasApps.SimFlags import simFlags
+    simdict = simFlags.specialConfiguration.get_Value()
 
 quirk_mass = float(simdict["MASS"])
 quirk_charge = float(simdict["CHARGE"])
@@ -48,9 +48,5 @@ if doG4SimConfig:
         f.write("0\n")
     f.close()
 
-    def load_quirks_lib():
-        from G4AtlasApps import AtlasG4Eng
-        AtlasG4Eng.G4Eng.load_Lib("Quirks")
-    simFlags.InitFunctions.add_function("preInitPhysics", load_quirks_lib)
-
+    simFlags.PhysicsOptions += ["QuirksPhysicsTool"]
 del quirk_firststring, quirk_maxboost, quirk_maxmerge, quirk_debugenabled, quirk_debugdist, quirk_debugsteps, doG4SimConfig, simdict, f, quirk_mass, quirk_charge, quirk_pdgid, quirk_stringforce
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py
index a50c8b0b149b24bb07ba9b50e430874d2957ac01..791daa3ec89fdf908dbd280b58f665c1f402ad56 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py
@@ -356,11 +356,11 @@ try:
     simdict = digitizationFlags.specialConfiguration.get_Value()
     doG4SimConfig = False
   else:
-    from G4AtlasApps import AtlasG4Eng
-    simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+    from G4AtlasApps.SimFlags import simFlags
+    simdict = simFlags.specialConfiguration.get_Value()
 except:
-  from G4AtlasApps import AtlasG4Eng
-  simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration
+  from G4AtlasApps.SimFlags import simFlags
+  simdict = simFlags.specialConfiguration.get_Value()
 
 ## Compulsory keys
 assert "MASS" in simdict
@@ -379,10 +379,7 @@ if simdict.has_key("Mixing"):
 
 if doG4SimConfig:
   from G4AtlasApps.SimFlags import simFlags
-  def rhadrons_setupg4():
-    from G4AtlasApps import PyG4Atlas, AtlasG4Eng
-    AtlasG4Eng.G4Eng.load_Lib("RHadrons")
-  simFlags.InitFunctions.add_function("preInitPhysics", rhadrons_setupg4)
+  simFlags.PhysicsOptions += ["RHadronsPhysicsTool"]
 
 # In case we want to use Pythia for decays in line...
 if simdict.has_key("DECAYS"):