diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
index eef79b922ce303452dbd167df147dea65a9a4a0e..2d78af8def0d58eea38c23c0750f456e4bec0419 100644
--- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
+++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
@@ -297,10 +297,8 @@ def getTauVertexVariables():
                                               VertexFitter = getTauAdaptiveVertexFitter(),
                                               #VertexFitter = "Trk::AdaptiveVertexFitter/InDetAdaptiveVxFitterTool",
                                               SeedFinder = getTauCrossDistancesSeedFinder(),
-                                              runOnAOD = bAODmode,
                                               Key_vertexInputContainer = _DefaultVertexContainer,
-                                              Key_trackPartInputContainer = _DefaultTrackContainer, # ATM only needed in case old API is used
-                                              Key_vertexOutputContainer = "TauSecondaryVertices"
+                                              Key_trackPartInputContainer = _DefaultTrackContainer # ATM only needed in case old API is used
                                               #OutputLevel = 2                                            
                                               )
     
diff --git a/Reconstruction/tauRec/python/TauRecRunConfigured.py b/Reconstruction/tauRec/python/TauRecRunConfigured.py
index 8898fd34fd0d13effb0f1df0f0e3c736180a3ea3..b87bd17413cb4adb91c22c43879008fbbf34bd7c 100644
--- a/Reconstruction/tauRec/python/TauRecRunConfigured.py
+++ b/Reconstruction/tauRec/python/TauRecRunConfigured.py
@@ -35,7 +35,8 @@ class TauRecRunConfigured ( Configured ) :
                                                   Key_tauOutputContainer="TauJets",
                                                   Key_neutralPFOOutputContainer="TauPi0Clusters",
                                                   Key_pi0ClusterOutputContainer="TauNeutralParticleFlowObjects",
-                                                  Key_hadronicPFOOutputContainer="TauHadronicParticleFlowObjects"
+                                                  Key_hadronicPFOOutputContainer="TauHadronicParticleFlowObjects",
+                                                  Key_vertexOutputContainer = "TauSecondaryVertices"
                                                   )
                                                                                                 
         Configured.__init__(self, ignoreExistingDataObject=ignoreExistingDataObject)
