diff --git a/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.cxx b/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.cxx
index aba92d2a958506a2df0c46647dc211a587cf250c..971f7e7483d33aac511ba9a1e981876515e3ba63 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.cxx
+++ b/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.cxx
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+   Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonInputProvider.h"
@@ -11,10 +11,8 @@
 #include "L1TopoEvent/ClusterTOB.h"
 #include "L1TopoEvent/TopoInputEvent.h"
 #include "TrigT1Interfaces/RecMuonRoI.h"
-#include "TrigT1Interfaces/RecMuonRoiSvc.h"
 #include "TrigT1Interfaces/MuCTPIL1Topo.h"
 #include "TrigT1Interfaces/MuCTPIL1TopoCandidate.h"
-#include "TrigT1Interfaces/IMuctpiSimTool.h"
 
 #include "TrigT1Result/MuCTPIRoI.h"
 #include "TrigT1Result/Header.h"
@@ -30,31 +28,16 @@ using namespace LVL1;
 MuonInputProvider::MuonInputProvider( const std::string& type, const std::string& name, 
                                       const IInterface* parent) :
    base_class(type, name, parent),
-   m_histSvc("THistSvc", name),
-   m_recRPCRoiSvc( LVL1::ID_RecRpcRoiSvc, name ),
-   m_recTGCRoiSvc( LVL1::ID_RecTgcRoiSvc, name ),
-   m_MuctpiSimTool("LVL1MUCTPI::L1MuctpiTool/LVL1MUCTPI__L1MuctpiTool")
+   m_histSvc("THistSvc", name)
 {
    declareInterface<LVL1::IInputTOBConverter>( this );
-   declareProperty( "RecRpcRoiSvc", m_recRPCRoiSvc, "RPC Rec Roi Service");
-   declareProperty( "RecTgcRoiSvc", m_recTGCRoiSvc, "TGC Rec Roi Service");
-   declareProperty( "MuctpiSimTool", m_MuctpiSimTool,"Tool for MUCTPIsimulation");
 }
 
