diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuidMuonRecovery.h b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuidMuonRecovery.h
index f4de998a9da9fe2274b14eccf1e552c89309372b..f6f6b4098e9c3b1b0010451d0138b58acdd9164e 100644
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuidMuonRecovery.h
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuidMuonRecovery.h
@@ -20,25 +20,18 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "MuidInterfaces/ICombinedMuonTrackBuilder.h"
 #include "MuidInterfaces/IMuidMuonRecovery.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
+#include "TrkExInterfaces/IExtrapolator.h"
+#include "TrkToolInterfaces/IResidualPullCalculator.h"
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
-namespace Muon
-{
-    class MuonEDMPrinterTool;
-    class MuonIdHelperTool;
-}
-namespace Trk
-{
-    class IExtrapolator;
-    class IResidualPullCalculator;
-}
 
 namespace Rec
 {
-    class ICombinedMuonTrackBuilder;    
     
 class MuidMuonRecovery: public AthAlgTool,
   virtual public IMuidMuonRecovery
@@ -60,14 +53,15 @@ public:
 
  private:
     // helpers, managers, tools
-    ToolHandle<Trk::IExtrapolator>                      m_extrapolator; 
-    ServiceHandle<Muon::IMuonEDMHelperSvc>              m_edmHelperSvc {this, "edmHelper", 
+    ToolHandle<Trk::IExtrapolator> m_extrapolator {this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator", "Extrapolator tool"};
+    ServiceHandle<Muon::IMuonEDMHelperSvc> m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };   //<! multipurpose helper tool
-    ToolHandle<Muon::MuonIdHelperTool>                  m_idHelper; //<! tool to assist with Identifiers
-    ToolHandle<Muon::MuonEDMPrinterTool>                m_printer;  //<! tool to print EDM objects
-    ToolHandle<Trk::IResidualPullCalculator>            m_residualCalculator;
-    ToolHandle<ICombinedMuonTrackBuilder>		m_trackBuilder;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_muonIdHelperSvc{this, "idHelper", 
+      "Muon::MuonIdHelperSvc/MuonIdHelperSvc", "Handle to the service providing the IMuonIdHelperSvc interface"}; //<! tool to assist with Identifiers
+    ToolHandle<Muon::MuonEDMPrinterTool> m_printer {this, "Printer", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool", "Tool to print EDM objects"};  //<! tool to print EDM objects
+    ToolHandle<Trk::IResidualPullCalculator> m_residualCalculator {this, "TrackBuilder", "Trk::ResidualPullCalculator/ResidualPullCalculator", "Residual calculator tool"};
+    ToolHandle<ICombinedMuonTrackBuilder> m_trackBuilder {this, "TrackBuilder", "Rec::CombinedMuonTrackBuilder/CombinedMuonTrackBuilder", "Track builder tool"};
 
     // configurable cuts and tolerances
     double						m_minP;
@@ -75,9 +69,9 @@ public:
     double                                              m_pullCut;
     
     // counters
-    mutable unsigned int 				m_recoveryAttempts;
-    mutable unsigned int 				m_recoveryFitFailure;
-    mutable unsigned int 				m_recoverySuccess;
+    mutable std::atomic<unsigned int> m_recoveryAttempts;
+    mutable std::atomic<unsigned int> m_recoveryFitFailure;
+    mutable std::atomic<unsigned int> m_recoverySuccess;
 
 
 };
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonMatchQuality.h b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonMatchQuality.h
index 22e830e8fa538994667238e21e4b339f95f92d4e..abf89053c765c4718ee8c93e6e439b6581f24e71 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonMatchQuality.h
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonMatchQuality.h
@@ -13,17 +13,12 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/IMuonMatchQuality.h"
+#include "MuonCombinedToolInterfaces/IMuonTrackTagTool.h"
+#include "MuidInterfaces/IMuonTrackQuery.h"
 
 
-namespace MuonCombined
-{
-    class IMuonTrackTagTool;
-}
-
 namespace Rec
 {
-    class IMuonTrackQuery;
-    
     class MuonMatchQuality : public AthAlgTool,
 			     virtual public IMuonMatchQuality
     {
@@ -74,8 +69,8 @@ namespace Rec
 	void		setCache (const Trk::Track& track1, const Trk::Track& track2) const;
 
 	// helpers, managers, tools
-	ToolHandle<MuonCombined::IMuonTrackTagTool>	m_tagTool;
-	ToolHandle<IMuonTrackQuery>			m_trackQuery;
+	ToolHandle<MuonCombined::IMuonTrackTagTool>	m_tagTool {this, "TagTool", "", "Track tag tool"};
+	ToolHandle<IMuonTrackQuery>	m_trackQuery {this, "TrackQuery", "Rec::MuonTrackQuery/MuonTrackQuery", "Track query tool"};
 
 	// estimate of ID/MS alignment uncertainties
 	AmgSymMatrix(5)*				m_alignmentUncertainty;
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonTrackQuery.h b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonTrackQuery.h
index f83d6560f34c1d63943aa56dc9d901cbf27a689b..9b278ec3ff79d84d0ecb71350e74402361c27dff 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonTrackQuery.h
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/MuonTrackQuery.h
@@ -13,17 +13,14 @@
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/IMuonTrackQuery.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
+#include "TrkFitterInterfaces/ITrackFitter.h"
 
-namespace Muon
-{
-    class IMdtDriftCircleOnTrackCreator;
-    class MuonIdHelperTool;
-}
 namespace Trk
 {
     class ITrackingGeometrySvc;
-    class ITrackFitter;
 }
 namespace Rec
 {
@@ -117,12 +114,13 @@ namespace Rec
 	const Trk::TrackParameters*	flippedParameters (const Trk::TrackParameters& params) const;
 
 	// tools and services
-	ToolHandle<Trk::ITrackFitter>       		m_fitter;
+	ToolHandle<Trk::ITrackFitter>       		m_fitter {this, "Fitter", "", "Track fitter tool"};
 	ServiceHandle<Muon::IMuonEDMHelperSvc>		m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" }; 
-	ToolHandle<Muon::MuonIdHelperTool>		m_idHelper;
-	ToolHandle<Muon::IMdtDriftCircleOnTrackCreator>	m_mdtRotCreator;
+	ServiceHandle<Muon::IMuonIdHelperSvc> m_muonIdHelperSvc{this, "idHelper", 
+      "Muon::MuonIdHelperSvc/MuonIdHelperSvc", "Handle to the service providing the IMuonIdHelperSvc interface"};
+	ToolHandle<Muon::IMdtDriftCircleOnTrackCreator>	m_mdtRotCreator {this, "MdtRotCreator", "Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator", "MdtDriftCircleOnTrackCreator tool"};
         ServiceHandle<Trk::ITrackingGeometrySvc>        m_trackingGeometrySvc;
 	
     };
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/OutwardsCombinedMuonTrackBuilder.h b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/OutwardsCombinedMuonTrackBuilder.h
index c66cd601eb6185912a759f7172a1d14e6fa80326..39b7753d1ea11886e063ae16c424b676d7ad0516 100644
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/OutwardsCombinedMuonTrackBuilder.h
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/OutwardsCombinedMuonTrackBuilder.h
@@ -20,9 +20,13 @@
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
 #include "MuidInterfaces/ICombinedMuonTrackBuilder.h"
+#include "MuonRecToolInterfaces/IMuonErrorOptimisationTool.h"
+#include "MuonRecToolInterfaces/IMuonHoleRecoveryTool.h"
+#include "MuonRecToolInterfaces/IMuonTrackCleaner.h"
+#include "TrkDetDescrInterfaces/ITrackingVolumesSvc.h"
 #include "TrkParameters/TrackParameters.h"
 #include "TrkTrack/TrackInfo.h"
-#include "TrkDetDescrInterfaces/ITrackingVolumesSvc.h"
+#include "TrkToolInterfaces/ITrackSummaryTool.h"
 
 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
 
@@ -143,11 +147,11 @@ namespace Rec
 
 	
 	// helpers, managers, tools
-	ToolHandle<Muon::IMuonTrackCleaner>		m_cleaner;
-	ToolHandle<Trk::ITrackFitter>       		m_fitter;	// curved track fitter
-	ToolHandle<Trk::ITrackSummaryTool>		m_trackSummary;
-        ToolHandle<Muon::IMuonHoleRecoveryTool>         m_muonHoleRecovery;	
-        ToolHandle<Muon::IMuonErrorOptimisationTool>    m_muonErrorOptimizer;
+	ToolHandle<Muon::IMuonTrackCleaner>		m_cleaner {this, "Cleaner", "", "MuonTrackCleaner tool"};
+	ToolHandle<Trk::ITrackFitter>       		m_fitter {this, "Fitter", "", "TrackFitter tool"};	// curved track fitter
+	ToolHandle<Trk::ITrackSummaryTool>		m_trackSummary {this, "TrackSummaryTool", "", "TrackSummary tool"};
+        ToolHandle<Muon::IMuonHoleRecoveryTool>         m_muonHoleRecovery {this, "MuonHoleRecovery", "", "MuonHoleRecovery tool"};
+        ToolHandle<Muon::IMuonErrorOptimisationTool>    m_muonErrorOptimizer {this, "MuonErrorOptimizer", "", "MuonErrorOptimizer tool"};
         ServiceHandle<Trk::ITrackingVolumesSvc>         m_trackingVolumesSvc;
         const Trk::Volume*                              m_calorimeterVolume;
         const Trk::Volume*                              m_indetVolume;
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
index e9fc5891312ae09fdbcca6a9a0a9a97af2e25f34..383381f5d104e5f356d5a45ca51b5988cd341a4c 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx
@@ -76,29 +76,29 @@ CombinedMuonTrackBuilder::CombinedMuonTrackBuilder (const std::string&type,
 						    const std::string&name, 
 						    const IInterface*parent)
     :	AthAlgTool			(type, name, parent),
-	m_caloEnergyParam		("Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam"),
-	m_caloTSOS			("Rec::MuidCaloTrackStateOnSurface/MuidCaloTrackStateOnSurface"),
-	m_cleaner			("Muon::MuonTrackCleaner/MuidTrackCleaner"),
-	m_cscRotCreator			(""),
-	m_extrapolator			("Trk::Extrapolator/AtlasExtrapolator"),
-	m_fitter			("Trk::iPatFitter/iPatFitter"),
-	m_fitterSL			("Trk::iPatFitter/iPatSLFitter"),
-        m_idHelperTool                  ("Muon::MuonIdHelperTool"),
-	m_intersector			("Trk::RungeKuttaIntersector/RungeKuttaIntersector"),
+	m_caloEnergyParam		("Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam", this),
+	m_caloTSOS			("Rec::MuidCaloTrackStateOnSurface/MuidCaloTrackStateOnSurface", this),
+	m_cleaner			("Muon::MuonTrackCleaner/MuidTrackCleaner", this),
+	m_cscRotCreator			("", this),
+	m_extrapolator			("Trk::Extrapolator/AtlasExtrapolator", this),
+	m_fitter			("Trk::iPatFitter/iPatFitter", this),
+	m_fitterSL			("Trk::iPatFitter/iPatSLFitter", this),
+        m_idHelperTool                  ("Muon::MuonIdHelperTool", this),
+	m_intersector			("Trk::RungeKuttaIntersector/RungeKuttaIntersector", this),
 	m_magFieldProperties		(Trk::FullField),
 	m_magFieldSvc			("AtlasFieldSvc",name),
-	m_materialAllocator		(""),
-	m_mdtRotCreator			(""),
-  	m_muonErrorOptimizer    	("Muon::MuonErrorOptimisationTool/MuidErrorOptimisationTool"),
-	m_muonHoleRecovery		("Muon::MuonChamberHoleRecoveryTool/MuonChamberHoleRecoveryTool"),
-	m_propagator            	("Trk::IntersectorWrapper/IntersectorWrapper"),
-	m_propagatorSL			("Trk::StraightLinePropagator/MuonStraightLinePropagator"),
-	m_printer			("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
+	m_materialAllocator		("", this),
+	m_mdtRotCreator			("", this),
+  	m_muonErrorOptimizer    	("Muon::MuonErrorOptimisationTool/MuidErrorOptimisationTool", this),
+	m_muonHoleRecovery		("Muon::MuonChamberHoleRecoveryTool/MuonChamberHoleRecoveryTool", this),
+	m_propagator            	("Trk::IntersectorWrapper/IntersectorWrapper", this),
+	m_propagatorSL			("Trk::StraightLinePropagator/MuonStraightLinePropagator", this),
+	m_printer			("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool", this),
 	m_trackingGeometrySvc		("TrackingGeometrySvc/AtlasTrackingGeometrySvc",name),
 	m_trackingVolumesSvc		("TrackingVolumesSvc/TrackingVolumesSvc",name),
-	m_trackQuery			("Rec::MuonTrackQuery/MuonTrackQuery"),
-	m_trackSummary			("Trk::TrackSummaryTool/MuidTrackSummaryTool"),
-	m_materialUpdator               ("Trk::TrkMaterialProviderTool/TrkMaterialProviderTool"),
+	m_trackQuery			("Rec::MuonTrackQuery/MuonTrackQuery", this),
+	m_trackSummary			("Trk::TrackSummaryTool/MuidTrackSummaryTool", this),
+	m_materialUpdator               ("Trk::TrkMaterialProviderTool/TrkMaterialProviderTool", this),
 	m_allowCleanerVeto		(true),
 	m_cleanCombined			(true),
 	m_cleanStandalone		(true),
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuidMuonRecovery.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuidMuonRecovery.cxx
index 7f264fa1e1aa65a59ade12449dc414a5b298a87c..c07c1d63b4a5a360713557207c227a1f09166e52 100644
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuidMuonRecovery.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuidMuonRecovery.cxx
@@ -19,22 +19,17 @@
 #include <vector>
 #include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/SystemOfUnits.h"
-#include "MuidInterfaces/ICombinedMuonTrackBuilder.h"
 #include "MuidTrackBuilder/MuidMuonRecovery.h"
 #include "MuonRIO_OnTrack/MdtDriftCircleOnTrack.h"
 #include "MuonRIO_OnTrack/CscClusterOnTrack.h"
 #include "MuonReadoutGeometry/MuonReadoutElement.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 #include "MuonIdHelpers/MuonIdHelperTool.h"
 #include "MuonIdHelpers/MuonStationIndex.h"
 #include "TrkEventPrimitives/LocalDirection.h"
 #include "TrkEventPrimitives/ResidualPull.h"
-#include "TrkExInterfaces/IExtrapolator.h"
 #include "TrkParameters/TrackParameters.h"
 #include "TrkPseudoMeasurementOnTrack/PseudoMeasurementOnTrack.h"
 #include "TrkSurfaces/PlaneSurface.h"
-#include "TrkToolInterfaces/IResidualPullCalculator.h"
 #include "TrkTrack/Track.h"
 #include "TrkTrackSummary/TrackSummary.h"
 #include "TrkSegment/SegmentCollection.h"
@@ -48,11 +43,6 @@ MuidMuonRecovery::MuidMuonRecovery (const std::string&	type,
 				    const std::string&	name, 
 				    const IInterface*	parent)
     :	AthAlgTool		(type, name, parent),
-	m_extrapolator          ("Trk::Extrapolator/AtlasExtrapolator"),
-	m_idHelper              ("Muon::MuonIdHelperTool/MuonIdHelperTool"),
-	m_printer               ("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-	m_residualCalculator    ("Trk::ResidualPullCalculator/ResidualPullCalculator"),
-	m_trackBuilder		("Rec::CombinedMuonTrackBuilder/CombinedMuonTrackBuilder"),
 	m_minP			(10.*Gaudi::Units::GeV),
 	m_minPt			(5.*Gaudi::Units::GeV),
 	m_recoveryAttempts	(0),
@@ -60,8 +50,6 @@ MuidMuonRecovery::MuidMuonRecovery (const std::string&	type,
 	m_recoverySuccess	(0)
 {
     declareInterface<IMuidMuonRecovery>(this);
-    declareProperty("Extrapolator",		m_extrapolator);
-    declareProperty("TrackBuilder",		m_trackBuilder);
     declareProperty("MinP",			m_minP);
     declareProperty("MinPt",			m_minPt);
     declareProperty("PullCut",			m_pullCut = 5);
@@ -96,14 +84,14 @@ MuidMuonRecovery::initialize()
     {
 	ATH_MSG_INFO( "Retrieved tool " << m_edmHelperSvc );
     }
-    if (m_idHelper.retrieve().isFailure())
+    if (m_muonIdHelperSvc.retrieve().isFailure())
     {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_idHelper );
+	ATH_MSG_FATAL( "Failed to retrieve tool " << m_muonIdHelperSvc );
 	return StatusCode::FAILURE;
     }
     else
     {
-	ATH_MSG_INFO( "Retrieved tool " << m_idHelper );
+	ATH_MSG_INFO( "Retrieved tool " << m_muonIdHelperSvc );
     }
     if (m_printer.retrieve().isFailure())
     {
@@ -203,21 +191,21 @@ MuidMuonRecovery::recoverableMatch (const Trk::Track& indetTrack,
 	
 	Identifier id = m_edmHelperSvc->getIdentifier(*meas);
 	if ( !id.is_valid() ) continue;
-	Muon::MuonStationIndex::StIndex index = m_idHelper->stationIndex(id);
-	bool measuresPhi = m_idHelper->measuresPhi(id);
+	Muon::MuonStationIndex::StIndex index = m_muonIdHelperSvc->stationIndex(id);
+	bool measuresPhi = m_muonIdHelperSvc->measuresPhi(id);
 	++nmeas;
 
 	if ( measuresPhi )
 	{
 	    if ( phiIndices.count(index) ) continue;
-	    ATH_MSG_DEBUG("Adding phi station " << m_idHelper->toString(id));
+	    ATH_MSG_DEBUG("Adding phi station " << m_muonIdHelperSvc->toString(id));
 	    phiIndices.insert(index);
 	}
-	else if (m_idHelper->isMdt(id) || (m_idHelper->isCsc(id) ) )
+	else if (m_muonIdHelperSvc->isMdt(id) || (m_muonIdHelperSvc->isCsc(id) ) )
 	{
 	    if ( etaIndices.count(index) ) continue;
 	  
-	    ATH_MSG_DEBUG("Adding eta station " << m_idHelper->toString(id));
+	    ATH_MSG_DEBUG("Adding eta station " << m_muonIdHelperSvc->toString(id));
 	    etaIndices.insert(index);
 	}
 	else
@@ -241,13 +229,13 @@ MuidMuonRecovery::recoverableMatch (const Trk::Track& indetTrack,
 	}
 	if ( ! exPars )
 	{
-	    ATH_MSG_DEBUG("Failed to extrapolate to station" << m_idHelper->toStringChamber(id) );
+	    ATH_MSG_DEBUG("Failed to extrapolate to station" << m_muonIdHelperSvc->toStringChamber(id) );
 	    continue;
 	}
 	const Trk::ResidualPull* res = m_residualCalculator->residualPull( meas,
 									   exPars,
 									   Trk::ResidualPull::Unbiased );
-	ATH_MSG_DEBUG(" " << m_idHelper->toStringChamber(id) << "  residual " << m_printer->print(*res));
+	ATH_MSG_DEBUG(" " << m_muonIdHelperSvc->toStringChamber(id) << "  residual " << m_printer->print(*res));
 	if ( fabs(res->pull().front()) > m_pullCut )
 	{
 	    if ( measuresPhi )
@@ -264,10 +252,10 @@ MuidMuonRecovery::recoverableMatch (const Trk::Track& indetTrack,
 if (msgLvl(MSG::DEBUG)) 
     {
 
-	if ( !m_idHelper->measuresPhi(id) )
+	if ( !m_muonIdHelperSvc->measuresPhi(id) )
        	{
 	    const MuonGM::MuonReadoutElement* detEl = 0;
-	    if ( m_idHelper->isMdt(id) )
+	    if ( m_muonIdHelperSvc->isMdt(id) )
 	    {
 		const Muon::MdtDriftCircleOnTrack* mdt =
 		    dynamic_cast<const Muon::MdtDriftCircleOnTrack*>(meas);
@@ -276,7 +264,7 @@ if (msgLvl(MSG::DEBUG))
 		    detEl = mdt->detectorElement();
 		}
 	    }
-	    else if ( m_idHelper->isCsc(id) )
+	    else if ( m_muonIdHelperSvc->isCsc(id) )
 	    {
 		const Muon::CscClusterOnTrack* csc =
 		    dynamic_cast<const Muon::CscClusterOnTrack*>(meas);
@@ -372,8 +360,8 @@ if (msgLvl(MSG::DEBUG))
     
 	Identifier id = m_edmHelperSvc->getIdentifier(*meas);
 	if ( !id.is_valid() ) continue;
-	Muon::MuonStationIndex::StIndex index = m_idHelper->stationIndex(id);
-	bool measuresPhi = m_idHelper->measuresPhi(id);
+	Muon::MuonStationIndex::StIndex index = m_muonIdHelperSvc->stationIndex(id);
+	bool measuresPhi = m_muonIdHelperSvc->measuresPhi(id);
 	if ( cleanEta && !measuresPhi && badEtaIndices.count(index) ) continue;
 	if ( cleanPhi &&  measuresPhi && badPhiIndices.count(index) ) continue;
 	spectrometerMeasurements.push_back(meas);
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonMatchQuality.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonMatchQuality.cxx
index e1963df4cc522cdc5d44f7f0847ec9ec8bb654b2..b7e3a86041c98feb9f5644ebb672a8cc9a8e41d2 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonMatchQuality.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonMatchQuality.cxx
@@ -10,9 +10,7 @@
 #include <cmath>
 #include <iomanip>
 #include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
-#include "MuidInterfaces/IMuonTrackQuery.h"
 #include "MuidTrackBuilder/MuonMatchQuality.h"
-#include "MuonCombinedToolInterfaces/IMuonTrackTagTool.h"
 #include "TrkTrack/Track.h"
 #include "AthenaKernel/Units.h"
 
@@ -25,8 +23,6 @@ MuonMatchQuality::MuonMatchQuality (const std::string&	type,
 				    const std::string&	name, 
 				    const IInterface*	parent)
     :	AthAlgTool		(type, name, parent),
-	m_tagTool		(""),
-	m_trackQuery		("Rec::MuonTrackQuery/MuonTrackQuery"),
 	m_alignmentUncertainty  (0),
 	m_directionUncertainty	(0.000001),	                // not used anymore angle ID and MS: done by m_addIDMSerrors
 	m_positionUncertainty	(0.01*Units::mm),	// not used anymore shift ID and MS: done by m_addIDMSerrors
@@ -40,8 +36,6 @@ MuonMatchQuality::MuonMatchQuality (const std::string&	type,
 	m_track2		(0)
 {
     declareInterface<IMuonMatchQuality>(this);
-    declareProperty("TagTool",				m_tagTool);
-    declareProperty("TrackQuery",			m_trackQuery);
     declareProperty("ID_MS_DirectionUncertainty",	m_directionUncertainty);
     declareProperty("ID_MS_PositionUncertainty",	m_positionUncertainty);
 }
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonTrackQuery.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonTrackQuery.cxx
index c2b0fc369aea41b061d774bc6ac36dc9302a5cc2..ce72db5add76b7be8c8b8c174c1ff68a618046ca 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonTrackQuery.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/MuonTrackQuery.cxx
@@ -16,12 +16,8 @@
 #include "MuidTrackBuilder/MuonTrackQuery.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
 #include "MuonRIO_OnTrack/MdtDriftCircleOnTrack.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
 #include "TrkDetDescrInterfaces/ITrackingVolumesSvc.h"
 #include "TrkEventPrimitives/DriftCircleSide.h"
-#include "TrkFitterInterfaces/ITrackFitter.h"
 #include "TrkGeometry/TrackingVolume.h"
 #include "TrkGeometry/TrackingGeometry.h"
 #include "TrkMaterialOnTrack/EnergyLoss.h"
@@ -53,14 +49,9 @@ MuonTrackQuery::MuonTrackQuery (const std::string&	type,
 				const std::string&	name, 
 				const IInterface*	parent)
     :	AthAlgTool		(type, name, parent),
-	m_fitter		(""),
-	m_idHelper              ("Muon::MuonIdHelperTool/MuonIdHelperTool"),
-	m_mdtRotCreator		("Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"),
 	m_trackingGeometrySvc   ("TrackingGeometrySvc/AtlasTrackingGeometrySvc",name)
 {
     declareInterface<IMuonTrackQuery>(this);
-    declareProperty("Fitter",			m_fitter);
-    declareProperty("MdtRotCreator",		m_mdtRotCreator);
     declareProperty( "TrackingGeometrySvc", m_trackingGeometrySvc);
 }
 
@@ -98,14 +89,14 @@ MuonTrackQuery::initialize()
     {
 	ATH_MSG_DEBUG( "Retrieved tool " << m_edmHelperSvc );
     }
-    if (m_idHelper.retrieve().isFailure())
+    if (m_muonIdHelperSvc.retrieve().isFailure())
     {
-	ATH_MSG_FATAL( "Failed to retrieve tool " << m_idHelper );
+	ATH_MSG_FATAL( "Failed to retrieve tool " << m_muonIdHelperSvc );
 	return StatusCode::FAILURE;
     }
     else
     {
-	ATH_MSG_DEBUG( "Retrieved tool " << m_idHelper );
+	ATH_MSG_DEBUG( "Retrieved tool " << m_muonIdHelperSvc );
     }
     
     // tools needed when flipping tracks to outgoing
@@ -257,7 +248,7 @@ MuonTrackQuery::fieldIntegral (const Trk::Track& track) const
 	    && ! calorimeterVolume->inside((**s).trackParameters()->position()))
 	{
 	    Identifier id	= m_edmHelperSvc->getIdentifier(*(**s).measurementOnTrack());
-	    isPreciseHit	= (id.is_valid() && ! m_idHelper->measuresPhi(id));
+	    isPreciseHit	= (id.is_valid() && ! m_muonIdHelperSvc->measuresPhi(id));
 	}
 	if (! (**s).materialEffectsOnTrack() && ! isPreciseHit)			continue;
 
@@ -1218,11 +1209,11 @@ MuonTrackQuery::spectrometerPhiQuality (const Trk::Track& track) const
 	    || ! (**s).trackParameters()
 	    || calorimeterVolume->inside((**s).trackParameters()->position()))	continue;
 	Identifier id	= m_edmHelperSvc->getIdentifier(*(**s).measurementOnTrack());
-	if (! id.is_valid() || ! m_idHelper->measuresPhi(id))				continue;
+	if (! id.is_valid() || ! m_muonIdHelperSvc->measuresPhi(id))				continue;
 
 	// require phi measurement from CSC or CompetingROT
 	if (! dynamic_cast<const Muon::CompetingMuonClustersOnTrack*>((**s).measurementOnTrack())
-	    && ! m_idHelper->isCsc(id))							continue;
+	    && ! m_muonIdHelperSvc->isCsc(id))							continue;
 	leadingPhiMeasurement	= *s;
 	break;
     }
@@ -1238,7 +1229,7 @@ MuonTrackQuery::spectrometerPhiQuality (const Trk::Track& track) const
 	    || ! (**r).trackParameters())						continue;
 	if (calorimeterVolume->inside((**r).trackParameters()->position()))		break;
 	Identifier id	= m_edmHelperSvc->getIdentifier(*(**r).measurementOnTrack());
-	if (! id.is_valid() || ! m_idHelper->measuresPhi(id))				continue;
+	if (! id.is_valid() || ! m_muonIdHelperSvc->measuresPhi(id))				continue;
 	if (*r != leadingPhiMeasurement) trailingPhiMeasurement	= *r;
 	break;
     }
diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/OutwardsCombinedMuonTrackBuilder.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/OutwardsCombinedMuonTrackBuilder.cxx
index 107790a0e99a0275ca48039760f1bc929d95325f..6d2085a0e54eee54f02041bcf08ee15246321e78 100755
--- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/OutwardsCombinedMuonTrackBuilder.cxx
+++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/OutwardsCombinedMuonTrackBuilder.cxx
@@ -18,12 +18,7 @@
 #include <iomanip>
 
 #include "MuidTrackBuilder/OutwardsCombinedMuonTrackBuilder.h"
-
-#include "MuonRecToolInterfaces/IMuonTrackCleaner.h"
-#include "MuonRecToolInterfaces/IMuonHoleRecoveryTool.h"
-#include "MuonRecToolInterfaces/IMuonErrorOptimisationTool.h"
 #include "MuidInterfaces/ICombinedMuonTrackBuilder.h"
-#include "TrkToolInterfaces/ITrackSummaryTool.h"
 #include "TrkTrack/Track.h"
 #include "TrkDetDescrInterfaces/ITrackingVolumesSvc.h"
 #include "TrkMaterialOnTrack/MaterialEffectsOnTrack.h"
@@ -50,11 +45,6 @@ OutwardsCombinedMuonTrackBuilder::OutwardsCombinedMuonTrackBuilder (const std::s
 								    const std::string&	name, 
 								    const IInterface*	parent)
     :	AthAlgTool		(type, name, parent),
-	m_cleaner		(""),
-	m_fitter		(""),
-	m_trackSummary		(""),
-        m_muonHoleRecovery      (""),
-        m_muonErrorOptimizer    (""),
         m_trackingVolumesSvc            ("TrackingVolumesSvc/TrackingVolumesSvc",name),
         m_calorimeterVolume       (0),
         m_indetVolume             (0),
@@ -69,14 +59,9 @@ OutwardsCombinedMuonTrackBuilder::OutwardsCombinedMuonTrackBuilder (const std::s
 {
     declareInterface<ICombinedMuonTrackBuilder>(this);
     declareInterface<Trk::ITrackFitter>(this);
-    declareProperty("Cleaner",			m_cleaner);
-    declareProperty("Fitter",			m_fitter);
-    declareProperty("TrackSummaryTool",		m_trackSummary);
-    declareProperty("MuonHoleRecovery",         m_muonHoleRecovery);
     declareProperty("AllowCleanerVeto",		m_allowCleanerVeto);
     declareProperty("CleanCombined",		m_cleanCombined);
     declareProperty("RecoverCombined",		m_recoverCombined);
-    declareProperty("MuonErrorOptimizer",       m_muonErrorOptimizer);
     declareProperty("IDMS_xySigma" ,            m_IDMS_xySigma);
     declareProperty("IDMS_rzSigma" ,            m_IDMS_rzSigma);
     declareProperty("AddIDMSerrors",            m_addIDMSerrors);
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx
index c9e5a802efbdc982808b23f78783c361fcc5ce7d..81879daf0935020fc86cc3467a85754a06971006 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.cxx
@@ -5,8 +5,11 @@
 #include "MuonCombinedMuonCandidateAlg.h"
 
 MuonCombinedMuonCandidateAlg::MuonCombinedMuonCandidateAlg(const std::string& name, ISvcLocator* pSvcLocator):
-  AthAlgorithm(name,pSvcLocator)
-{}
+  AthAlgorithm(name,pSvcLocator),
+  m_muonCandidateTool("MuonCombined::MuonCandidateTool/MuonCandidateTool", this)
+{
+  declareProperty("MuonCandidateTool", m_muonCandidateTool);
+}
 
 MuonCombinedMuonCandidateAlg::~MuonCombinedMuonCandidateAlg()
 {}
diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h
index 2a89ba830b054cabc01bc97aa384886b6db0ff49..337e33ea812fbcc1991015b4be369c62a4be0c92 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h
+++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedMuonCandidateAlg.h
@@ -31,7 +31,7 @@ class MuonCombinedMuonCandidateAlg : public AthAlgorithm
   StatusCode finalize();
 
  private:
-  ToolHandle<MuonCombined::IMuonCandidateTool> m_muonCandidateTool{this,"MuonCandidateTool","MuonCombined::MuonCandidateTool/MuonCandidateTool","Muon Candidate Tool"};
+  ToolHandle<MuonCombined::IMuonCandidateTool> m_muonCandidateTool;
   SG::ReadHandleKey<xAOD::TrackParticleContainer> m_muonTrackParticleLocation{this,"MuonSpectrometerTrackParticleLocation","MuonSpectrometerTrackParticles","MS Track Particle collection"};
   SG::WriteHandleKey<MuonCandidateCollection> m_candidateCollectionName{this,"MuonCandidateLocation","MuonCandidates","Muon candidate collection"};
   SG::WriteHandleKey<TrackCollection> m_msOnlyTracks{this,"MSOnlyExtrapolatedTrackLocation","MSOnlyExtrapolatedMuonTracks","MS extrapolated muon tracks"};
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
index 4a555c6b5f5cd7a690980c110dae98006d3860cc..e3e5845b7051398c1bd1080c522eaf189ca52196 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx
@@ -24,7 +24,7 @@ namespace MuonCombined {
   MuonCandidateTool::MuonCandidateTool (const std::string& type, const std::string& name, const IInterface* parent)
     : AthAlgTool(type, name, parent),
       m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-      m_trackBuilder("Rec::CombinedMuonTrackBuilder/CombinedMuonTrackBuilder"),
+      m_trackBuilder("Rec::CombinedMuonTrackBuilder/CombinedMuonTrackBuilder", this),
       m_trackExtrapolationTool("ExtrapolateMuonToIPTool/ExtrapolateMuonToIPTool"),
       m_ambiguityProcessor("Trk::TrackSelectionProcessorTool/MuonAmbiProcessor")
   {
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedDebuggerTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedDebuggerTool.cxx
index cee37f518a5160bfc8d667d0ada03d791f637cda..f99dca5c642ad803af9282b94dcf3041b8cbc1c9 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedDebuggerTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedDebuggerTool.cxx
@@ -31,7 +31,7 @@ namespace MuonCombined {
  
   MuonCombinedDebuggerTool::MuonCombinedDebuggerTool (const std::string& type, const std::string& name, const IInterface* parent)
     :	AthAlgTool(type, name, parent),
-	m_matchQuality("Rec::MuonMatchQuality/MuonMatchQuality"), 
+	m_matchQuality("Rec::MuonMatchQuality/MuonMatchQuality", this), 
 	m_truthToTrack("Trk::TruthToTrack/TruthToTrack"),
 	m_histSvc("THistSvc", name),
 	m_recoTree(0)
diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx
index d5c5a1e087b13874b76f2b380dee970b3bfa1c42..27432daa9d01850c57c9dc32c2aef8ab598f5508 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx
+++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx
@@ -55,7 +55,7 @@ namespace MuonCombined {
   m_trackQuery("Rec::MuonTrackQuery/MuonTrackQuery"),
   m_momentumBalanceTool("Rec::MuonMomentumBalanceSignificanceTool/MuonMomentumBalanceSignifTool"),
   m_muonRecovery(""),
-  m_matchQuality("Rec::MuonMatchQuality/MuonMatchQuality"),
+  m_matchQuality("Rec::MuonMatchQuality/MuonMatchQuality", this),
   m_trackScoringTool("Muon::MuonTrackScoringTool/MuonTrackScoringTool"),
   m_magFieldSvc("AtlasFieldSvc",name),
   m_DetID(0)
diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedFitTools.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedFitTools.py
index 16734be40f7f37dfa6b512a4c84ba15ec1e14959..8d085059a58db5e7ac2c11efc3cd4202a57638a8 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedFitTools.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedFitTools.py
@@ -270,6 +270,7 @@ def CombinedMuonTrackBuilder( name='CombinedMuonTrackBuilder', **kwargs ):
     kwargs.setdefault("CaloEnergyParam"               , getPublicTool("MuidCaloEnergyToolParam") )
     kwargs.setdefault("CaloTSOS"                      , getPublicTool("MuidCaloTrackStateOnSurface") )
     kwargs.setdefault("CscRotCreator"                 , (getPublicTool("CscClusterOnTrackCreator") if MuonGeometryFlags.hasCSC() else "") )
+    kwargs.setdefault("Cleaner"                       , getTool("MuidTrackCleaner") )
     kwargs.setdefault("Fitter"                        , getPublicTool("iPatFitter") )
     kwargs.setdefault("SLFitter"                      , getPublicTool("iPatSLFitter") )
     kwargs.setdefault("MaterialAllocator"             , getPublicTool("MuidMaterialAllocator") )
@@ -288,6 +289,7 @@ def CombinedMuonTrackBuilder( name='CombinedMuonTrackBuilder', **kwargs ):
     kwargs.setdefault("Vertex3DSigmaZ"                , 60.*mm)
     kwargs.setdefault("UseCaloTG"                     , True ) #
     kwargs.setdefault("CaloMaterialProvider"          , getPublicTool("MuonMaterialProviderTool"))
+    kwargs.setdefault("TrackQuery"                    , getTool("MuonTrackQuery") )
 
     if TriggerFlags.MuonSlice.doTrigMuonConfig:
         kwargs.setdefault("MuonHoleRecovery"              , "" )