diff --git a/Reconstruction/tauRec/src/TauRunnerAlg.cxx b/Reconstruction/tauRec/src/TauRunnerAlg.cxx
index 8dbcb24b6547bb032d2db83c76ec0637e98ca549..3ca5f355bb68bd9b72d94bb7dae5eaedb2ed3601 100644
--- a/Reconstruction/tauRec/src/TauRunnerAlg.cxx
+++ b/Reconstruction/tauRec/src/TauRunnerAlg.cxx
@@ -59,10 +59,10 @@ StatusCode TauRunnerAlg::initialize() {
     ATH_CHECK( m_neutralPFOOutputContainer.initialize() );
     ATH_CHECK( m_pi0ClusterOutputContainer.initialize() );
     ATH_CHECK( m_hadronicPFOOutputContainer.initialize() );
+    ATH_CHECK( m_vertexOutputContainer.initialize() );
 
     StatusCode sc;
 
-
     //-------------------------------------------------------------------------
     // Allocate tools
     //-------------------------------------------------------------------------
@@ -162,6 +162,15 @@ StatusCode TauRunnerAlg::execute() {
     SG::WriteHandle<xAOD::CaloClusterContainer> pi0CaloClusHandle( m_pi0ClusterOutputContainer );
     ATH_MSG_DEBUG("  write: " << pi0CaloClusHandle.key() << " = " << "..." );
     ATH_CHECK(pi0CaloClusHandle.record(std::unique_ptr<xAOD::CaloClusterContainer>{pi0CaloClusterContainer}, std::unique_ptr<xAOD::CaloClusterAuxContainer>{pi0CaloClusterAuxContainer}));
+
+    // secondary vertices
+    xAOD::VertexContainer* pSecVtxContainer = new xAOD::VertexContainer();
+    xAOD::VertexAuxContainer* pSecVtxAuxContainer = new xAOD::VertexAuxContainer();
+    pSecVtxContainer->setStore( pSecVtxAuxContainer );
+    SG::WriteHandle<xAOD::VertexContainer> vertOutHandle( m_vertexOutputContainer );
+    ATH_MSG_DEBUG("  write: " << vertOutHandle.key() << " = " << "..." );
+    ATH_CHECK(vertOutHandle.record(std::unique_ptr<xAOD::VertexContainer>{pSecVtxContainer}, std::unique_ptr<xAOD::VertexAuxContainer>{pSecVtxAuxContainer}));
+
   
   //-------------------------------------------------------------------------                        
     // Initialize tools for this event
diff --git a/Reconstruction/tauRec/tauRec/TauRunnerAlg.h b/Reconstruction/tauRec/tauRec/TauRunnerAlg.h
index 190329f896f303c48d22bad8b6e0850c7b79250a..d00ca79edaf3f7e51708b22d0029c171be8e568e 100644
--- a/Reconstruction/tauRec/tauRec/TauRunnerAlg.h
+++ b/Reconstruction/tauRec/tauRec/TauRunnerAlg.h
@@ -21,11 +21,14 @@
 #include "xAODCaloEvent/CaloClusterContainer.h"
 #include "xAODCaloEvent/CaloClusterAuxContainer.h"
 
+#include "xAODTracking/VertexContainer.h"
+#include "xAODTracking/VertexAuxContainer.h"
 
 /**
  * @brief       Main class for tau candidate processing.
  */
 
+
 class TauRunnerAlg: public AthAlgorithm
 {
     public:
@@ -55,6 +58,7 @@ class TauRunnerAlg: public AthAlgorithm
 	SG::WriteHandleKey<xAOD::PFOContainer> m_neutralPFOOutputContainer{this,"Key_neutralPFOOutputContainer", "TauNeutralParticleFlowObjects", "tau neutral pfo out key"};
 	SG::WriteHandleKey<xAOD::CaloClusterContainer> m_pi0ClusterOutputContainer{this,"Key_pi0ClusterOutputContainer", "TauPi0Clusters", "tau pi0cluster output"};
 	SG::WriteHandleKey<xAOD::PFOContainer> m_hadronicPFOOutputContainer{this,"Key_hadronicPFOOutputContainer", "TauHadronicParticleFlowObjects", "tau hadronic pfo out key"};
+	SG::WriteHandleKey<xAOD::VertexContainer> m_vertexOutputContainer{this,"Key_vertexOutputContainer", "TauSecondaryVertices", "input vertex container key"};
 
 	
 };
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.cxx b/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
index aeddcca4d3b58ec601c597a32f6dc1106298cb78..df3e35c66ecefc27be60ac976cfefe5c372087ae 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
@@ -27,13 +27,11 @@
 TauVertexVariables::TauVertexVariables(const std::string &name ) :
   TauRecToolBase(name),
   m_fitTool("Trk::AdaptiveVertexFitter"),
-  m_SeedFinder("Trk::CrossDistancesSeedFinder"),
-  m_pSecVtxContainer(0),
-  m_pSecVtxAuxContainer(0){
+  m_SeedFinder("Trk::CrossDistancesSeedFinder")
+{
   declareProperty("TrackToVertexIPEstimator", m_trackToVertexIPEstimator);
   declareProperty("VertexFitter", m_fitTool);
   declareProperty("SeedFinder", m_SeedFinder);
-  declareProperty("runOnAOD", m_AODmode=false);//AODS are input file 
 }
 
 //-----------------------------------------------------------------------------
@@ -55,7 +53,6 @@ StatusCode TauVertexVariables::initialize() {
 
   ATH_CHECK(m_vertexInputContainer.initialize() );
   ATH_CHECK(m_trackPartInputContainer.initialize() );
-  ATH_CHECK(m_vertexOutputContainer.initialize() );
 
   return StatusCode::SUCCESS;
 }
@@ -63,34 +60,12 @@ StatusCode TauVertexVariables::initialize() {
 StatusCode TauVertexVariables::eventInitialize() {
 
   bool inTrigger = tauEventData()->inTrigger();
-  
-  // Only store the vertex containers if we are offline?
-  if(!inTrigger)
-    {
-      // Secondary Vertex Container for tau decay vertex
-      if(!m_AODmode){
-	m_pSecVtxContainer = new xAOD::VertexContainer();
-	m_pSecVtxAuxContainer = new xAOD::VertexAuxContainer();
-	m_pSecVtxContainer->setStore( m_pSecVtxAuxContainer );
-      
-	// CHECK( evtStore()->record( m_pSecVtxContainer, "TauSecondaryVertices" ) );
-	// CHECK( evtStore()->record( m_pSecVtxAuxContainer, "TauSecondaryVerticesAux." ) );
-      }
-      else {
-	// CHECK( evtStore()->retrieve( m_pSecVtxContainer, "TauSecondaryVertices") );
-	// CHECK( evtStore()->retrieve( m_pSecVtxAuxContainer, "TauSecondaryVerticesAux.") );
-      }
-    }
-  
+    
   return StatusCode::SUCCESS;
 
 }
 
 StatusCode TauVertexVariables::eventFinalize() {
-
-  SG::WriteHandle<xAOD::VertexContainer> vertOutHandle( m_vertexOutputContainer );
-  ATH_MSG_DEBUG("  write: " << vertOutHandle.key() << " = " << "..." );
-  ATH_CHECK(vertOutHandle.record(std::unique_ptr<xAOD::VertexContainer>{m_pSecVtxContainer}, std::unique_ptr<xAOD::VertexAuxContainer>{m_pSecVtxAuxContainer}));
   
   return StatusCode::SUCCESS;
 }
@@ -107,7 +82,7 @@ StatusCode TauVertexVariables::finalize() {
 //-----------------------------------------------------------------------------
 // Execution
 //-----------------------------------------------------------------------------
-StatusCode TauVertexVariables::execute(xAOD::TauJet& pTau) {
+StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& pSecVtxContainer) {
 
   ATH_MSG_DEBUG("executing TauVertexVariables");
 
@@ -233,7 +208,7 @@ StatusCode TauVertexVariables::execute(xAOD::TauJet& pTau) {
     xAODvertex = m_fitTool->fit(xaodTracks, seedPoint);
     if (xAODvertex && !inTrigger) {
       ATH_MSG_VERBOSE("using new xAOD API: Secondary Vertex found and recorded! x="<<xAODvertex->position().x()<< ", y="<<xAODvertex->position().y()<<", perp="<<xAODvertex->position().perp());
-      m_pSecVtxContainer->push_back(xAODvertex);
+      pSecVtxContainer.push_back(xAODvertex);
       xAODvertex->setVertexType(xAOD::VxType::NotSpecified);
     }
 
@@ -249,7 +224,7 @@ StatusCode TauVertexVariables::execute(xAOD::TauJet& pTau) {
 
   // Note, we only attach the 2nd vertex if at offline, otherwise, break the trigger persistency
   if  (!inTrigger) {
-    pTau.setSecondaryVertex(m_pSecVtxContainer, xAODvertex); 		// set the link to the vertex
+    pTau.setSecondaryVertex(&pSecVtxContainer, xAODvertex); 		// set the link to the vertex
   }
   else {
     delete xAODvertex; // delete the vertex when in trigger mode, because we can not save it
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.h b/Reconstruction/tauRecTools/src/TauVertexVariables.h
index 9a1c765c4e4bc221b09eb2e71cf7b408a1974384..76ed2e77c6db4015feb469159ad6ef533878e96b 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.h
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.h
@@ -35,11 +35,11 @@ public:
     ~TauVertexVariables();
     
     virtual StatusCode initialize();
-    virtual StatusCode execute(xAOD::TauJet&);
+    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&, 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 executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& pVertexContainer); 
     virtual StatusCode executePi0ClusterScaler(xAOD::TauJet&, xAOD::PFOContainer&) { return StatusCode::SUCCESS; }
     virtual StatusCode eventInitialize();
     virtual StatusCode finalize();
@@ -54,18 +54,12 @@ public:
     double trFlightPathSig(const xAOD::TauJet& pTau, const xAOD::Vertex& secVertex);
 
 private:
-    bool m_AODmode;
     ToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimator;
     ToolHandle< Trk::IVertexFitter >     m_fitTool; //!< Pointer to the base class of the fit algtools
     ToolHandle< Trk::IVertexSeedFinder > m_SeedFinder;
-
-    xAOD::VertexContainer* m_pSecVtxContainer;
-    xAOD::VertexAuxContainer* m_pSecVtxAuxContainer;
     
     SG::ReadHandleKey<xAOD::VertexContainer> m_vertexInputContainer{this,"Key_vertexInputContainer", "PrimaryVertices", "input vertex container key"};
     SG::ReadHandleKey<xAOD::TrackParticleContainer> m_trackPartInputContainer{this,"Key_trackPartInputContainer", "InDetTrackParticles", "input track particle container key"};
-    SG::WriteHandleKey<xAOD::VertexContainer> m_vertexOutputContainer{this,"Key_vertexOutputContainer", "TauSecondaryVertices", "input vertex container key"};
-
 
 };