diff --git a/Reconstruction/eflowRec/share/PFlowHiveExOpts.py b/Reconstruction/eflowRec/share/PFlowHiveExOpts.py
index 7be8fb9571acf9dc69ed9044a4b96ad57fce9e7a..f2285e080a88c04316ba9a97a6fd35405ef5cd34 100644
--- a/Reconstruction/eflowRec/share/PFlowHiveExOpts.py
+++ b/Reconstruction/eflowRec/share/PFlowHiveExOpts.py
@@ -146,205 +146,7 @@ include( "CaloRec/CaloTopoCluster_jobOptions.py" )
 
 #PFlow
 
-from eflowRec.eflowRecConf import PFLeptonSelector
-PFLeptonSelector=PFLeptonSelector("PFLeptonSelector")
-topSequence += PFLeptonSelector
-
-from eflowRec.eflowRecConf import PFTrackSelector
-PFTrackSelector=PFTrackSelector("PFTrackSelector")
-
-from eflowRec.eflowRecConf import eflowTrackCaloDummyExtensionTool
-TrackCaloExtensionTool=eflowTrackCaloDummyExtensionTool()
-
-PFTrackSelector.trackExtrapolatorTool = TrackCaloExtensionTool
-
-from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool
-TrackSelectionTool = InDet__InDetTrackSelectionTool()
-
-from AthenaCommon.AppMgr import ToolSvc
-ToolSvc += TrackSelectionTool
-
-TrackSelectionTool.CutLevel = "TightPrimary"
-TrackSelectionTool.minPt = 500.0 
-
-PFTrackSelector.trackSelectionTool = TrackSelectionTool
-
-topSequence += PFTrackSelector
-
-from eflowRec.eflowRecConf import PFClusterSelector
-PFClusterSelector=PFClusterSelector("PFClusterSelector")
-
-topSequence += PFClusterSelector
-
-from eflowRec.eflowRecConf import PFAlgorithm
-PFAlgorithm = PFAlgorithm("PFAlgorithm")
-
-PFAlgorithm.SubtractionToolList  = []
-
-from eflowRec.eflowRecConf import PFCellLevelSubtractionTool
-PFCellLevelSubtractionTool = PFCellLevelSubtractionTool("PFCellLevelSubtractionTool")
-
-from eflowRec.eflowRecConf import eflowCellEOverPTool_mc12_JetETMiss
-CellEOverPTool=eflowCellEOverPTool_mc12_JetETMiss()
-
-PFCellLevelSubtractionTool.eflowCellEOverPTool=CellEOverPTool
-
-from eflowRec.eflowRecFlags import jobproperties
-if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-   PFCellLevelSubtractionTool.nMatchesInCellLevelSubtraction = -1
-else:
-   PFCellLevelSubtractionTool.nMatchesInCellLevelSubtraction = 1
-
-from eflowRec.eflowRecConf import PFTrackClusterMatchingTool
-MatchingTool = PFTrackClusterMatchingTool("CalObjBldMatchingTool")
-MatchingTool_Pull_02 = PFTrackClusterMatchingTool("MatchingTool_Pull_02")
-MatchingTool_Pull_015 = PFTrackClusterMatchingTool("MatchingTool_Pull_015")
-
-MatchingTool_Pull_015.TrackPositionType   = 'EM2EtaPhi' # str
-MatchingTool_Pull_015.ClusterPositionType = 'PlainEtaPhi' # str
-MatchingTool_Pull_015.DistanceType        = 'EtaPhiSquareDistance' # str
-MatchingTool_Pull_015.MatchCut = 0.15*0.15 # float
-PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_015 = MatchingTool_Pull_015
-
-MatchingTool_Pull_02.TrackPositionType   = 'EM2EtaPhi' # str
-MatchingTool_Pull_02.ClusterPositionType = 'PlainEtaPhi' # str
-MatchingTool_Pull_02.DistanceType        = 'EtaPhiSquareDistance' # str
-MatchingTool_Pull_02.MatchCut = 0.2*0.2 # float
-PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_02 = MatchingTool_Pull_02
-
-PFCellLevelSubtractionTool.PFTrackClusterMatchingTool = MatchingTool
-
-if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
-   MatchingTool.ClusterPositionType = 'PlainEtaPhi' # str
-   MatchingTool.DistanceType        = 'EtaPhiSquareDistance'
-   MatchingTool.MatchCut = 0.2*0.2 # float
-   
-PFAlgorithm.SubtractionToolList += [PFCellLevelSubtractionTool]
-
-from eflowRec.eflowRecConf import PFRecoverSplitShowersTool
-PFRecoverSplitShowersTool = PFRecoverSplitShowersTool("PFRecoverSplitShowersTool")
-
-CellEOverPTool_Recover=eflowCellEOverPTool_mc12_JetETMiss("eflowCellEOverPTool_mc12_JetETMiss_Recover")
-
-PFRecoverSplitShowersTool.eflowCellEOverPTool=CellEOverPTool_Recover
-
-if jobproperties.eflowRecFlags.recoverIsolatedTracks == True:
-   PFRecoverSplitShowersTool.RecoverIsolatedTracks = True
-   
-if jobproperties.eflowRecFlags.useUpdated2015ChargedShowerSubtraction == False:
-   PFRecoverSplitShowersTool.useUpdated2015ChargedShowerSubtraction = False
-
-MatchingTool_Recover = PFTrackClusterMatchingTool()
-MatchingTool_Recover.TrackPositionType   = 'EM2EtaPhi' # str
-MatchingTool_Recover.ClusterPositionType = 'PlainEtaPhi' # str
-MatchingTool_Recover.DistanceType        = 'EtaPhiSquareDistance' # str
-MatchingTool_Recover.MatchCut = 0.2*0.2 # float
-PFRecoverSplitShowersTool.PFTrackClusterMatchingTool = MatchingTool
-
-PFAlgorithm.SubtractionToolList += [PFRecoverSplitShowersTool]
-
-from eflowRec.eflowRecConf import PFMomentCalculatorTool
-PFMomentCalculatorTool = PFMomentCalculatorTool("PFMomentCalculatorTool")
-
-from CaloRec.CaloRecConf import CaloClusterMomentsMaker
-PFClusterMomentsMaker = CaloClusterMomentsMaker("PFClusterMomentsMaker")
-
-from CaloRec.CaloTopoClusterFlags import jobproperties
-
-from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault
-theCaloNoiseTool = CaloNoiseToolDefault()
-from AthenaCommon.AppMgr import ToolSvc
-ToolSvc += theCaloNoiseTool
-
-PFClusterMomentsMaker.MaxAxisAngle = 20*deg
-PFClusterMomentsMaker.WeightingOfNegClusters = jobproperties.CaloTopoClusterFlags.doTreatEnergyCutAsAbsolute() 
-PFClusterMomentsMaker.MinBadLArQuality = 4000
-PFClusterMomentsMaker.CaloNoiseTool = theCaloNoiseTool
-PFClusterMomentsMaker.UsePileUpNoise = True
-PFClusterMomentsMaker.TwoGaussianNoise = jobproperties.CaloTopoClusterFlags.doTwoGaussianNoise()
-PFClusterMomentsMaker.OutputLevel = INFO
-PFClusterMomentsMaker.MomentsNames = [
-   "FIRST_PHI" 
-   ,"FIRST_ETA"
-   ,"SECOND_R" 
-   ,"SECOND_LAMBDA"
-   ,"DELTA_PHI"
-   ,"DELTA_THETA"
-   ,"DELTA_ALPHA" 
-   ,"CENTER_X"
-   ,"CENTER_Y"
-   ,"CENTER_Z"
-   ,"CENTER_MAG"
-   ,"CENTER_LAMBDA"
-   ,"LATERAL"
-   ,"LONGITUDINAL"
-   ,"FIRST_ENG_DENS" 
-   ,"ENG_FRAC_EM" 
-   ,"ENG_FRAC_MAX" 
-   ,"ENG_FRAC_CORE" 
-   ,"FIRST_ENG_DENS" 
-   ,"SECOND_ENG_DENS"
-   ,"ISOLATION"
-   ,"EM_PROBABILITY"
-   ,"ENG_POS"
-   ,"ENG_BAD_CELLS"
-   ,"N_BAD_CELLS"
-   ,"BADLARQ_FRAC"
-   ,"AVG_LAR_Q"
-   ,"AVG_TILE_Q"
-   ,"SIGNIFICANCE"
-]
-
-PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker
-
-from eflowRec.eflowRecConf import PFClusterCollectionTool
-PFClusterCollectionTool_default = PFClusterCollectionTool("PFClusterCollectionTool")
-
-PFMomentCalculatorTool.PFClusterCollectionTool = PFClusterCollectionTool_default
-
-PFAlgorithm.BaseToolList = [PFMomentCalculatorTool]
-
-from eflowRec.eflowRecConf import PFLCCalibTool
-PFLCCalibTool = PFLCCalibTool("PFLCCalibTool")
-
-from eflowRec.eflowLocalHadCal import eflowLocalHadCal
-LocalHadCal = eflowLocalHadCal()
-Calib = LocalHadCal.eflowCaloClusterLocalCalib("PFLCCalibTool")
-CalibOO = LocalHadCal.eflowCaloClusterLocalCalibOO("PFLCCalibTool")
-CalibOOPi0 = LocalHadCal.eflowCaloClusterLocalCalibOOPi0("PFLCCalibTool")
-CalibDM = LocalHadCal.eflowCaloClusterLocalCalibDM("PFLCCalibTool")
-
-from CaloRec.CaloTopoClusterFlags import jobproperties
-if not (jobproperties.CaloTopoClusterFlags.doTopoClusterLocalCalib()):
-   #load local hadron calibration database, if not done so by CaloRec already
-   from CaloRec import CaloClusterTopoCoolFolder
-
-PFLCCalibTool.CaloClusterLocalCalib=Calib
-PFLCCalibTool.CaloClusterLocalCalibOOCC=CalibOO
-PFLCCalibTool.CaloClusterLocalCalibOOCCPi0=CalibOOPi0
-PFLCCalibTool.CaloClusterLocalCalibDM=CalibDM
-
-PFClusterCollectionTool_LCCalib = PFClusterCollectionTool("PFClusterCollectionTool_LCCalib")
-PFLCCalibTool.eflowRecClusterCollectionTool=PFClusterCollectionTool_LCCalib
-PFLCCalibTool.UseLocalWeight = False
-
-PFAlgorithm.BaseToolList += [PFLCCalibTool]
-
-topSequence += PFAlgorithm
-
-from eflowRec.eflowRecConf import PFOChargedCreatorAlgorithm
-PFOChargedCreatorAlgorithm = PFOChargedCreatorAlgorithm("PFOChargedCreatorAlgorithm")
-
-from TrackVertexAssociationTool.TrackVertexAssociationToolConf import CP__TightTrackVertexAssociationTool        
-PFlowTrackVertexAssociationTool = CP__TightTrackVertexAssociationTool(name="PFlowTightCPTool", dzSinTheta_cut=2.0, doPV=True)
-PFOChargedCreatorAlgorithm.TrackVertexAssociationTool = PFlowTrackVertexAssociationTool
-
-topSequence += PFOChargedCreatorAlgorithm
-
-from eflowRec.eflowRecConf import PFONeutralCreatorAlgorithm
-PFONeutralCreatorAlgorithm =  PFONeutralCreatorAlgorithm("PFONeutralCreatorAlgorithm")
-
-topSequence += PFONeutralCreatorAlgorithm
+include("eflowRec/PFlowMTConfig.py")
 
 import AthenaPoolCnvSvc.WriteAthenaPool
 logRecoOutputItemList_jobOptions = logging.getLogger( 'py:RecoOutputItemList_jobOptions' )
