diff --git a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h
index c878746efc7d27b70ffe756f4ea597129d88bb11..450a29a461a9a63a8abfe6e2c71990b0ecdee449 100644
--- a/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h
+++ b/Reconstruction/PanTau/PanTauAlgs/PanTauAlgs/PanTauProcessor.h
@@ -54,10 +54,14 @@ namespace PanTau
        PanTauProcessor(const std::string& name);
        ~PanTauProcessor();
 
-       virtual StatusCode          initialize();
-       virtual StatusCode          finalize();
-       virtual StatusCode          execute(xAOD::TauJet& pTau);
-       virtual StatusCode          executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode initialize();
+       virtual StatusCode finalize();
+       virtual StatusCode execute(xAOD::TauJet& pTau);
+       virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+       virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
        virtual StatusCode eventInitialize();
        virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
index 585dc25e556d92120775acff8c7fdbcda1a89252..293efbb4d853e044786c093253dc44de3ab36fd9 100644
--- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
+++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
@@ -375,20 +375,12 @@ def getPi0ClusterFinder():
     
     if _name in cached_instances:
         return cached_instances[_name]
-    
-    from CaloRec.CaloRecConf import CaloCellContainerFinalizerTool
-    TauCellContainerFinalizer = CaloCellContainerFinalizerTool(name=sPrefix+'tauPi0CellContainerFinalizer')
-    
-    from AthenaCommon.AppMgr import ToolSvc
-    ToolSvc += TauCellContainerFinalizer
-    
+
     from tauRecTools.tauRecToolsConf import TauPi0CreateROI
     TauPi0CreateROI = TauPi0CreateROI(name = _name,
                                       #        CaloWeightTool = getCellWeightTool(),
                                       #        ExtrapolateToCaloTool = getExtrapolateToCaloTool(),
-                                      CellMakerTool = TauCellContainerFinalizer,
-                                      Key_caloCellInputContainer="AllCalo", 
-                                      Key_tauCaloOutputContainer="TauCommonPi0Cells"
+                                      Key_caloCellInputContainer="AllCalo"
                                       )
     
     cached_instances[_name] = TauPi0CreateROI
@@ -501,8 +493,7 @@ def getTauShotFinder():
                                   MinPtCut              = shotPtCut_1Photon,
                                   AutoDoubleShotCut     = shotPtCut_2Photons,
                                   MergedBDTScoreCut     = (-9999999.,-9999999.,-9999999.,-9999999.,-9999999.),
-                                  Key_caloCellInputContainer="AllCalo",
-                                  Key_tauPFOOutputContainer="TauShotParticleFlowObjects"
+                                  Key_caloCellInputContainer="AllCalo"
                                   )
     cached_instances[_name] = TauShotFinder
     return TauShotFinder
diff --git a/Reconstruction/tauRec/python/TauRecBuilder.py b/Reconstruction/tauRec/python/TauRecBuilder.py
index 1289f131d318079f297512a7f1ba9da61d44110b..84155b0f1d31cd4be59da9594ae86a1da0eb3318 100644
--- a/Reconstruction/tauRec/python/TauRecBuilder.py
+++ b/Reconstruction/tauRec/python/TauRecBuilder.py
@@ -142,53 +142,53 @@ class TauRecCoreBuilder ( TauRecConfigured ) :
                 
             ### TauRecPi0EflowProcessor ###
             # Tools in this section were originally in TauRecPi0EflowProcessor
-            if self.doPi0Clus: tools.append(taualgs.getPi0ClusterCreator())
-
+            # if self.doPi0Clus: tools.append(taualgs.getPi0ClusterCreator())
+            
             ###############################
 
             ### TauRecVariablesProcessor ###
             # Tools in this section were originally in TauRecVariablesProcessor
-            if InDetFlags.doVertexFinding():
-                tools.append(taualgs.getTauVertexVariables())
+            #if InDetFlags.doVertexFinding():
+             #   tools.append(taualgs.getTauVertexVariables())
             
-            tools.append(taualgs.getTauCommonCalcVars())
-            tools.append(taualgs.getTauSubstructure())
+            #tools.append(taualgs.getTauCommonCalcVars())
+            #tools.append(taualgs.getTauSubstructure())
 
-            if self.doPi0Clus: 
-                tools.append(taualgs.getPi0ClusterScaler())
-                tools.append(taualgs.getPi0ScoreCalculator())
+            #if self.doPi0Clus: 
+             #   tools.append(taualgs.getPi0ClusterScaler())
+              #  tools.append(taualgs.getPi0ScoreCalculator())
                 # SWITCHED OFF SELECTOR< SINCE NO CHARGED PFOS AVAILABLE ATM
-                tools.append(taualgs.getPi0Selector())
+               # tools.append(taualgs.getPi0Selector())
 
-            tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
+            #tools.append(taualgs.getEnergyCalibrationLC(correctEnergy=False, correctAxis=True, postfix='_onlyAxis'))
 
             # PanTau:
-            if tauFlags.doPanTau() :
-                import PanTauAlgs.JobOptions_Main_PanTau as pantau
-                tools.append(pantau.getPanTau())
+            #if tauFlags.doPanTau() :
+             #   import PanTauAlgs.JobOptions_Main_PanTau as pantau
+              #  tools.append(pantau.getPanTau())
  
             # these tools need pantau info
