diff --git a/Examples/options/tut_detsim_SDT.py b/Examples/options/tut_detsim_SDT.py
index 1fd7773b2c4ab648b53f3a77cb44d138be3f07e6..ca5498b772ef7afdf10146dc2a551cd4c751a277 100644
--- a/Examples/options/tut_detsim_SDT.py
+++ b/Examples/options/tut_detsim_SDT.py
@@ -126,10 +126,19 @@ from Configurables import DriftChamberSensDetTool
 
 calo_sensdettool = CalorimeterSensDetTool("CalorimeterSensDetTool")
 driftchamber_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool")
-driftchamber_sensdettool.DedxSimTool = "DummyDedxSimTool"
+
+# dedxoption = "DummyDedxSimTool"
+dedxoption = "BetheBlochEquationDedxSimTool"
+
+driftchamber_sensdettool.DedxSimTool = dedxoption
 
 from Configurables import DummyDedxSimTool
-dedx_simtool = DummyDedxSimTool("DummyDedxSimTool")
+from Configurables import BetheBlochEquationDedxSimTool
+
+if dedxoption == "DummyDedxSimTool":
+    dedx_simtool = DummyDedxSimTool("DummyDedxSimTool")
+elif dedxoption == "BetheBlochEquationDedxSimTool":
+    dedx_simtool = BetheBlochEquationDedxSimTool("BetheBlochEquationDedxSimTool")
 
 ##############################################################################
 # POD I/O
diff --git a/Service/DedxSvc/CMakeLists.txt b/Service/DedxSvc/CMakeLists.txt
deleted file mode 100644
index 0fce402f937a8b428db7e04bd3b82b83b963ac4b..0000000000000000000000000000000000000000
--- a/Service/DedxSvc/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-gaudi_subdir(DedxSvc v0r0)
-
-set(DedxSvc_srcs
-    src/*.cpp
-)
-find_package(Geant4 REQUIRED ui_all vis_all)
-include(${Geant4_USE_FILE})
-gaudi_install_headers(DedxSvc)
-
-gaudi_add_module(DedxSvc ${DedxSvc_srcs}
-    INCLUDE_DIRS GaudiKernel
-    LINK_LIBRARIES GaudiKernel
-)
diff --git a/Service/DedxSvc/DedxSvc/IDedxSvc.h b/Service/DedxSvc/DedxSvc/IDedxSvc.h
deleted file mode 100644
index 14b76620c9cd503bd72d724eb46acb8d9b9fc8bd..0000000000000000000000000000000000000000
--- a/Service/DedxSvc/DedxSvc/IDedxSvc.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef I_Dedx_SVC_H
-#define I_Dedx_SVC_H
-
-#include "GaudiKernel/IService.h"
-
-#include "G4Step.hh"
-
-class IDedxSvc: virtual public IService {
-public:
-    DeclareInterfaceID(IDedxSvc, 0, 1); // major/minor version
-    
-    virtual ~IDedxSvc() = default;
-    virtual float pred(const G4Step* aStep)=0 ;
-
-};
-
-
-#endif
diff --git a/Simulation/DetSimDedx/CMakeLists.txt b/Simulation/DetSimDedx/CMakeLists.txt
index ac4d4be77283f7365a075aea94afdba457f44c6f..824c35b37314dc7b007227c1082b032ea631336b 100644
--- a/Simulation/DetSimDedx/CMakeLists.txt
+++ b/Simulation/DetSimDedx/CMakeLists.txt
@@ -11,6 +11,7 @@ find_package(DD4hep COMPONENTS DDG4 REQUIRED)
 
 set(DetSimDedx_srcs
     src/DummyDedxSimTool.cpp
+    src/BetheBlochEquationDedxSimTool.cpp
 )
 
 gaudi_add_module(DetSimDedx ${DetSimDedx_srcs}
diff --git a/Service/DedxSvc/src/DedxSvc.cpp b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp
similarity index 77%
rename from Service/DedxSvc/src/DedxSvc.cpp
rename to Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp
index 9a62508dd0497e95fc7cfa5dc4cd3d4504354b8b..12ffeebbc2a7d6ad6df3a65d16af4ee274e99926 100644
--- a/Service/DedxSvc/src/DedxSvc.cpp
+++ b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.cpp
@@ -1,18 +1,11 @@
-#include "DedxSvc.h"
+#include "BetheBlochEquationDedxSimTool.h"
+#include "G4Step.hh"
 
-//https://folk.uib.no/ruv004/
-DECLARE_COMPONENT(DedxSvc)
+// https://folk.uib.no/ruv004/
+DECLARE_COMPONENT(BetheBlochEquationDedxSimTool)
 
-DedxSvc::DedxSvc(const std::string& name, ISvcLocator* svc)
-    : base_class(name, svc)
-{
-}
-
-DedxSvc::~DedxSvc()
-{
-}
 
-float DedxSvc::pred(const G4Step* aStep)
+double BetheBlochEquationDedxSimTool::dedx(const G4Step* aStep)
 {
     G4Track* gTrack = aStep->GetTrack() ;
     G4int z = gTrack->GetDefinition()->GetPDGCharge();
@@ -30,7 +23,7 @@ float DedxSvc::pred(const G4Step* aStep)
     return dedx*m_material_density; // MeV / cm 
 }
 
-StatusCode DedxSvc::initialize()
+StatusCode BetheBlochEquationDedxSimTool::initialize()
 {
     m_distribution = new std::normal_distribution<double>(0, m_resolution);
     m_me = 0.511*pow(10,6);//0.511 MeV to eV
@@ -39,7 +32,7 @@ StatusCode DedxSvc::initialize()
     return StatusCode::SUCCESS;
 }
 
-StatusCode DedxSvc::finalize()
+StatusCode BetheBlochEquationDedxSimTool::finalize()
 {
     return StatusCode::SUCCESS;
 }
diff --git a/Service/DedxSvc/src/DedxSvc.h b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.h
similarity index 71%
rename from Service/DedxSvc/src/DedxSvc.h
rename to Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.h
index 6f1f85eb53dbabf872cbbe56aee9a44e4656a639..6e80ad7972d1fcac831f709cde20f77f8bf97f5a 100644
--- a/Service/DedxSvc/src/DedxSvc.h
+++ b/Simulation/DetSimDedx/src/BetheBlochEquationDedxSimTool.h
@@ -1,21 +1,17 @@
-#ifndef Dedx_SVC_H
-#define Dedx_SVC_H
+#ifndef BetheBlochEquationDedxSimTool_h
+#define BetheBlochEquationDedxSimTool_h
 
-#include "DedxSvc/IDedxSvc.h"
-#include <GaudiKernel/Service.h>
-#include "G4Step.hh"
+#include "DetSimInterface/IDedxSimTool.h"
+#include <GaudiKernel/AlgTool.h>
 #include <random>
 
-class DedxSvc : public extends<Service, IDedxSvc>
-{
+class BetheBlochEquationDedxSimTool: public extends<AlgTool, IDedxSimTool> {
     public:
-        DedxSvc(const std::string& name, ISvcLocator* svc);
-        ~DedxSvc();
-
+        using extends::extends;
 
         StatusCode initialize() override;
         StatusCode finalize() override;
-        float pred(const G4Step* aStep) override;
+        double dedx(const G4Step* aStep) override;
 
     private:
 
@@ -27,6 +23,7 @@ class DedxSvc : public extends<Service, IDedxSvc>
         float m_me;// Here me is the electron rest mass
         float m_K; // K was set as a constant.
         float m_I; // Mean excitation energy
+
         std::default_random_engine m_generator;
         std::normal_distribution<double>* m_distribution;
 };