@@ -365,7 +167,7 @@ print StreamESD.ItemList
 #---------------------------------------------------------------------------------#
 # MT-specific code
 if nThreads >=1 :
-   include ( "PFlowHiveDeps.py" )
+   include ( "eflowRec/PFlowHiveDeps.py" )
 
 print "==========================================================================================\n"
 
diff --git a/Reconstruction/eflowRec/share/PFlowMTConfig.py b/Reconstruction/eflowRec/share/PFlowMTConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..06d50a810351f3411c8958f2a98eaa220aeffba4
--- /dev/null
+++ b/Reconstruction/eflowRec/share/PFlowMTConfig.py
@@ -0,0 +1,199 @@
+from eflowRec.eflowRecConf import PFLeptonSelector
+PFLeptonSelector=PFLeptonSelector("PFLeptonSelector")
+topSequence += PFLeptonSelector
+
+from eflowRec.eflowRecConf import PFTrackSelector
+PFTrackSelector=PFTrackSelector("PFTrackSelector")
+
+from eflowRec.eflowRecConf import eflowTrackCaloExtensionTool
+TrackCaloExtensionTool=eflowTrackCaloExtensionTool()
+
+PFTrackSelector.trackExtrapolatorTool = TrackCaloExtensionTool
+
+from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool
+TrackSelectionTool = InDet__InDetTrackSelectionTool()
+
+from AthenaCommon.AppMgr import ToolSvc
+ToolSvc += TrackSelectionTool
+
+TrackSelectionTool.CutLevel = "TightPrimary"
+TrackSelectionTool.minPt = 500.0 
+
+PFTrackSelector.trackSelectionTool = TrackSelectionTool
+
+topSequence += PFTrackSelector
+
+from eflowRec.eflowRecConf import PFClusterSelector
+PFClusterSelector=PFClusterSelector("PFClusterSelector")
+
+topSequence += PFClusterSelector
+
+from eflowRec.eflowRecConf import PFAlgorithm
+PFAlgorithm = PFAlgorithm("PFAlgorithm")
+
+PFAlgorithm.SubtractionToolList  = []
+
+from eflowRec.eflowRecConf import PFCellLevelSubtractionTool
+PFCellLevelSubtractionTool = PFCellLevelSubtractionTool("PFCellLevelSubtractionTool")
+
+from eflowRec.eflowRecConf import eflowCellEOverPTool_mc12_JetETMiss
+CellEOverPTool=eflowCellEOverPTool_mc12_JetETMiss()
+
+PFCellLevelSubtractionTool.eflowCellEOverPTool=CellEOverPTool
+
+from eflowRec.eflowRecFlags import jobproperties
+if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
+   PFCellLevelSubtractionTool.nMatchesInCellLevelSubtraction = -1
+else:
+   PFCellLevelSubtractionTool.nMatchesInCellLevelSubtraction = 1
+
+from eflowRec.eflowRecConf import PFTrackClusterMatchingTool
+MatchingTool = PFTrackClusterMatchingTool("CalObjBldMatchingTool")
+MatchingTool_Pull_02 = PFTrackClusterMatchingTool("MatchingTool_Pull_02")
+MatchingTool_Pull_015 = PFTrackClusterMatchingTool("MatchingTool_Pull_015")
+
+MatchingTool_Pull_015.TrackPositionType   = 'EM2EtaPhi' # str
+MatchingTool_Pull_015.ClusterPositionType = 'PlainEtaPhi' # str
+MatchingTool_Pull_015.DistanceType        = 'EtaPhiSquareDistance' # str
+MatchingTool_Pull_015.MatchCut = 0.15*0.15 # float
+PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_015 = MatchingTool_Pull_015
+
+MatchingTool_Pull_02.TrackPositionType   = 'EM2EtaPhi' # str
+MatchingTool_Pull_02.ClusterPositionType = 'PlainEtaPhi' # str
+MatchingTool_Pull_02.DistanceType        = 'EtaPhiSquareDistance' # str
+MatchingTool_Pull_02.MatchCut = 0.2*0.2 # float
+PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_02 = MatchingTool_Pull_02
+
+PFCellLevelSubtractionTool.PFTrackClusterMatchingTool = MatchingTool
+
+if jobproperties.eflowRecFlags.eflowAlgType == "EOverP":
+   MatchingTool.ClusterPositionType = 'PlainEtaPhi' # str
+   MatchingTool.DistanceType        = 'EtaPhiSquareDistance'
+   MatchingTool.MatchCut = 0.2*0.2 # float
+   
+PFAlgorithm.SubtractionToolList += [PFCellLevelSubtractionTool]
+
+from eflowRec.eflowRecConf import PFRecoverSplitShowersTool
+PFRecoverSplitShowersTool = PFRecoverSplitShowersTool("PFRecoverSplitShowersTool")
+
+CellEOverPTool_Recover=eflowCellEOverPTool_mc12_JetETMiss("eflowCellEOverPTool_mc12_JetETMiss_Recover")
+
+PFRecoverSplitShowersTool.eflowCellEOverPTool=CellEOverPTool_Recover
+
+if jobproperties.eflowRecFlags.recoverIsolatedTracks == True:
+   PFRecoverSplitShowersTool.RecoverIsolatedTracks = True
+   
+if jobproperties.eflowRecFlags.useUpdated2015ChargedShowerSubtraction == False:
+   PFRecoverSplitShowersTool.useUpdated2015ChargedShowerSubtraction = False
+
+MatchingTool_Recover = PFTrackClusterMatchingTool()
+MatchingTool_Recover.TrackPositionType   = 'EM2EtaPhi' # str
+MatchingTool_Recover.ClusterPositionType = 'PlainEtaPhi' # str
+MatchingTool_Recover.DistanceType        = 'EtaPhiSquareDistance' # str
+MatchingTool_Recover.MatchCut = 0.2*0.2 # float
+PFRecoverSplitShowersTool.PFTrackClusterMatchingTool = MatchingTool
+
+PFAlgorithm.SubtractionToolList += [PFRecoverSplitShowersTool]
+
+from eflowRec.eflowRecConf import PFMomentCalculatorTool
+PFMomentCalculatorTool = PFMomentCalculatorTool("PFMomentCalculatorTool")
+
+from CaloRec.CaloRecConf import CaloClusterMomentsMaker
+PFClusterMomentsMaker = CaloClusterMomentsMaker("PFClusterMomentsMaker")
+
+from CaloRec.CaloTopoClusterFlags import jobproperties
+
+from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault
+theCaloNoiseTool = CaloNoiseToolDefault()
+from AthenaCommon.AppMgr import ToolSvc
+ToolSvc += theCaloNoiseTool
+
+PFClusterMomentsMaker.MaxAxisAngle = 20*deg
+PFClusterMomentsMaker.WeightingOfNegClusters = jobproperties.CaloTopoClusterFlags.doTreatEnergyCutAsAbsolute() 
+PFClusterMomentsMaker.MinBadLArQuality = 4000
+PFClusterMomentsMaker.CaloNoiseTool = theCaloNoiseTool
+PFClusterMomentsMaker.UsePileUpNoise = True
+PFClusterMomentsMaker.TwoGaussianNoise = jobproperties.CaloTopoClusterFlags.doTwoGaussianNoise()
+PFClusterMomentsMaker.OutputLevel = INFO
+PFClusterMomentsMaker.MomentsNames = [
+   "FIRST_PHI" 
+   ,"FIRST_ETA"
+   ,"SECOND_R" 
+   ,"SECOND_LAMBDA"
+   ,"DELTA_PHI"
+   ,"DELTA_THETA"
+   ,"DELTA_ALPHA" 
+   ,"CENTER_X"
+   ,"CENTER_Y"
+   ,"CENTER_Z"
+   ,"CENTER_MAG"
+   ,"CENTER_LAMBDA"
+   ,"LATERAL"
+   ,"LONGITUDINAL"
+   ,"FIRST_ENG_DENS" 
+   ,"ENG_FRAC_EM" 
+   ,"ENG_FRAC_MAX" 
+   ,"ENG_FRAC_CORE" 
+   ,"FIRST_ENG_DENS" 
+   ,"SECOND_ENG_DENS"
+   ,"ISOLATION"
+   ,"EM_PROBABILITY"
+   ,"ENG_POS"
+   ,"ENG_BAD_CELLS"
+   ,"N_BAD_CELLS"
+   ,"BADLARQ_FRAC"
+   ,"AVG_LAR_Q"
+   ,"AVG_TILE_Q"
+   ,"SIGNIFICANCE"
+]
+
+PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker
+
+from eflowRec.eflowRecConf import PFClusterCollectionTool
+PFClusterCollectionTool_default = PFClusterCollectionTool("PFClusterCollectionTool")
+
+PFMomentCalculatorTool.PFClusterCollectionTool = PFClusterCollectionTool_default
+
+PFAlgorithm.BaseToolList = [PFMomentCalculatorTool]
+
+from eflowRec.eflowRecConf import PFLCCalibTool
+PFLCCalibTool = PFLCCalibTool("PFLCCalibTool")
+
+from eflowRec.eflowLocalHadCal import eflowLocalHadCal
+LocalHadCal = eflowLocalHadCal()
+Calib = LocalHadCal.eflowCaloClusterLocalCalib("PFLCCalibTool")
+CalibOO = LocalHadCal.eflowCaloClusterLocalCalibOO("PFLCCalibTool")
+CalibOOPi0 = LocalHadCal.eflowCaloClusterLocalCalibOOPi0("PFLCCalibTool")
+CalibDM = LocalHadCal.eflowCaloClusterLocalCalibDM("PFLCCalibTool")
+
+from CaloRec.CaloTopoClusterFlags import jobproperties
+if not (jobproperties.CaloTopoClusterFlags.doTopoClusterLocalCalib()):
+   #load local hadron calibration database, if not done so by CaloRec already
+   from CaloRec import CaloClusterTopoCoolFolder
+
+PFLCCalibTool.CaloClusterLocalCalib=Calib
+PFLCCalibTool.CaloClusterLocalCalibOOCC=CalibOO
+PFLCCalibTool.CaloClusterLocalCalibOOCCPi0=CalibOOPi0
+PFLCCalibTool.CaloClusterLocalCalibDM=CalibDM
+
+PFClusterCollectionTool_LCCalib = PFClusterCollectionTool("PFClusterCollectionTool_LCCalib")
+PFLCCalibTool.eflowRecClusterCollectionTool=PFClusterCollectionTool_LCCalib
+PFLCCalibTool.UseLocalWeight = False
+
+PFAlgorithm.BaseToolList += [PFLCCalibTool]
+
+topSequence += PFAlgorithm
+
+from eflowRec.eflowRecConf import PFOChargedCreatorAlgorithm
+PFOChargedCreatorAlgorithm = PFOChargedCreatorAlgorithm("PFOChargedCreatorAlgorithm")
+
+from TrackVertexAssociationTool.TrackVertexAssociationToolConf import CP__TightTrackVertexAssociationTool        
+PFlowTrackVertexAssociationTool = CP__TightTrackVertexAssociationTool(name="PFlowTightCPTool", dzSinTheta_cut=2.0, doPV=True)
+PFOChargedCreatorAlgorithm.TrackVertexAssociationTool = PFlowTrackVertexAssociationTool
+
+topSequence += PFOChargedCreatorAlgorithm
+
+from eflowRec.eflowRecConf import PFONeutralCreatorAlgorithm
+PFONeutralCreatorAlgorithm =  PFONeutralCreatorAlgorithm("PFONeutralCreatorAlgorithm")
+
+topSequence += PFONeutralCreatorAlgorithm
diff --git a/Reconstruction/eflowRec/src/PFAlgorithm.cxx b/Reconstruction/eflowRec/src/PFAlgorithm.cxx
index be9927f67b9fff368e56fb8cd1835fd87745d388..1064e0ef8b73584df9bb0b41f81feb1d619c9941 100644
--- a/Reconstruction/eflowRec/src/PFAlgorithm.cxx
+++ b/Reconstruction/eflowRec/src/PFAlgorithm.cxx
@@ -34,18 +34,20 @@ StatusCode PFAlgorithm::execute(){
 
   ATH_CHECK(m_caloClustersWriteHandle.record(std::make_unique<xAOD::CaloClusterContainer>(),std::make_unique<xAOD::CaloClusterAuxContainer>()));
   ATH_MSG_DEBUG("CaloClusterWriteHandle has container of size" << m_caloClustersWriteHandle->size());
+
+  eflowRecTrackContainer localEFlowRecTrackContainer(*m_eflowRecTracksReadHandle.ptr());
+  eflowRecClusterContainer localEFlowRecClusterContainer(*m_eflowRecClustersReadHandle.ptr());
   
   /* Run the SubtractionTools */
   for (auto thisIPFSubtractionTool : m_IPFSubtractionTools){
-    thisIPFSubtractionTool->execute(theElowCaloObjectContainer,const_cast<eflowRecTrackContainer*>(m_eflowRecTracksReadHandle.ptr()),const_cast<eflowRecClusterContainer*>(m_eflowRecClustersReadHandle.ptr()),*(m_caloClustersWriteHandle.ptr()));
+    thisIPFSubtractionTool->execute(theElowCaloObjectContainer,&localEFlowRecTrackContainer,&localEFlowRecClusterContainer,*(m_caloClustersWriteHandle.ptr()));
   }
 
   /* Run the other AglTools */
   for (auto thisIPFBaseTool :  m_IPFBaseTools){
     thisIPFBaseTool->execute(theElowCaloObjectContainer,*(m_caloClustersWriteHandle.ptr()));
   }
-  
-  
+    
   return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/eflowRec/src/PFOChargedCreatorAlgorithm.cxx b/Reconstruction/eflowRec/src/PFOChargedCreatorAlgorithm.cxx
index 56cd35bfa376c9ce11e636c2d94e2ccfe96d0100..0a9fddf6ea0157f167ad5203059f39111b4045e3 100644
--- a/Reconstruction/eflowRec/src/PFOChargedCreatorAlgorithm.cxx
+++ b/Reconstruction/eflowRec/src/PFOChargedCreatorAlgorithm.cxx
@@ -48,7 +48,7 @@ StatusCode  PFOChargedCreatorAlgorithm::execute(){
 
   ATH_MSG_DEBUG("Processing eflowCaloObjectContainer");
 
-  m_chargedPFOContainerWriteHandle.record(std::make_unique<xAOD::PFOContainer>(),std::make_unique<xAOD::PFOAuxContainer>());
+  ATH_CHECK(m_chargedPFOContainerWriteHandle.record(std::make_unique<xAOD::PFOContainer>(),std::make_unique<xAOD::PFOAuxContainer>()));
   
   /* Create Charged PFOs from all eflowCaloObjects */
   unsigned int nEFCaloObs = m_eflowCaloObjectContainerReadHandle->size();
diff --git a/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx b/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx
index a2e9d60c80644a72489cbe9bd554ab70a4da7850..9b8e445a04c5f36005a9053847226751df99480c 100644
--- a/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx
+++ b/Reconstruction/eflowRec/src/PFONeutralCreatorAlgorithm.cxx
@@ -32,8 +32,8 @@ StatusCode PFONeutralCreatorAlgorithm::execute(){
 
   ATH_MSG_DEBUG("Executing");
   
-  m_neutralPFOContainerWriteHandle.record(std::make_unique<xAOD::PFOContainer>(),std::make_unique<xAOD::PFOAuxContainer>());
-  if (m_LCMode) m_neutralPFOContainerWriteHandle_nonModified.record(std::make_unique<xAOD::PFOContainer>(),std::make_unique<xAOD::PFOAuxContainer>());
+  ATH_CHECK(m_neutralPFOContainerWriteHandle.record(std::make_unique<xAOD::PFOContainer>(),std::make_unique<xAOD::PFOAuxContainer>()));
+  if (m_LCMode) ATH_CHECK(m_neutralPFOContainerWriteHandle_nonModified.record(std::make_unique<xAOD::PFOContainer>(),std::make_unique<xAOD::PFOAuxContainer>()));
   
   /* Create Neutral PFOs from all eflowCaloObjects */
   unsigned int nEFCaloObs =  m_eflowCaloObjectContainerReadHandle->size();