-            tools.append(taualgs.getCombinedP4FromRecoTaus())
-            tools.append(taualgs.getMvaTESVariableDecorator())
-            tools.append(taualgs.getMvaTESEvaluator())
-
-            if tauFlags.doRunTauDiscriminant():
-                tools.append(taualgs.getTauIDVarCalculator())
-                tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT1P", weightsFile="vars2016_pt_gamma_1p_isofix.root", minNTracks=0, maxNTracks=1)) #update config?
-                tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT3P", weightsFile="vars2016_pt_gamma_3p_isofix.root", minNTracks=2, maxNTracks=1000)) #update config?
-                tools.append(taualgs.getTauWPDecoratorJetBDT())
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_def", weightsFile="", outputVarName="BDTEleScore"))#just inits values
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_bar", 
-                                                           weightsFile="EleBDT1PBar.root", minNTracks=1, maxAbsTrackEta=1.37, 
-                                                           outputVarName="BDTEleScore")) #update config?
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end1", 
-                                                           weightsFile="EleBDT1PEnd1.root", minNTracks=1, minAbsTrackEta=1.37, 
-                                                           maxAbsTrackEta=2.0, outputVarName="BDTEleScore")) #update config?
-                tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end23", 
-                                                           weightsFile="EleBDT1PEnd23.root", minNTracks=1, minAbsTrackEta=2.0, 
-                                                           maxAbsTrackEta=3.0, outputVarName="BDTEleScore")) #update config?
-                tools.append(taualgs.getTauWPDecoratorEleBDT())
-                tools.append(taualgs.getTauEleOLRDecorator())
+            #tools.append(taualgs.getCombinedP4FromRecoTaus())
+            #tools.append(taualgs.getMvaTESVariableDecorator())
+            #tools.append(taualgs.getMvaTESEvaluator())
+
+            #if tauFlags.doRunTauDiscriminant():
+                #tools.append(taualgs.getTauIDVarCalculator())
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT1P", weightsFile="vars2016_pt_gamma_1p_isofix.root", minNTracks=0, maxNTracks=1)) #update config?
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauJetBDT3P", weightsFile="vars2016_pt_gamma_3p_isofix.root", minNTracks=2, maxNTracks=1000)) #update config?
+                #tools.append(taualgs.getTauWPDecoratorJetBDT())
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_def", weightsFile="", outputVarName="BDTEleScore"))#just inits values
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_bar", 
+                 #                                          weightsFile="EleBDT1PBar.root", minNTracks=1, maxAbsTrackEta=1.37, 
+                  #                                         outputVarName="BDTEleScore")) #update config?
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end1", 
+                 #                                          weightsFile="EleBDT1PEnd1.root", minNTracks=1, minAbsTrackEta=1.37, 
+                  #                                         maxAbsTrackEta=2.0, outputVarName="BDTEleScore")) #update config?
+                #tools.append(taualgs.getTauJetBDTEvaluator("TauEleBDT_end23", 
+                 #                                          weightsFile="EleBDT1PEnd23.root", minNTracks=1, minAbsTrackEta=2.0, 
+                  #                                         maxAbsTrackEta=3.0, outputVarName="BDTEleScore")) #update config?
+                #tools.append(taualgs.getTauWPDecoratorEleBDT())
+                #tools.append(taualgs.getTauEleOLRDecorator())
                 
             
             ################################
diff --git a/Reconstruction/tauRec/python/TauRecConfigured.py b/Reconstruction/tauRec/python/TauRecConfigured.py
index a8d97758a721525e936684437ae51e1e2dc6d7ad..2598cf77d713dfcfe491d2f166cf4e7b8efba1bb 100644
--- a/Reconstruction/tauRec/python/TauRecConfigured.py
+++ b/Reconstruction/tauRec/python/TauRecConfigured.py
@@ -30,33 +30,57 @@ class TauRecConfigured ( Configured ) :
         self.msglevel = msglevel
         from tauRec.tauRecConf import TauProcessorAlg 
         from tauRec.tauRecFlags import tauFlags
+        from CaloRec.CaloRecConf import CaloCellContainerFinalizerTool
+        # add calo cell finalizer tool
+        TauCellContainerFinalizer = CaloCellContainerFinalizerTool(name='tauRec_tauPi0CellContainerFinalizer')
+        from AthenaCommon.AppMgr import ToolSvc
+        ToolSvc += TauCellContainerFinalizer
+
         self._TauProcessorAlgHandle = TauProcessorAlg ( name=self.name+'Alg',
                                                         Key_jetInputContainer="AntiKt4LCTopoJets",
-                                                        Key_tauOutputContainer="TauJets",
+                                                        Key_tauOutputContainer="tmp_TauJets",
                                                         Key_tauTrackOutputContainer="TauTracks",
+                                                        Key_tauShotClusOutputContainer="TauShotClusters",
+                                                        Key_tauShotPFOOutputContainer="TauShotParticleFlowObjects",
+                                                        Key_tauPi0CellOutputContainer="TauCommonPi0Cells",
                                                         #MaxEta = 2.5,                                                                         
                                                         MaxEta = tauFlags.tauRecSeedMaxEta(),
                                                         MinPt = 10.*GeV,
-                                                        doCreateTauContainers = True)
+                                                        doCreateTauContainers = True,
+                                                        CellMakerTool = TauCellContainerFinalizer)
 
         Configured.__init__(self, ignoreExistingDataObject=ignoreExistingDataObject)
 
 
     def WrapTauRecToolExecHandle(self, tool=None ):
+        print "WrapToolsNone"
+
         self.TauProcessorAlgHandle().Tools = tool
         #self.TauProcessorAlgHandle().name = tool.name+'Alg'
         from AthenaCommon.AlgSequence import AlgSequence
 
         topSequence = AlgSequence()
 
+        from AthenaCommon.AlgScheduler import AlgScheduler
+        AlgScheduler.ShowDataDependencies(True)
+        AlgScheduler.ShowControlFlow(True)
+        
         from SGComps.SGCompsConf import SGInputLoader
         # not needed? There by default now?
         topSequence += SGInputLoader()
         topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'),
                                            ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ]
+
         topSequence += self.TauProcessorAlgHandle()
 
+        # separate algorithm, from CaloRec
+        #if self.doPi0Clus:
+        #    import tauRec.Pi0ClusterMakerHolder as pi0alg
+        #    topSequence += pi0alg.getTauPi0ClusterMaker()
+
+
     def WrapTauRecToolExecHandles(self, tools=[]):
+
         self.TauProcessorAlgHandle().Tools = tools
         for tool in tools:
             self.TauProcessorAlghandle().tool.getFullName = tool
