diff --git a/Simulation/DetSimCore/CMakeLists.txt b/Simulation/DetSimCore/CMakeLists.txt
index e6dd06698ad116b1bada6e94facbe1565430e848..abda7f59f6db52b74e1478ff061168b18e37d85c 100644
--- a/Simulation/DetSimCore/CMakeLists.txt
+++ b/Simulation/DetSimCore/CMakeLists.txt
@@ -13,6 +13,9 @@ set(DetSimCore_srcs
     src/DetSimSvc.cpp
     src/DetectorConstruction.cpp
     src/PrimaryGeneratorAction.cpp
+    src/ActionInitialization.cpp
+    src/RunAction.cpp
+    src/EventAction.cpp
 )
 
 gaudi_add_module(DetSimCore ${DetSimCore_srcs}
diff --git a/Simulation/DetSimCore/src/ActionInitialization.cpp b/Simulation/DetSimCore/src/ActionInitialization.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7a16a83128a922931e5810fd8f2961ba24ec4f5f
--- /dev/null
+++ b/Simulation/DetSimCore/src/ActionInitialization.cpp
@@ -0,0 +1,26 @@
+#include "ActionInitialization.h"
+
+#include "RunAction.h"
+
+ActionInitialization::ActionInitialization()
+    : G4VUserActionInitialization() {
+
+}
+
+ActionInitialization::~ActionInitialization() {
+
+}
+
+void
+ActionInitialization::BuildForMaster() const {
+
+}
+
+void
+ActionInitialization::Build() const {
+
+
+    RunAction* runAction = new RunAction();
+    SetUserAction(runAction);
+
+}
diff --git a/Simulation/DetSimCore/src/ActionInitialization.h b/Simulation/DetSimCore/src/ActionInitialization.h
new file mode 100644
index 0000000000000000000000000000000000000000..6ad9791d4c71d5aa839295ef2d24655771abd407
--- /dev/null
+++ b/Simulation/DetSimCore/src/ActionInitialization.h
@@ -0,0 +1,18 @@
+#ifndef ActionInitialization_h
+#define ActionInitialization_h
+
+#include "G4VUserActionInitialization.hh"
+
+class ActionInitialization: public G4VUserActionInitialization {
+public:
+
+    ActionInitialization();
+    ~ActionInitialization();
+
+    void BuildForMaster() const override;
+    void Build() const override;
+
+};
+
+
+#endif
diff --git a/Simulation/DetSimCore/src/DetSimAlg.cpp b/Simulation/DetSimCore/src/DetSimAlg.cpp
index 209a51f09903540540992818266e898502a1e5d6..8bd06abb4c7d5d23c147134c9b00e6cf800e0f69 100644
--- a/Simulation/DetSimCore/src/DetSimAlg.cpp
+++ b/Simulation/DetSimCore/src/DetSimAlg.cpp
@@ -4,15 +4,16 @@
 #include "GaudiKernel/GaudiException.h"
 
 #include "G4RunManager.hh"
-
-#include "DetectorConstruction.h"
-
-#include "G4PhysListFactory.hh"
 #include "G4UImanager.hh"
 #include "G4VisExecutive.hh"
 #include "G4UIExecutive.hh"
+
+#include "DetectorConstruction.h"
+#include "G4PhysListFactory.hh"
 #include "PrimaryGeneratorAction.h"
 
+#include "ActionInitialization.h"
+
 DECLARE_COMPONENT(DetSimAlg)
 
 DetSimAlg::DetSimAlg(const std::string& name, ISvcLocator* pSvcLocator)
@@ -54,6 +55,9 @@ DetSimAlg::initialize() {
     // Primary Generator Action
     runmgr->SetUserAction(new PrimaryGeneratorAction());
 
+    // User Actions
+    runmgr->SetUserInitialization(new ActionInitialization());
+
     // Vis Mac
     bool hasVis = false;
     G4VisManager* visManager = nullptr;
diff --git a/Simulation/DetSimCore/src/EventAction.cpp b/Simulation/DetSimCore/src/EventAction.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c0a9ab3593b8dfd440d96dad6b961701989c2057
--- /dev/null
+++ b/Simulation/DetSimCore/src/EventAction.cpp
@@ -0,0 +1,21 @@
+#include "EventAction.h"
+
+EventAction::EventAction() 
+    : G4UserEventAction() {
+
+}
+
+EventAction::~EventAction() {
+
+}
+
+void
+EventAction::BeginOfEventAction(const G4Event*) {
+
+}
+
+void
+EventAction::EndOfEventAction(const G4Event*) {
+
+}
+
diff --git a/Simulation/DetSimCore/src/EventAction.h b/Simulation/DetSimCore/src/EventAction.h
new file mode 100644
index 0000000000000000000000000000000000000000..af2bc93a78b4740525ec5dcbc00597886b7ff2e0
--- /dev/null
+++ b/Simulation/DetSimCore/src/EventAction.h
@@ -0,0 +1,19 @@
+#ifndef EventAction_h
+#define EventAction_h
+
+#include "G4UserEventAction.hh"
+
+class G4Event;
+
+class EventAction: public G4UserEventAction {
+public:
+
+    EventAction();
+    ~EventAction();
+
+    void BeginOfEventAction(const G4Event*) override;
+    void EndOfEventAction(const G4Event*) override;
+
+};
+
+#endif
diff --git a/Simulation/DetSimCore/src/RunAction.cpp b/Simulation/DetSimCore/src/RunAction.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b86ff14c215dccc43aa69f63437412d482b05243
--- /dev/null
+++ b/Simulation/DetSimCore/src/RunAction.cpp
@@ -0,0 +1,26 @@
+#include "RunAction.h"
+
+#include "G4Run.hh"
+
+RunAction::RunAction() 
+    : G4UserRunAction() {
+
+}
+
+RunAction::~RunAction() {
+
+}
+
+void 
+RunAction::BeginOfRunAction(const G4Run* aRun)
+{
+
+}
+
+void
+RunAction::EndOfRunAction(const G4Run* aRun)
+{
+
+}
+
+
diff --git a/Simulation/DetSimCore/src/RunAction.h b/Simulation/DetSimCore/src/RunAction.h
new file mode 100644
index 0000000000000000000000000000000000000000..72b7601280fa87143d5bab613c02152cd479b573
--- /dev/null
+++ b/Simulation/DetSimCore/src/RunAction.h
@@ -0,0 +1,20 @@
+#ifndef RunAction_h
+#define RunAction_h
+
+#include "G4UserRunAction.hh"
+
+class G4Run;
+
+
+class RunAction: public G4UserRunAction {
+
+public:
+    RunAction();
+    ~RunAction();
+
+    virtual void BeginOfRunAction(const G4Run*);
+    virtual void EndOfRunAction(const G4Run*);
+
+};
+
+#endif