-MuonInputProvider::~MuonInputProvider()
-{}
-
 StatusCode
 MuonInputProvider::initialize() {
    ATH_MSG_DEBUG("Retrieving LVL1ConfigSvc " << m_configSvc);
    CHECK( m_configSvc.retrieve() );
 
-   ATH_MSG_DEBUG("Retrieving RPC RoI Service " << m_recRPCRoiSvc);
-   CHECK( m_recRPCRoiSvc.retrieve() );
-
-   ATH_MSG_DEBUG("Retrieving TGC RoI Service " << m_recTGCRoiSvc);
-   CHECK( m_recTGCRoiSvc.retrieve() );
-
    // Get the RPC and TGC RecRoI tool
    ATH_CHECK( m_recRPCRoiTool.retrieve() );
    ATH_CHECK( m_recTGCRoiTool.retrieve() );
@@ -122,14 +105,13 @@ MuonInputProvider::handle(const Incident& incident) {
 TCS::MuonTOB
 MuonInputProvider::createMuonTOB(uint32_t roiword, const TrigConf::L1Menu * l1menu) const {
 
+   LVL1::RecMuonRoI roi;
    if(m_useNewConfig) {
-      LVL1::RecMuonRoI roi( roiword, m_recRPCRoiTool.get(), m_recTGCRoiTool.operator->(), l1menu );
+      roi.construct( roiword, m_recRPCRoiTool.get(), m_recTGCRoiTool.operator->(), l1menu );
    } else {
-      LVL1::RecMuonRoI roi( roiword, m_recRPCRoiSvc.operator->(), m_recTGCRoiSvc.operator->(), &m_MuonThresholds );
+      roi.construct( roiword, m_recRPCRoiTool.operator->(), m_recTGCRoiTool.operator->(), &m_MuonThresholds );
    }
 
-   LVL1::RecMuonRoI roi( roiword, m_recRPCRoiSvc.operator->(), m_recTGCRoiSvc.operator->(), &m_MuonThresholds );
-
    ATH_MSG_DEBUG("Muon ROI: thrvalue = " << roi.getThresholdValue() << " eta = " << roi.eta() << " phi = " << roi.phi() << ", w   = " << MSG::hex << std::setw( 8 ) << roi.roiWord() << MSG::dec);
          
    TCS::MuonTOB muon( roi.getThresholdValue(), 0, int(10*roi.eta()), int(10*roi.phi()), roi.roiWord() );
diff --git a/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.h b/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.h
index 3960cada372da4d59cdb7b02dcf30532684b9789..9164b87b4c5be64f8f4bde66adfe29e2ab7913ba 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.h
+++ b/Trigger/TrigT1/L1Topo/L1TopoSimulation/src/MuonInputProvider.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef L1TopoSimulation_MuonInputProvider
@@ -11,16 +11,18 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/LockedHandle.h"
 #include "TrigT1Interfaces/MuCTPIL1Topo.h"
-#include <vector>
 #include "TrigT1Result/RoIBResult.h"
 #include "TrigT1Interfaces/MuCTPIToRoIBSLink.h"
 #include "TrigT1Interfaces/TrigT1StoreGateKeys.h"
 #include "TrigT1Interfaces/ITrigT1MuonRecRoiTool.h"
+#include "TrigT1Interfaces/IMuctpiSimTool.h"
 #include "TrigConfInterfaces/ILVL1ConfigSvc.h"
 
 #include "TH1.h"
 #include "TH2.h"
 
+#include <vector>
+
 class ITHistSvc;
 
 namespace TrigConf
@@ -34,13 +36,8 @@ namespace TCS {
    class LateMuonTOB;
 }
 
-namespace LVL1MUCTPI {
-   class IMuctpiSimTool;
-}
-
 namespace LVL1 {
 
-   class RecMuonRoiSvc;
    class MuCTPIL1TopoCandidate;
 
    class MuonInputProvider : public extends2<AthAlgTool, IInputTOBConverter, IIncidentListener> {
@@ -48,8 +45,6 @@ namespace LVL1 {
       MuonInputProvider(const std::string& type, const std::string& name, 
                          const IInterface* parent);
       
-      virtual ~MuonInputProvider();
-
       virtual StatusCode initialize() override;
 
       virtual StatusCode fillTopoInputEvent(TCS::TopoInputEvent& ) const override;
@@ -78,15 +73,10 @@ namespace LVL1 {
       Gaudi::Property<bool> m_useNewConfig{this, "UseNewConfig", false, "When true, read the menu from detector store, when false use the L1ConfigSvc"};
       ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc{this, "LVL1ConfigSvc", "LVL1ConfigSvc", "The LVL1ConfigSvc providing L1 configuration for Run 2"};
 
-      ServiceHandle<LVL1::RecMuonRoiSvc> m_recRPCRoiSvc;
-      ServiceHandle<LVL1::RecMuonRoiSvc> m_recTGCRoiSvc;
-
-      /// The RPC RoI reconstruction tool
       ToolHandle<LVL1::ITrigT1MuonRecRoiTool> m_recRPCRoiTool{this, "RecRpcRoiTool", "LVL1::TrigT1RPCRecRoiTool/TrigT1RPCRecRoiTool", "RPC RoI reconstruction tool"};
-      /// The TGC RoI reconstruction service
       ToolHandle<LVL1::ITrigT1MuonRecRoiTool> m_recTGCRoiTool{this, "RecTgcRoiTool", "LVL1::TrigT1TGCRecRoiTool/TrigT1TGCRecRoiTool", "TGC RoI reconstruction tool"};
 
-      ToolHandle<LVL1MUCTPI::IMuctpiSimTool> m_MuctpiSimTool;
+      ToolHandle<LVL1MUCTPI::IMuctpiSimTool> m_MuctpiSimTool{this, "MuctpiSimTool", "LVL1MUCTPI::L1MuctpiTool/LVL1MUCTPI__L1MuctpiTool", "Tool for MUCTPIsimulation"};
 
       std::vector< TrigConf::TriggerThreshold* > m_MuonThresholds;