diff --git a/PhysicsAnalysis/Algorithms/SelectionHelpers/Root/SelectionNameSvc.cxx b/PhysicsAnalysis/Algorithms/SelectionHelpers/Root/SelectionNameSvc.cxx
index 580a8828e3befe4ff50b1862b9ba75c9bebbe875..c5410efede88ac1b5de9fc437cceaa6a903a63ea 100644
--- a/PhysicsAnalysis/Algorithms/SelectionHelpers/Root/SelectionNameSvc.cxx
+++ b/PhysicsAnalysis/Algorithms/SelectionHelpers/Root/SelectionNameSvc.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 
 /// @author Nils Krumnack
@@ -24,16 +24,6 @@
 
 namespace CP
 {
-  SelectionNameSvc ::
-  SelectionNameSvc (const std::string& name,
-                    ISvcLocator* pSvcLocator)
-    : AsgService (name, pSvcLocator)
-  {
-
-    declareServiceInterface<ISelectionNameSvc>();
-  }
-
-
 
   StatusCode SelectionNameSvc ::
   initialize ()
diff --git a/PhysicsAnalysis/Algorithms/SelectionHelpers/SelectionHelpers/SelectionNameSvc.h b/PhysicsAnalysis/Algorithms/SelectionHelpers/SelectionHelpers/SelectionNameSvc.h
index 7d6bd2573d0fa524902b00d10d8af6ba4a5d38aa..640066226e10f8ee4057de391ec16509300c6292 100644
--- a/PhysicsAnalysis/Algorithms/SelectionHelpers/SelectionHelpers/SelectionNameSvc.h
+++ b/PhysicsAnalysis/Algorithms/SelectionHelpers/SelectionHelpers/SelectionNameSvc.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 
 /// @author Nils Krumnack
@@ -22,29 +22,15 @@ namespace CP
 {
   /// \brief the canonical implementation of \ref ISelectionNameSvc
 
-  class SelectionNameSvc final : public asg::AsgService,
-                                 virtual public ISelectionNameSvc
+  class SelectionNameSvc final : public extends<asg::AsgService, ISelectionNameSvc>
   {
-    //
-    // public interface
-    //
-
-    /// \brief standard constructor
-    /// \par Guarantee
-    ///   strong
-    /// \par Failures
-    ///   out of memory II
-  public:
-    SelectionNameSvc (const std::string& name,
-                      ISvcLocator* pSvcLocator);
-
-
 
     //
-    // inherited interface
+    // public interface
     //
 
   public:
+    using extends::extends;  // base class constructor
 
     virtual StatusCode initialize () override;
     virtual StatusCode addAcceptInfo (const std::string& objectName, const std::string& decorName,
diff --git a/PhysicsAnalysis/Algorithms/SystematicsHandles/Root/SystematicsSvc.cxx b/PhysicsAnalysis/Algorithms/SystematicsHandles/Root/SystematicsSvc.cxx
index 33fd0150972b97685b30c809e8326874833d8135..8f53be838613ec308107643130e3547631f708d0 100644
--- a/PhysicsAnalysis/Algorithms/SystematicsHandles/Root/SystematicsSvc.cxx
+++ b/PhysicsAnalysis/Algorithms/SystematicsHandles/Root/SystematicsSvc.cxx
@@ -25,15 +25,6 @@
 
 namespace CP
 {
-  SystematicsSvc ::
-  SystematicsSvc (const std::string& name,
-                    ISvcLocator* pSvcLocator)
-    : AsgService (name, pSvcLocator)
-  {
-    declareServiceInterface<ISystematicsSvc>();
-  }
-
-
 
   StatusCode SystematicsSvc ::
   initialize ()
diff --git a/PhysicsAnalysis/Algorithms/SystematicsHandles/SystematicsHandles/SystematicsSvc.h b/PhysicsAnalysis/Algorithms/SystematicsHandles/SystematicsHandles/SystematicsSvc.h
index 5ee3dc7f45dd2e531f9ef872758835625b96096c..7674be9934df9f4b3f0aacf4aa2e2acf113c8257 100644
--- a/PhysicsAnalysis/Algorithms/SystematicsHandles/SystematicsHandles/SystematicsSvc.h
+++ b/PhysicsAnalysis/Algorithms/SystematicsHandles/SystematicsHandles/SystematicsSvc.h
@@ -20,29 +20,16 @@ namespace CP
 {
   /// \brief the canonical implementation of \ref ISystematicsSvc
 
-  class SystematicsSvc final : public asg::AsgService,
-                                 virtual public ISystematicsSvc
+  class SystematicsSvc final : public extends<asg::AsgService, ISystematicsSvc>
   {
+
     //
     // public interface
     //
 
-    /// \brief standard constructor
-    /// \par Guarantee
-    ///   strong
-    /// \par Failures
-    ///   out of memory II
   public:
-    SystematicsSvc (const std::string& name,
-                      ISvcLocator* pSvcLocator);
-
+    using extends::extends;  // base class constructor
 
-
-    //
-    // inherited interface
-    //
-
-  public:
     virtual StatusCode initialize () override;
     virtual StatusCode finalize () override;
     virtual std::vector<CP::SystematicSet>