diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx
index 2815d4a3cbf421569e4942fb63be005211488031..971dc6536cde0d60d934ffa9205e4abb64dff852 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx
@@ -63,6 +63,8 @@ StatusCode MuonCombinedAlg::execute()
   //note that STACO does not create new Trk::Tracks so it doesn't need collections here
   m_muonCombinedTool->combine(*muonCandidateCollection,*inDetCandidateCollection,maps,muidCombTracks.ptr(),muidMETracks.ptr());
 
+  m_muonCombinedTool->cleanUp();
+  
   return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx
index c9b468236d84bcce0a2c680536366f5f9d97f7c2..f32a1bfcb7d6d79bc9e39a2dcd53b5103fda6e36 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx
@@ -790,6 +790,10 @@ namespace MuonCombined {
       return false;
     }
   }
+
+  void MuonCombinedFitTagTool::cleanUp() const {
+    m_trackBuilder->cleanUp();
+  }
   
   
 }	// end of namespace
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h
index 17cb7d85fd74bf5454564d01171e30b96316fdb6..06f8e31120a000e422753c9fc9927afa3481d677 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h
@@ -47,6 +47,8 @@ namespace MuonCombined {
       void combine( const MuonCandidate& muonCandidate, const std::vector<const InDetCandidate*>& indetCandidates, InDetCandidateToTagMap& tagMap,
 		    TrackCollection* combTracks, TrackCollection* METracks) const override;
 
+    void cleanUp() const override;
+
   private:
 
     Trk::Track* buildCombinedTrack(const Trk::Track& indetTrack,					     
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx
index 33496cb470accda040a79030b356d42385c340c2..825344385060eb7c901ed81596674c6babdd90a1 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx
@@ -171,4 +171,10 @@ namespace MuonCombined {
                                                                           covCB ) );
   }
 
+
+  void MuonCombinedStacoTagTool::cleanUp() const {
+    //Nothing to clean up here .. hopefully
+    return;
+  }
+
 }	// end of namespace
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h
index 4ad43e4796ec1fa73e4ae6114fc4df36b9b2b35f..b8737f738a3cb6da98946cb456010276ff8ff745 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h
@@ -39,6 +39,8 @@ namespace MuonCombined {
       void combine( const MuonCandidate& muonCandidate, const std::vector<const InDetCandidate*>& indetCandidates, InDetCandidateToTagMap& tagMap,
 		    TrackCollection* combTracks, TrackCollection* METracks) const override;
 
+    void cleanUp() const override;
+
   private:
 
     std::unique_ptr<const Trk::Perigee> theCombIdMu( const Trk::Perigee& indetPerigee, const Trk::Perigee& extrPerigee, double& chi2 ) const;
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx
index 64ea1e1a46df4fae3f880539a9637da5043d02b1..fe0554923c3c4391418d7824ed01f47638b54cfc 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx
@@ -111,4 +111,10 @@ namespace MuonCombined {
     }
   }
 
+  void MuonCombinedTool::cleanUp() const {
+    for(auto& tool : m_muonCombinedTagTools){
+      tool->cleanUp();
+    }
+  }
+
 }	// end of namespace
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h
index b9a189a20e7c0abe2574c520690ecb33469836e1..848754504049281078c163bfe77bd90ab8f28a82 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h
@@ -30,6 +30,8 @@ namespace MuonCombined {
     void combine(const MuonCandidateCollection& muonCandidates,const InDetCandidateCollection& inDetCandidates, std::vector<InDetCandidateToTagMap*> tagMaps, 
 		 TrackCollection* combinedTracks, TrackCollection* METracks) const;
 
+    void cleanUp() const override;
+
   private:
 
     void associate( const MuonCandidate& muonCandidate, const InDetCandidateCollection& inDetCandidates,  
diff --git a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h
index bdb76be9f9b607de8327eca2f60004422c2e6cf3..9e4cf30fb777fc142dc180edb3a4897baa911bae 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -35,6 +35,8 @@ namespace MuonCombined {
     virtual void combine( const MuonCandidate& muonCandidate, const std::vector<const InDetCandidate*>& indetCandidates, InDetCandidateToTagMap& tagMap,
 			  TrackCollection* combTracks, TrackCollection* METracks) const = 0;
 
+
+    virtual void cleanUp() const = 0;
   };
 
   inline const InterfaceID& IMuonCombinedTagTool::interfaceID()
diff --git a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h
index 23b1fcd5313acd58e87c125205f058de65e3a3a9..0672d5d477864bf7759240a174a034fe2fb3ad55 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h
@@ -34,6 +34,8 @@ namespace MuonCombined {
     virtual void combine( const MuonCandidateCollection& muonCandidates,  const InDetCandidateCollection& inDetCandidates, std::vector<InDetCandidateToTagMap*> tagMaps,
 			  TrackCollection* combTracks, TrackCollection* METracks) const = 0;
 
+    virtual void cleanUp() const = 0;
+
   };
 
   inline const InterfaceID& IMuonCombinedTool::interfaceID()