@@ -69,6 +93,7 @@ class TauRecConfigured ( Configured ) :
         topSequence += SGInputLoader(OutputLevel=INFO)
         topSequence.SGInputLoader.Load = [ ('xAOD::JetContainer','AntiKt4LCTopoJets'), ('xAOD::VertexContainer', 'PrimaryVertices'),
                                            ('xAOD::TrackParticleContainer','InDetTrackParticles'), ('CaloCellContainer','AllCalo') ]
+
         topSequence += self.TauProcessorAlgHandle()
 
 
diff --git a/Reconstruction/tauRec/share/run_tau_standalone.py b/Reconstruction/tauRec/share/run_tau_standalone.py
index 66f34c6e051cf31d6caef6ed8a8b4dc0edc0322a..959074d07d0908141e38c66ae6fb8ceba6ba6445 100644
--- a/Reconstruction/tauRec/share/run_tau_standalone.py
+++ b/Reconstruction/tauRec/share/run_tau_standalone.py
@@ -106,9 +106,11 @@ from tauRec.TauRecBuilder import TauRecCoreBuilder
 TauRecCoreBuilder(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 
 #include("tauRec/Pi0ClusterMaker_Crakow_jobOptions.py")
-#if _doPi0Clus:
-#    include("tauRec/Pi0ClusterMaker_jobOptions.py")
+if _doPi0Clus:
+   include("tauRec/Pi0ClusterMaker_jobOptions.py")
 
+from tauRec.TauRecRunner import TauRecRunner
+TauRecRunner(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 
 # minimal set of job options to run tau reco on an ESD file
 # uses main TauRecRunner script
diff --git a/Reconstruction/tauRec/share/tauRec_jobOptions.py b/Reconstruction/tauRec/share/tauRec_jobOptions.py
index d476ad5ea9c19214f6371e2c7eb212205ae56b42..1e02637f27e5e626510b5dd680595da520a46540 100644
--- a/Reconstruction/tauRec/share/tauRec_jobOptions.py
+++ b/Reconstruction/tauRec/share/tauRec_jobOptions.py
@@ -32,8 +32,11 @@ TauRecCoreBuilder(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 if _doPi0Clus:
     include("tauRec/Pi0ClusterMaker_jobOptions.py")
 
-#from tauRec.TauRecBuilder import TauRecPi0EflowProcessor
-#TauRecPi0EflowProcessor(doPi0Clus=_doPi0Clus)
+from tauRec.TauRecBuilder import TauRecPi0EflowProcessor
+TauRecPi0EflowProcessor(doPi0Clus=_doPi0Clus)
+
+from tauRec.TauRecRunner import TauRecRunner
+TauRecRunner(doPi0Clus=_doPi0Clus, doTJVA=_doTJVA)
 
 #from tauRec.TauRecBuilder import TauRecVariablesProcessor
 #TauRecVariablesProcessor(doPi0Clus=_doPi0Clus)
diff --git a/Reconstruction/tauRec/src/TauProcessorAlg.cxx b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
index 8f50e80dc3b7f0bb1bab0ce61906f700835d9912..ad3fb9329f17ad7091c351425df0ce676a3089d4 100644
--- a/Reconstruction/tauRec/src/TauProcessorAlg.cxx
+++ b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
@@ -19,6 +19,8 @@
 #include "StoreGate/ReadHandle.h"
 #include "StoreGate/WriteHandle.h"
 
+#include "CaloInterface/ICaloCellMakerTool.h"
+#include "NavFourMom/INavigable4MomentumCollection.h"
 
 //-----------------------------------------------------------------------------
 // Constructor
@@ -30,12 +32,14 @@ m_tools(this), //make tools private
 m_maxEta(2.5),
 m_minPt(10000),
 m_doCreateTauContainers(false),
-m_data()
+m_data(),
+m_cellMakerTool("")
 {
   declareProperty("Tools", m_tools);
   declareProperty("MaxEta", m_maxEta);
   declareProperty("MinPt", m_minPt);
   declareProperty("doCreateTauContainers", m_doCreateTauContainers);
+  declareProperty("CellMakerTool", m_cellMakerTool);
 }
 
 //-----------------------------------------------------------------------------
@@ -51,6 +55,7 @@ StatusCode TauProcessorAlg::initialize() {
 
 
     //ATH_MSG_INFO("FF::TauProcessorAlg :: initialize()");
+  CHECK( m_cellMakerTool.retrieve() );
 
     //-------------------------------------------------------------------------
     // No tools allocated!
@@ -99,6 +104,8 @@ StatusCode TauProcessorAlg::initialize() {
     ATH_CHECK( m_tauOutputContainer.initialize() );
     ATH_CHECK( m_tauTrackOutputContainer.initialize() );
     ATH_CHECK( m_tauShotClusOutputContainer.initialize() );
+    ATH_CHECK( m_tauShotPFOOutputContainer.initialize() );
+    ATH_CHECK( m_tauPi0CellOutputContainer.initialize() );
 
     return StatusCode::SUCCESS;
 }
@@ -163,7 +170,6 @@ StatusCode TauProcessorAlg::execute() {
       pTauTrackAuxCont = new xAOD::TauTrackAuxContainer();
       pTauTrackCont->setStore( pTauTrackAuxCont );
 
-
     } else {
       //-------------------------------------------------------------------------                                             
       // retrieve Tau Containers from StoreGate                                                                                     
@@ -208,6 +214,18 @@ StatusCode TauProcessorAlg::execute() {
     ATH_MSG_DEBUG("  write: " << tauShotClusHandle.key() << " = " << "..." );
     ATH_CHECK(tauShotClusHandle.record(std::unique_ptr<xAOD::CaloClusterContainer>{tauShotClusContainer}, std::unique_ptr<xAOD::CaloClusterAuxContainer>{tauShotClusAuxStore}));
 
+    SG::WriteHandle<xAOD::PFOContainer> tauShotPFOHandle( m_tauShotPFOOutputContainer );
+    xAOD::PFOContainer* tauShotPFOContainer = new xAOD::PFOContainer();
+    xAOD::PFOAuxContainer* tauShotPFOAuxStore = new xAOD::PFOAuxContainer();
+    tauShotPFOContainer->setStore(tauShotPFOAuxStore);
+    ATH_MSG_DEBUG("  write: " << tauShotPFOHandle.key() << " = " << "..." );
+    ATH_CHECK(tauShotPFOHandle.record(std::unique_ptr<xAOD::PFOContainer>{tauShotPFOContainer}, std::unique_ptr<xAOD::PFOAuxContainer>{tauShotPFOAuxStore}));
+
+    SG::WriteHandle<CaloCellContainer> tauPi0CellHandle( m_tauPi0CellOutputContainer );
+    CaloCellContainer* Pi0CellContainer = new CaloCellContainer();
+    ATH_MSG_DEBUG("  write: " << tauPi0CellHandle.key() << " = " << "..." );
+    ATH_CHECK(tauPi0CellHandle.record(std::unique_ptr<CaloCellContainer>(Pi0CellContainer)));
+
     //---------------------------------------------------------------------                                                        
     // Loop over seeds
     //---------------------------------------------------------------------                                                 
@@ -249,7 +267,11 @@ StatusCode TauProcessorAlg::execute() {
 	ATH_MSG_INFO("ProcessorAlg Invoking tool " << (*itT)->name());
 	
 	if ( (*itT)->name().find("ShotFinder") != std::string::npos){
-	  sc = (*itT)->executeCaloClus(*pTau, *tauShotClusContainer);
+	  sc = (*itT)->executeShotFinder(*pTau, *tauShotClusContainer, *tauShotPFOContainer);
+	}
+	else if ( (*itT)->name().find("Pi0CreateROI") != std::string::npos){
+	  ATH_MSG_INFO("EXEC PI0CREATEROI");
+	  sc = (*itT)->executePi0CreateROI(*pTau, *Pi0CellContainer);
 	}
 	else {
 	  sc = (*itT)->execute(*pTau);
@@ -292,6 +314,14 @@ StatusCode TauProcessorAlg::execute() {
 	return StatusCode::FAILURE;
     }
 
+    // Check this is needed for the cell container?
+    // symlink as INavigable4MomentumCollection (as in CaloRec/CaloCellMaker)
+    ATH_CHECK(evtStore()->symLink(Pi0CellContainer, static_cast<INavigable4MomentumCollection*> (0)));
+    //---------------------------------------------------------------------
+    // use the m_cellMakerTool to finalize the custom CaloCellContainer
+    //---------------------------------------------------------------------
+    CHECK( m_cellMakerTool->process(static_cast<CaloCellContainer*> (Pi0CellContainer)) );
+
 
   if (sc.isSuccess()) {
     ATH_MSG_VERBOSE("The tau candidate container has been modified");
diff --git a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
index 1145e173d4aac89439549b1f4d7883561374feeb..e196ff41666436c0b40f082aa7cdacc311ddc664 100644
--- a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
+++ b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
@@ -26,6 +26,8 @@
  * @brief       Main class for tau candidate processing.
  */
 
+class ICaloCellMakerTool;
+
 class TauProcessorAlg: public AthAlgorithm
 {
     public:
@@ -57,10 +59,16 @@ class TauProcessorAlg: public AthAlgorithm
         //ToolHandleArray<ITauToolExecBase>  m_tools;
 	TauEventData m_data;
 
+	/** @brief tool handles */
+	ToolHandle<ICaloCellMakerTool> m_cellMakerTool;
+
 	SG::ReadHandleKey<xAOD::JetContainer> m_jetInputContainer{this,"Key_jetInputContainer","AntiKt4LCTopoJets","input jet key"};
-	SG::WriteHandleKey<xAOD::TauJetContainer> m_tauOutputContainer{this,"Key_tauOutputContainer","TauJets","output tau data key"};
+	SG::WriteHandleKey<xAOD::TauJetContainer> m_tauOutputContainer{this,"Key_tauOutputContainer","tmp_TauJets","output tau data key"};
 	SG::WriteHandleKey<xAOD::TauTrackContainer> m_tauTrackOutputContainer{this,"Key_tauTrackOutputContainer","TauTracks","output tau tracks data key"};
 	SG::WriteHandleKey<xAOD::CaloClusterContainer> m_tauShotClusOutputContainer{this,"Key_tauShotClusOutputContainer", "TauShotClusters", "tau shot clusters out key"};
+	SG::WriteHandleKey<xAOD::PFOContainer> m_tauShotPFOOutputContainer{this,"Key_tauShotPFOOutputContainer", "TauShotParticleFlowObjects", "tau pfo out key"};
+	SG::WriteHandleKey<CaloCellContainer> m_tauPi0CellOutputContainer{this,"Key_tauPi0CellOutputContainer","TauCommonPi0Cells","output calo cell key"};
+
 	
 };
 
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.h b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
index 204fb5836dff071eed262b49de93c9669259f8ec..7b00ba9572095325fda12963085d5e2cda09951e 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.h
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
@@ -41,7 +41,11 @@ public:
     virtual void print() const ;
 
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }  
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode eventFinalize();
 
diff --git a/Reconstruction/tauRecTools/src/LockTauContainers.h b/Reconstruction/tauRecTools/src/LockTauContainers.h
index 1b2b38299322649aedaabf5ed43a13ff78fecc75..3e3b6dc0e33c605469a153966fd7033ee64e7b5b 100644
--- a/Reconstruction/tauRecTools/src/LockTauContainers.h
+++ b/Reconstruction/tauRecTools/src/LockTauContainers.h
@@ -25,7 +25,11 @@ class LockTauContainers : public TauRecToolBase
         virtual StatusCode initialize();
         virtual StatusCode finalize();  
         virtual StatusCode execute(xAOD::TauJet&)      { return StatusCode::SUCCESS; }
-	virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
         virtual StatusCode eventFinalize();
 	virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
 
diff --git a/Reconstruction/tauRecTools/src/PhotonConversionPID.h b/Reconstruction/tauRecTools/src/PhotonConversionPID.h
index 359b06219626c3735dd3d91bf89304e1bcbf74fd..8150ab6d2c2cb42d47f476f8f29e697de2318e4c 100644
--- a/Reconstruction/tauRecTools/src/PhotonConversionPID.h
+++ b/Reconstruction/tauRecTools/src/PhotonConversionPID.h
@@ -33,7 +33,11 @@ public:
     virtual StatusCode finalize();
     virtual StatusCode eventFinalize();
     virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
diff --git a/Reconstruction/tauRecTools/src/PhotonConversionVertex.h b/Reconstruction/tauRecTools/src/PhotonConversionVertex.h
index 42fcb7fc60fd3a5255542169254a2b4fddc84afe..0e61a3ea3df20bbcb87325c99ca6bcfadb3a1b2e 100644
--- a/Reconstruction/tauRecTools/src/PhotonConversionVertex.h
+++ b/Reconstruction/tauRecTools/src/PhotonConversionVertex.h
@@ -45,10 +45,14 @@ public:
     //-------------------------------------------------------------
     virtual StatusCode initialize();
     virtual StatusCode finalize();
+    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
     virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
 
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.h b/Reconstruction/tauRecTools/src/TauAxisSetter.h
index d29e80bdf85a1fcfb957db6f2e07f32edf6556a9..f390b435db434cda73148e6d87886b5c1ef8349f 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.h
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.h
@@ -31,11 +31,16 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
+    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+
 
 
 private:
diff --git a/Reconstruction/tauRecTools/src/TauCalibrateEM.h b/Reconstruction/tauRecTools/src/TauCalibrateEM.h
index 44bcc86370e48e377799282f1686c6683ca15871..d1c2d00472e9794fc7eb1890635ee23882b099c2 100644
--- a/Reconstruction/tauRecTools/src/TauCalibrateEM.h
+++ b/Reconstruction/tauRecTools/src/TauCalibrateEM.h
@@ -19,7 +19,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.h b/Reconstruction/tauRecTools/src/TauCellVariables.h
index ecc43bca64cdcbba8b4bbc1e43ed910506546a89..7341b28caf709b2542b160b0448b9f41659e36b9 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.h
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.h
@@ -26,11 +26,16 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize();
+    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual void print() const { }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+
 
 private:
     double m_cellEthr;  //!< EM cell E threshold
diff --git a/Reconstruction/tauRecTools/src/TauConversionFinder.h b/Reconstruction/tauRecTools/src/TauConversionFinder.h
index 9b9f93c2389085faaccb6e0389b9555fca2dc25e..526c30d8e841c1b2e259c63992569e795cf9bf83 100644
--- a/Reconstruction/tauRecTools/src/TauConversionFinder.h
+++ b/Reconstruction/tauRecTools/src/TauConversionFinder.h
@@ -31,7 +31,12 @@ public:
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
 
     virtual void print() const { }
 
diff --git a/Reconstruction/tauRecTools/src/TauConversionTagger.h b/Reconstruction/tauRecTools/src/TauConversionTagger.h
index a144886d29ea810e94a1ec3a8f7c4819c4370c39..4fb6c76f72e993b9ce6ccd0f21dc0224dac0b769 100644
--- a/Reconstruction/tauRecTools/src/TauConversionTagger.h
+++ b/Reconstruction/tauRecTools/src/TauConversionTagger.h
@@ -32,7 +32,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
index deda7872167e10962dba278e17cf95be3166a3fd..de9a0ffc76b8f6acf43897a0b7043369096c8f43 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
@@ -28,7 +28,11 @@ public:
 
     virtual ~TauElectronVetoVariables();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize();
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
index 93a88ef2302ef8c4a3b67e366269ea649359e3ef..631dcffa3690cdcaa1a7b160d4183ea2795863f6 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
@@ -30,7 +30,11 @@ public:
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
 
     virtual void print() const { }
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
index 1740af89d440eec5be32ed30fdf8c3300836e87a..19e24691a079d4957fa413164523e53f79c07b9e 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
@@ -17,7 +17,6 @@
 //#include "CaloEvent/CaloCellContainer.h"
 //#include "CaloIdentifier/CaloCell_ID.h"
 #include "CaloUtils/CaloCellList.h"
-#include "CaloInterface/ICaloCellMakerTool.h"
 
 //#include "AthContainers/OwnershipPolicy.h"
 #include "NavFourMom/INavigable4MomentumCollection.h"
@@ -35,12 +34,9 @@ using std::string;
 
 TauPi0CreateROI::TauPi0CreateROI(   const string& name ) :
      TauRecToolBase(name)
-    , m_cellMakerTool("")
     , m_calo_dd_man(NULL)
     , m_calo_id(NULL)
-    , m_pPi0CellContainer(NULL)
 {
-    declareProperty("CellMakerTool", m_cellMakerTool);
 }
    
 //-------------------------------------------------------------------------
@@ -54,14 +50,12 @@ StatusCode TauPi0CreateROI::initialize() {
     
     // retrieve tools
     ATH_MSG_DEBUG( "Retrieving tools" );
-    CHECK( m_cellMakerTool.retrieve() );
     
     // initialize calo cell geo
     m_calo_dd_man  = CaloDetDescrManager::instance();
     m_calo_id      = m_calo_dd_man->getCaloCell_ID();
 
     ATH_CHECK( m_caloCellInputContainer.initialize() );
-    ATH_CHECK( m_tauCaloOutputContainer.initialize() );
 
     return StatusCode::SUCCESS;
 }
@@ -85,15 +79,10 @@ StatusCode TauPi0CreateROI::eventInitialize() {
         m_addedCellsMap.push_back(NULL);
     }
 
-    //---------------------------------------------------------------------
-    // Create CustomCellContainer and register in StoreGate
-    //---------------------------------------------------------------------
-    m_pPi0CellContainer = new CaloCellContainer();
-
     return StatusCode::SUCCESS;
 }
 
-StatusCode TauPi0CreateROI::execute(xAOD::TauJet& pTau) {
+StatusCode TauPi0CreateROI::executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& pPi0CellContainer) {
 
     //---------------------------------------------------------------------
     // only run on 1-5 prong taus 
@@ -134,7 +123,7 @@ StatusCode TauPi0CreateROI::execute(xAOD::TauJet& pTau) {
         if(samp>7) continue;
 
         // Store cell in output container
-        storeCell(cell);
+        storeCell(cell, pPi0CellContainer);
     }
 
     return StatusCode::SUCCESS;
@@ -142,22 +131,6 @@ StatusCode TauPi0CreateROI::execute(xAOD::TauJet& pTau) {
 
 StatusCode TauPi0CreateROI::eventFinalize() {
 
-  // Declare write handle
-  SG::WriteHandle<CaloCellContainer> tauCaloHandle( m_tauCaloOutputContainer );
-  ATH_MSG_DEBUG("  write: " << tauCaloHandle.key() << " = " << "..." );
-
-  // Write completed cell container
-  ATH_CHECK(tauCaloHandle.record(std::unique_ptr<CaloCellContainer>(m_pPi0CellContainer)));
-
-  // here or event initialize?
-  // symlink as INavigable4MomentumCollection (as in CaloRec/CaloCellMaker)
-  ATH_CHECK(evtStore()->symLink(m_pPi0CellContainer, static_cast<INavigable4MomentumCollection*> (0)));
-
-  //---------------------------------------------------------------------
-  // use the m_cellMakerTool to finalize the custom CaloCellContainer
-  //---------------------------------------------------------------------
-  CHECK( m_cellMakerTool->process(static_cast<CaloCellContainer*> (m_pPi0CellContainer)) );
-
   return StatusCode::SUCCESS;
 }
 
@@ -165,7 +138,7 @@ StatusCode TauPi0CreateROI::finalize() {
     return StatusCode::SUCCESS;
 }
 
-void TauPi0CreateROI::storeCell(const CaloCell* cell){
+void TauPi0CreateROI::storeCell(const CaloCell* cell, CaloCellContainer& cellContainer){
     // Store cell in output container if it is a new cell
     // Produce a copy of the cell, in order to prevent 
     // the energy of the original cell to be changed. 
@@ -178,7 +151,7 @@ void TauPi0CreateROI::storeCell(const CaloCell* cell){
 
     if(isNewCell){
         CaloCell* copyCell = cell->clone();
-        m_pPi0CellContainer->push_back(copyCell);
+        cellContainer.push_back(copyCell);
         m_addedCellsMap[cellHash] = copyCell;
     }
 }
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
index 5e037e15e63fe20b2d1dab9bf28e583c15ff3a16..2680ca3c61766dde04f814aab33bf36f7061f060 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
@@ -16,8 +16,6 @@
 
 #include "xAODTau/TauJet.h"
 
-class ICaloCellMakerTool;
-
 /**
  * @brief Create ROIs for the Pi0 finder.
  * 
@@ -34,8 +32,12 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& Pi0CellContainer);
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
 
@@ -45,10 +47,7 @@ public:
 private:
 
     /** @brief store cell in output container */ 
-    void storeCell(const CaloCell* /* cell*/);
-
-    /** @brief tool handles */
-    ToolHandle<ICaloCellMakerTool> m_cellMakerTool;
+    void storeCell(const CaloCell* /* cell*/, CaloCellContainer& cellContainer);
 
     /** @brief calo cell navigation */
     const CaloDetDescrManager* m_calo_dd_man;
@@ -61,7 +60,6 @@ private:
     std::vector<CaloCell*> m_addedCellsMap;
 
     SG::ReadHandleKey<CaloCellContainer> m_caloCellInputContainer{this,"Key_caloCellInputContainer", "AllCalo", "input vertex container key"};
-    SG::WriteHandleKey<CaloCellContainer> m_tauCaloOutputContainer{this,"Key_tauCaloOutputContainer","TauCommonPi0Cells","output calo cell key"};
 
 };
 
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.cxx b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
index 05f3c1b5db11bd1478327bb167159dd003893d87..4e36d847130ae32a9e346eeff73f7e821cf16d53 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
@@ -42,8 +42,6 @@ using std::string;
 TauShotFinder::TauShotFinder(   const string& name ) :
     TauRecToolBase(name)
     , m_caloWeightTool("H1WeightToolCSC12Generic")
-    , m_PFOShotContainer(0)
-    , m_PFOShotAuxStore(0)
     , m_calo_dd_man(NULL)
     , m_calo_id(NULL)
     , m_pt1(0)
@@ -75,7 +73,6 @@ StatusCode TauShotFinder::initialize() {
     CHECK( m_caloWeightTool.retrieve() );
 
     ATH_CHECK( m_caloCellInputContainer.initialize() );
-    ATH_CHECK( m_tauPFOOutputContainer.initialize() );
 
     // initialize calo cell geo
     m_calo_dd_man  = CaloDetDescrManager::instance();
@@ -126,21 +123,11 @@ StatusCode TauShotFinder::finalize()
 }
 
 StatusCode TauShotFinder::eventInitialize() {
-
-  // Shot cluster container created in TauProcessorAlg    
-
-  //---------------------------------------------------------------------
-  // Create Shot PFO container
-  //---------------------------------------------------------------------
-  m_PFOShotContainer = new xAOD::PFOContainer();
-  m_PFOShotAuxStore = new xAOD::PFOAuxContainer();
-  m_PFOShotContainer->setStore(m_PFOShotAuxStore); 
-
   return StatusCode::SUCCESS;
-
 }
 
-StatusCode TauShotFinder::executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer) {
+StatusCode TauShotFinder::executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer,
+					    xAOD::PFOContainer& tauShotPFOContainer) {
 
     // Any tau needs to have shot PFO vectors. Set empty vectors before nTrack cut
     vector<ElementLink<xAOD::PFOContainer> > empty;
@@ -278,11 +265,11 @@ StatusCode TauShotFinder::executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterC
         
         // create shot PFO and store it in output container
         xAOD::PFO* shot = new xAOD::PFO();
-        m_PFOShotContainer->push_back( shot );
+        tauShotPFOContainer.push_back( shot );
 
         // Create element link from tau to shot
         ElementLink<xAOD::PFOContainer> PFOElementLink;
-        PFOElementLink.toContainedElement( *m_PFOShotContainer, shot );
+        PFOElementLink.toContainedElement( tauShotPFOContainer, shot );
         pTau.addShotPFOLink( PFOElementLink );
        
         if( mergePhi ){
@@ -415,11 +402,6 @@ StatusCode TauShotFinder::executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterC
 }
 
 StatusCode TauShotFinder::eventFinalize() {
-    
-  SG::WriteHandle<xAOD::PFOContainer> tauPFOHandle( m_tauPFOOutputContainer );
-  ATH_MSG_DEBUG("  write: " << tauPFOHandle.key() << " = " << "..." );
-  ATH_CHECK(tauPFOHandle.record(std::unique_ptr<xAOD::PFOContainer>{m_PFOShotContainer}, std::unique_ptr<xAOD::PFOAuxContainer>{m_PFOShotAuxStore}));
-
   return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.h b/Reconstruction/tauRecTools/src/TauShotFinder.h
index 216a7fc1cfd81d3e0c5eaf795f12941a129cfbdd..6bd2914b12201a27ee88278e9c44124a8a4afb37 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.h
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.h
@@ -42,7 +42,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
-    virtual StatusCode executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer);
+    virtual StatusCode executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotCaloClusContainer, xAOD::PFOContainer& tauShotPFOContainer);
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode execute(xAOD::TauJet&){ return StatusCode::SUCCESS; };
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
diff --git a/Reconstruction/tauRecTools/src/TauTestDump.h b/Reconstruction/tauRecTools/src/TauTestDump.h
index 87b30667e760b0223627a0dbe0ec3b7ad94dd4c4..81595a8768420c3daceb9e2f117fa45165b82785 100644
--- a/Reconstruction/tauRecTools/src/TauTestDump.h
+++ b/Reconstruction/tauRecTools/src/TauTestDump.h
@@ -27,7 +27,11 @@ public:
     
     virtual StatusCode initialize();                 
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode finalize();  
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/src/TauTrackFinder.h b/Reconstruction/tauRecTools/src/TauTrackFinder.h
index 4163bcf66c46a3b6a9c7e43a2af884e795592d3e..c63eca1ec9d350996b1e672b6c1f96c1710b3329 100644
--- a/Reconstruction/tauRecTools/src/TauTrackFinder.h
+++ b/Reconstruction/tauRecTools/src/TauTrackFinder.h
@@ -62,7 +62,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode eventInitialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
     
diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.h b/Reconstruction/tauRecTools/src/TauVertexFinder.h
index 1a2026e0d7dc05db19b40bc3080743e60d6ef8c1..ef61bce8c012ca172505c9df75ab120ee55bf9a5 100644
--- a/Reconstruction/tauRecTools/src/TauVertexFinder.h
+++ b/Reconstruction/tauRecTools/src/TauVertexFinder.h
@@ -42,7 +42,11 @@ public:
   virtual StatusCode initialize();
   virtual StatusCode eventInitialize();
   virtual StatusCode execute(xAOD::TauJet& pTau);
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   virtual StatusCode eventFinalize();
   virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.h b/Reconstruction/tauRecTools/src/TauVertexVariables.h
index 924827c702ea3869630e6fb212f07e74348b90c0..9a1c765c4e4bc221b09eb2e71cf7b408a1974384 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.h
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.h
@@ -36,7 +36,11 @@ public:
     
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet&);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
     virtual StatusCode eventFinalize();
diff --git a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
index e94957e3691818a9a076a271bf7cd78e6e4fb28b..fac9609f7c195c9cc66a3fe9286da1ca0d78e48d 100644
--- a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
+++ b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
@@ -72,7 +72,13 @@ class CombinedP4FromRecoTaus
   bool GetUseCaloPtFlag(const xAOD::TauJet* tau);
 
   StatusCode execute(xAOD::TauJet& xTau); 
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
+
 
  private:
   /*std::vector< std::vector<TH1F*> >  m_resHists_tauRec;
diff --git a/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h b/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
index 7f6337f975f2eb18b2d779e3168d926374597c45..7bf1d941e07cdd66d65551a358e54e2c9afac61b 100644
--- a/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
+++ b/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
@@ -38,7 +38,12 @@ class ITauToolBase : virtual public asg::IAsgTool
   //! Execute - called for each tau candidate
   //-----------------------------------------------------------------
   virtual StatusCode execute(xAOD::TauJet& pTau) = 0;
-  virtual StatusCode executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer) = 0;
+  virtual StatusCode executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& shotClusterContainer, xAOD::PFOContainer& PFOContainer ) = 0;
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& caloCellContainer ) = 0;
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, 
+					      xAOD::PFOContainer& hadronicPFOContainer, xAOD::CaloClusterContainer& caloClusterContainer ) = 0;
+  virtual StatusCode executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& vertexContainer ) = 0;  
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& PFOContainer ) = 0;  
 
   //-----------------------------------------------------------------
   //! Event finalizer - called at the end of each event
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
index 91c67d8de961938c7c23be0eb4f8f9be7132e7c4..5eec1345c270c7c19d0f5bae080fba766a571260 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
@@ -24,7 +24,11 @@ class MvaTESEvaluator
   StatusCode initialize();
   StatusCode eventInitialize();
   StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   //StatusCode finalize() { delete m_reader; return StatusCode::SUCCESS;}
   StatusCode finalize() { return StatusCode::SUCCESS; }
   
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
index 77e9dd63c60f0b1173b7fad2cc29ec949dddaa7b..c6d89d180e9f73d921731cea3ce1db2c08c8679e 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
@@ -24,7 +24,12 @@ class MvaTESVariableDecorator
   StatusCode initialize();
   StatusCode eventInitialize();
   StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
   StatusCode eventFinalize();
   
  private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
index dd7acb1ac780ceefa365e746c71b4ed8212f10f9..74990d5224da6874a12f3d42a654f730c53e65c8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
@@ -31,7 +31,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
index 20db885a4e70e33b7e302a25960b876edf833fc5..ff26f0bfa49bb0ebaa9e091d41c4117bf58d4406 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
@@ -28,7 +28,12 @@ public:
     
     virtual StatusCode initialize();                 
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
     virtual StatusCode finalize();  
 
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
index c68822ee2aee6671bf4473453182e5330afd2697..d0eae077e93e46e0a5d3d7b24e62249eec5549f6 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
@@ -34,8 +34,12 @@ class TauEleOLRDecorator: virtual public TauRecToolBase
   virtual StatusCode initialize();
 
   virtual StatusCode execute(xAOD::TauJet&);
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
 
   virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h b/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
index 3a0b26f7b3e84f976a6f703f8868848d9c99b3cf..6289f1b02126e2936ebc9fa4626c19ce9d6e8d6f 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
@@ -31,7 +31,12 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h b/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h
index d56f55faf0006a62e09405f8a2c5c59e42f4501e..bdf95614d3e72ed55eba89caa8b32ef12ecaf046 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDPileupCorrection.h
@@ -48,7 +48,12 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+
     
     virtual void print() const { }
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
index 798425025e86bc69ae4389e39b949f3eafb2e452..acda823f41e161f04d5de1e074daf11d9a643713 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
@@ -31,8 +31,11 @@ class TauIDVarCalculator: public TauRecToolBase
   virtual StatusCode initialize();
 
   virtual StatusCode execute(xAOD::TauJet&);
-
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
   virtual StatusCode finalize();
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
index af2d9f8a4c34e65c1f6f0bc869a624bf1eef1d20..dbb45319a2f2ae7af1aa9c753f8e128b36f9e455 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
@@ -29,7 +29,11 @@ class TauJetBDTEvaluator
     
   StatusCode initialize();
   StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   StatusCode finalize();// { delete myBdt; delete m_outputVar; return StatusCode::SUCCESS;}
   
  private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
index d892516b8167f9481e12458167f7c05e10223b56..3366831afcd873e89fea883928db1d9291248089 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
@@ -32,7 +32,11 @@ public:
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize();
 
     virtual void print() const { }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
index 2a75a7a3de25837b8c4d30c90788e153eb51d514..4c22c3ddea3595ab246efc28ad7fb80ee25f9831 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
@@ -30,7 +30,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
index a65e2cff408610479eec314ec551f06f0e5297f0..fa4ad2fad3c8ca836e7e72603f4c55feb66bb70b 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
@@ -24,7 +24,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h b/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
index 22d287bbc16be5d94f4b7bc6102adc54910b652b..67ddf90c3ca0b6bff8478cf571cdd9d4f3106239 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
@@ -43,7 +43,6 @@ class TauRecToolBase : public asg::AsgTool, virtual public ITauToolBase {
   //! Execute - called for each tau candidate
   //-----------------------------------------------------------------
   virtual StatusCode execute(xAOD::TauJet& pTau);
-  //virtual StatusCode executeCaloClus(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer);
 
   //-----------------------------------------------------------------
   //! Event finalizer - called at the end of each event
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
index c774a96d21a72bf5cb55c04dc708c8b03e1c19b4..db03212e9b0e1339382c88f135509c8959a0a7ef 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
@@ -27,7 +27,11 @@ class TauSubstructureVariables : public TauRecToolBase
         ~TauSubstructureVariables();
 
         virtual StatusCode execute(xAOD::TauJet& pTau);
-	virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+	virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
         virtual StatusCode initialize();
         virtual StatusCode finalize();
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
index f3b9490b331aa7c57d4205780ed14f9226448801..f4f023847b8849a3e6026aa4ce90394c038cb28d 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
@@ -45,7 +45,11 @@ public:
   virtual StatusCode initialize();
   // pass all tracks in the tau cone to all track classifier sub tools
   virtual StatusCode execute(xAOD::TauJet& pTau);
-  virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
 private:
   ToolHandleArray<TrackMVABDT> m_vClassifier;
@@ -71,7 +75,11 @@ class TrackMVABDT
   // for possible MVA inputs. Only Variables defined in the root weights file
   // are passed to the MVA object
   StatusCode initialize();
-  StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+  StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
   StatusCode finalize();
   
   // executes MVA object to get the BDT score, makes the decision and resets
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
index b5e0664203724c6e4f2334df08f2dfcfb604f8c1..322ae0dc1088791abf96c699ac97f92fa28947f8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
@@ -31,7 +31,11 @@ public:
 
     virtual StatusCode initialize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode finalize();
     virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
     virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
index 97d151ce0935f5758467a0fb8e1159404dd18f0b..186676bedff6bfab51dfa401444cd0376c4038d9 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
@@ -34,7 +34,11 @@ public:
     virtual StatusCode initialize();
     virtual StatusCode finalize();
     virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode executeCaloClus(xAOD::TauJet&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeShotFinder(xAOD::TauJet&, xAOD::CaloClusterContainer&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet&, CaloCellContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterCreator(xAOD::TauJet&, xAOD::PFOContainer&, xAOD::PFOContainer&, xAOD::CaloClusterContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executeVertexVariables(xAOD::TauJet&, xAOD::VertexContainer&) { return StatusCode::SUCCESS; }
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
 
     virtual StatusCode retrieveHistos(int nProng);
     virtual StatusCode storeLimits(int nProng);