diff --git a/DDCore/include/DD4hep/AlignmentsCalculator.h b/DDCore/include/DD4hep/AlignmentsCalculator.h
index dcf363c20ae643e236f4541d6bb39a39099cc6f8..f461657bb933d2a04158b4fde675775dc2c9aa2a 100644
--- a/DDCore/include/DD4hep/AlignmentsCalculator.h
+++ b/DDCore/include/DD4hep/AlignmentsCalculator.h
@@ -107,17 +107,20 @@ namespace dd4hep {
         Scanner() = delete;
         /// Initializing constructor
         Scanner(cond::ConditionUpdateContext& m, OrderedDeltas& d) : context(m), deltas(d) {}
+        /// Initializing constructor with IOV specification
         Scanner(cond::ConditionUpdateContext& m, OrderedDeltas& d, IOV* i) : context(m), deltas(d), iov(i) {}
         /// Default move constructor is disabled
         Scanner(cond::ConditionUpdateContext& m, OrderedDeltas&& p) = delete;
         /// R-value copy from a temporary
-        Scanner(Scanner&& copy) = default;
+        Scanner(Scanner&& copy) = delete;
         /// Copy constructor
-        Scanner(const Scanner& copy) = default;
+        Scanner(const Scanner& copy) = delete;
         /// Default destructor
         ~Scanner() = default;
         /// Assignment operator
-        Scanner& operator=(const Scanner& copy) = default;
+        Scanner& operator=(Scanner&& copy) = delete;
+        /// Assignment operator
+        Scanner& operator=(const Scanner& copy) = delete;
         /// Callback to output alignments information
         int operator()(DetElement de, int)  const;
       };
diff --git a/DDCore/include/DD4hep/detail/OpticalSurfaceManagerInterna.h b/DDCore/include/DD4hep/detail/OpticalSurfaceManagerInterna.h
index aba07e75ca00834e462af3b541ce5f37dd3e0ca3..6f7598669c6b174e097af36cb16077a6b60274df 100644
--- a/DDCore/include/DD4hep/detail/OpticalSurfaceManagerInterna.h
+++ b/DDCore/include/DD4hep/detail/OpticalSurfaceManagerInterna.h
@@ -64,7 +64,7 @@ namespace dd4hep {
       /// Default destructor
       virtual ~OpticalSurfaceManagerObject();
       /// No move assignment
-      OpticalSurfaceManagerObject& operator=(OpticalSurfaceManagerObject&& copy) = default;
+      OpticalSurfaceManagerObject& operator=(OpticalSurfaceManagerObject&& copy) = delete;
       /// No copy assignment
       OpticalSurfaceManagerObject& operator=(const OpticalSurfaceManagerObject& copy) = delete;
     };
diff --git a/DDDigi/include/DDDigi/DigiAction.h b/DDDigi/include/DDDigi/DigiAction.h
index a752ead24704dedf133884aa0946a9922323e1ef..a279733e9bc781626153ab43ede5a23af9be08ac 100644
--- a/DDDigi/include/DDDigi/DigiAction.h
+++ b/DDDigi/include/DDDigi/DigiAction.h
@@ -91,6 +91,7 @@ namespace dd4hep {
       
       /// Property: Support parallel execution
       bool               m_parallel    = false;
+
     protected:
 
       /// Functor to access elements by name
diff --git a/DDDigi/include/DDDigi/DigiActionSequence.h b/DDDigi/include/DDDigi/DigiActionSequence.h
index 50f43710e9cf237f89195ba461a954f6aa368f01..8364058333dae6a96cbcf9673a3f0f76702e861a 100644
--- a/DDDigi/include/DDDigi/DigiActionSequence.h
+++ b/DDDigi/include/DDDigi/DigiActionSequence.h
@@ -48,10 +48,14 @@ namespace dd4hep {
       CallbackSequence   m_end;
 
     protected:
-      /// Inhibit copy constructor
-      DigiActionSequence() = default;
+      /// Inhibit public use of default constructor
+      DigiActionSequence() = delete;
+      /// Inhibit move constructor
+      DigiActionSequence(DigiActionSequence&& copy) = delete;
       /// Inhibit copy constructor
       DigiActionSequence(const DigiActionSequence& copy) = delete;
+      /// Inhibit move operator
+      DigiActionSequence& operator=(DigiActionSequence&& copy) = delete;
       /// Inhibit assignment operator
       DigiActionSequence& operator=(const DigiActionSequence& copy) = delete;
 
diff --git a/DDDigi/include/DDDigi/DigiInputAction.h b/DDDigi/include/DDDigi/DigiInputAction.h
index e43a174224c4412612f83a67baa1f7c22f3b854a..b37a9cb605803641806bfc7b923ce0bb4aa11686 100644
--- a/DDDigi/include/DDDigi/DigiInputAction.h
+++ b/DDDigi/include/DDDigi/DigiInputAction.h
@@ -39,7 +39,7 @@ namespace dd4hep {
       
     protected:
       /// Inhibit copy constructor
-      DigiInputAction() = default;
+      DigiInputAction() = delete;
       /// Inhibit copy constructor
       DigiInputAction(const DigiInputAction& copy) = delete;
       /// Inhibit assignment operator
diff --git a/DDDigi/include/DDDigi/DigiLockedAction.h b/DDDigi/include/DDDigi/DigiLockedAction.h
index 59e331503f1e2efd0c2ee1facc5b57a3f99ed119..4d4c97e5dc1771b81bd49a0c2d45ed90a252b0fb 100644
--- a/DDDigi/include/DDDigi/DigiLockedAction.h
+++ b/DDDigi/include/DDDigi/DigiLockedAction.h
@@ -44,7 +44,7 @@ namespace dd4hep {
       DigiAction* m_action = 0;
     protected:
       /// Inhibit copy constructor
-      DigiLockedAction() = default;
+      DigiLockedAction() = delete;
       /// Inhibit copy constructor
       DigiLockedAction(const DigiLockedAction& copy) = delete;
       /// Inhibit assignment operator
diff --git a/DDDigi/include/DDDigi/DigiSynchronize.h b/DDDigi/include/DDDigi/DigiSynchronize.h
index cf4216d670053971fd771ff98aee478c9bfe88e7..c7f4bee0bc36a7cbaf39c2c4b41e51ab67484269 100644
--- a/DDDigi/include/DDDigi/DigiSynchronize.h
+++ b/DDDigi/include/DDDigi/DigiSynchronize.h
@@ -36,6 +36,17 @@ namespace dd4hep {
       /// The list of action objects to be called
       Actors<DigiAction> m_actors;
 
+      /// Inhibit public use of default constructor
+      DigiSynchronize() = default;
+      /// Inhibit move constructor
+      DigiSynchronize(DigiSynchronize&& copy) = delete;
+      /// Inhibit copy constructor
+      DigiSynchronize(const DigiSynchronize& copy) = delete;
+      /// Inhibit move operator
+      DigiSynchronize& operator=(DigiSynchronize&& copy) = delete;
+      /// Inhibit assignment operator
+      DigiSynchronize& operator=(const DigiSynchronize& copy) = delete;
+
     public:
       /// Standard constructor
       DigiSynchronize(const DigiKernel& kernel, const std::string& nam);
diff --git a/DDDigi/plugins/DigiRandomNoise.cpp b/DDDigi/plugins/DigiRandomNoise.cpp
index f6cc0f8f450a6db5d514ba7837bb5552eac3c324..5df242a4c8c6a6e50df82038c63eb6a2b7002f2e 100644
--- a/DDDigi/plugins/DigiRandomNoise.cpp
+++ b/DDDigi/plugins/DigiRandomNoise.cpp
@@ -42,7 +42,7 @@ namespace dd4hep {
       
     protected:
       /// Inhibit copy constructor
-      DigiRandomNoise() = default;
+      DigiRandomNoise() = delete;
       /// Inhibit copy constructor
       DigiRandomNoise(const DigiRandomNoise& copy) = delete;
       /// Inhibit assignment operator
diff --git a/DDDigi/src/DigiKernel.cpp b/DDDigi/src/DigiKernel.cpp
index 956145fbb44556a25ee4fecc75a0974ffda46717..c6924a1403e455dd9801c2f6fbe05941179f61b1 100644
--- a/DDDigi/src/DigiKernel.cpp
+++ b/DDDigi/src/DigiKernel.cpp
@@ -91,10 +91,10 @@ public:
   DigiAction*  action = 0;
   Wrapper(DigiContext& c, DigiAction* a)
     : context(c), action(a) {}
-  Wrapper(Wrapper&& copy) = default;
+  Wrapper(Wrapper&& copy) = delete;
   Wrapper(const Wrapper& copy) = default;
-  Wrapper& operator=(Wrapper&& copy) = default;
-  Wrapper& operator=(const Wrapper& copy) = default;
+  Wrapper& operator=(Wrapper&& copy) = delete;
+  Wrapper& operator=(const Wrapper& copy) = delete;
   void operator()() const {
     action->execute(context);
   }
@@ -111,7 +111,7 @@ class DigiKernel::Processor {
   DigiKernel& kernel;
 public: 
   Processor(DigiKernel& k) : kernel(k) {}
-  Processor(Processor&& l) = default;
+  Processor(Processor&& l) = delete;
   Processor(const Processor& l) = default;
   void operator()()  const {
     int todo = 1;
diff --git a/DDG4/include/DDG4/Geant4Action.h b/DDG4/include/DDG4/Geant4Action.h
index fa83db1e8db9bb60941f3f1740d530c6d80d7f3c..cfd0955758ea624e61e80aaff0175200d1eccda9 100644
--- a/DDG4/include/DDG4/Geant4Action.h
+++ b/DDG4/include/DDG4/Geant4Action.h
@@ -35,6 +35,26 @@ class G4UIdirectory;
 #include <string>
 #include <cstdarg>
 
+#if defined(G__ROOT) || defined(__CLING__) || defined(__ROOTCLING__)
+#define DDG4_DEFINE_ACTION_DEFAULT_CTOR(action)  public: action() = default;
+#else
+#define DDG4_DEFINE_ACTION_DEFAULT_CTOR(action)  protected: action() = delete;
+#endif
+
+/// 1) Allow default constructor (necessary for ROOT)
+/// 2) Inhibit move constructor
+/// 3) Inhibit copy constructor
+/// 4) Inhibit move operator
+/// 5) Inhibit assignment operator
+#define DDG4_DEFINE_ACTION_CONSTRUCTORS(action)  \
+  DDG4_DEFINE_ACTION_DEFAULT_CTOR(action)        \
+  protected:                                     \
+  action(action&& copy) = delete;                \
+  action(const action& copy) = delete;           \
+  action& operator=(action&& copy) = delete;     \
+  action& operator=(const action& copy) = delete
+
+
 /// Namespace for the AIDA detector description toolkit
 namespace dd4hep {
 
@@ -240,12 +260,9 @@ namespace dd4hep {
       };
 
     protected:
-      /// Inhibit default constructor
-      Geant4Action() = default;
-      /// Inhibit copy constructor
-      Geant4Action(const Geant4Action& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4Action& operator=(const Geant4Action& copy) = delete;
+      
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4Action);
 
       /// Default destructor
       virtual ~Geant4Action();
diff --git a/DDG4/include/DDG4/Geant4EventAction.h b/DDG4/include/DDG4/Geant4EventAction.h
index 7027fc2859bf9fd12249997b5079b75f5f809ff3..983cf5669ceac111a527053d3dd3aacef02c428a 100644
--- a/DDG4/include/DDG4/Geant4EventAction.h
+++ b/DDG4/include/DDG4/Geant4EventAction.h
@@ -53,15 +53,10 @@ namespace dd4hep {
     class Geant4EventAction : public Geant4Action {
     public:
       typedef Geant4SharedEventAction shared_type;
+      
     protected:
-      /// Inhibit copy constructor
-      Geant4EventAction() = default;
-      /// Inhibit move constructor
-      Geant4EventAction(Geant4EventAction&& copy) = delete;
-      /// Inhibit copy constructor
-      Geant4EventAction(const Geant4EventAction& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4EventAction& operator=(const Geant4EventAction& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4EventAction);
 
     public:
       /// Standard constructor
@@ -93,12 +88,8 @@ namespace dd4hep {
       Geant4EventAction* m_action = 0;
 
     protected:
-      /// Inhibit copy constructor
-      Geant4SharedEventAction() = default;
-      /// Inhibit copy constructor
-      Geant4SharedEventAction(const Geant4SharedEventAction& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4SharedEventAction& operator=(const Geant4SharedEventAction& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SharedEventAction);
 
     public:
       /// Standard constructor
@@ -140,14 +131,10 @@ namespace dd4hep {
       CallbackSequence m_final;
       /// The list of action objects to be called
       Actors<Geant4EventAction> m_actors;
-
+      
     protected:
-      /// Inhibit copy constructor
-      Geant4EventActionSequence() = default;
-      /// Inhibit copy constructor
-      Geant4EventActionSequence(const Geant4EventActionSequence& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4EventActionSequence& operator=(const Geant4EventActionSequence& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4EventActionSequence);
 
     public:
       /// Standard constructor
diff --git a/DDG4/include/DDG4/Geant4GeneratorAction.h b/DDG4/include/DDG4/Geant4GeneratorAction.h
index f588a94de338720f88d3a66f52576cb1b1855ede..1f38a4a1494ac5023075e0e767b279f9bc496315 100644
--- a/DDG4/include/DDG4/Geant4GeneratorAction.h
+++ b/DDG4/include/DDG4/Geant4GeneratorAction.h
@@ -49,9 +49,10 @@ namespace dd4hep {
       typedef Geant4SharedGeneratorAction shared_type;
     protected:
       Callback m_calls;
+      
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4GeneratorAction);
     public:
-      /// Default constructor
-      Geant4GeneratorAction() = default;
       /// Standard constructor
       Geant4GeneratorAction(Geant4Context* context, const std::string& name);
       /// Default destructor
@@ -78,9 +79,10 @@ namespace dd4hep {
     protected:
       /// Reference to the shared action
       Geant4GeneratorAction* m_action = 0;
+      
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SharedGeneratorAction);
     public:
-      /// Default constructor
-      Geant4SharedGeneratorAction() = default;
       /// Standard constructor
       Geant4SharedGeneratorAction(Geant4Context* context, const std::string& nam);
       /// Default destructor
@@ -116,9 +118,10 @@ namespace dd4hep {
       CallbackSequence m_calls;
       /// The list of action objects to be called
       Actors<Geant4GeneratorAction> m_actors;
+      
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4GeneratorActionSequence);
     public:
-      /// Default constructor
-      Geant4GeneratorActionSequence() = default;
       /// Standard constructor
       Geant4GeneratorActionSequence(Geant4Context* context, const std::string& name);
       /// Default destructor
diff --git a/DDG4/include/DDG4/Geant4RunAction.h b/DDG4/include/DDG4/Geant4RunAction.h
index 92b2efb995e3c5f22c2a459dc1c6052f6beb4ccf..ad986e74ab8211d749b4f2a2edae21772155d2b4 100644
--- a/DDG4/include/DDG4/Geant4RunAction.h
+++ b/DDG4/include/DDG4/Geant4RunAction.h
@@ -47,12 +47,8 @@ namespace dd4hep {
       typedef Geant4SharedRunAction shared_type;
 
     protected:
-      /// Inhibit default constructor
-      Geant4RunAction() = default;
-      /// Inhibit copy constructor
-      Geant4RunAction(const Geant4RunAction& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4RunAction& operator=(const Geant4RunAction& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4RunAction);
 
     public:
       /// Standard constructor
@@ -84,12 +80,8 @@ namespace dd4hep {
       Geant4RunAction* m_action = 0;
 
     protected:
-      /// Inhibit default constructor
-      Geant4SharedRunAction() = default;
-      /// Inhibit copy constructor
-      Geant4SharedRunAction(const Geant4SharedRunAction& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4SharedRunAction& operator=(const Geant4SharedRunAction& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SharedRunAction);
 
     public:
       /// Inhibit default constructor
@@ -133,12 +125,8 @@ namespace dd4hep {
       Actors<Geant4RunAction> m_actors;
 
     protected:
-      /// Inhibit default constructor
-      Geant4RunActionSequence() = default;
-      /// Inhibit copy constructor
-      Geant4RunActionSequence(const Geant4RunActionSequence& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4RunActionSequence& operator=(const Geant4RunActionSequence& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4RunActionSequence);
 
     public:
       /// Standard constructor
diff --git a/DDG4/include/DDG4/Geant4SensDetAction.h b/DDG4/include/DDG4/Geant4SensDetAction.h
index bd810de553a9b486592f968ed05bcf9f94c63ab6..16bde16dc14907841941c19303ca8bb9e9ccc2d1 100644
--- a/DDG4/include/DDG4/Geant4SensDetAction.h
+++ b/DDG4/include/DDG4/Geant4SensDetAction.h
@@ -56,6 +56,8 @@ namespace dd4hep {
      */
     class Geant4ActionSD: virtual public Geant4Action {
     protected:
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4ActionSD);
       /// Standard action constructor
       Geant4ActionSD(const std::string& name);
       /// Default destructor
@@ -87,12 +89,8 @@ namespace dd4hep {
      */
     class Geant4Filter: public Geant4Action {
     protected:
-      /// Inhibit copy constructor
-      Geant4Filter() = default;
-      /// Inhibit copy constructor
-      Geant4Filter(const Geant4Filter& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4Filter& operator=(const Geant4Filter& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4Filter);
 
     public:
       /// Standard constructor
@@ -139,16 +137,13 @@ namespace dd4hep {
       /// The list of sensitive detector filter objects
       Actors<Geant4Filter> m_filters;
 
-      /// Protect the default constructor
-      Geant4Sensitive() = default;
-      /// Inhibit copy constructor
-      Geant4Sensitive(const Geant4Sensitive& copy) = delete;
-      /// Inhibit assignment operator
-      Geant4Sensitive& operator=(const Geant4Sensitive& copy) = delete;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4Sensitive);
 
     public:
       /// Constructor. The sensitive detector element is identified by the detector name
       Geant4Sensitive(Geant4Context* context, const std::string& name, DetElement det, Detector& description);
+
       /// Standard destructor
       virtual ~Geant4Sensitive();
 
@@ -314,22 +309,16 @@ namespace dd4hep {
       }
 
     protected:
-      /// Protect the default constructor
-      Geant4SensDetActionSequence() = default;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SensDetActionSequence);
 
     public:
-      /// Inhibit copy constructor
-      Geant4SensDetActionSequence(const Geant4SensDetActionSequence& copy) = delete;
-
       /// Standard constructor
       Geant4SensDetActionSequence(Geant4Context* context, const std::string& name);
 
       /// Default destructor
       virtual ~Geant4SensDetActionSequence();
 
-      /// Inhibit assignment operator
-      Geant4SensDetActionSequence& operator=(const Geant4SensDetActionSequence& copy) = delete;
-
       /// Access to the sensitive type of the detector
       virtual const std::string& sensitiveType() const   {
         return m_sensitiveType;
@@ -488,8 +477,8 @@ namespace dd4hep {
       UserData    m_userData;
 
     protected:
-      /// Protect the default constructor
-      Geant4SensitiveAction() = default;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SensitiveAction);
 
     public:
       /// Standard , initializing constructor
diff --git a/DDG4/include/DDG4/Geant4StackingAction.h b/DDG4/include/DDG4/Geant4StackingAction.h
index 822f98a0d4f4896d7a3b55d73b4d2517b3c07f08..ea6a98d984803c898b4e8ca4eaceaea359cb8f58 100644
--- a/DDG4/include/DDG4/Geant4StackingAction.h
+++ b/DDG4/include/DDG4/Geant4StackingAction.h
@@ -36,6 +36,9 @@ namespace dd4hep {
     class Geant4StackingAction: public Geant4Action {
     public:
       typedef Geant4SharedStackingAction shared_type;
+    public:
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4StackingAction);
     public:
       /// Standard constructor
       Geant4StackingAction(Geant4Context* ctxt, const std::string& name);
@@ -66,6 +69,8 @@ namespace dd4hep {
     protected:
       /// Reference to the shared action
       Geant4StackingAction* m_action;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SharedStackingAction);
     public:
       /// Standard constructor
       Geant4SharedStackingAction(Geant4Context* context, const std::string& nam);
@@ -104,6 +109,9 @@ namespace dd4hep {
       CallbackSequence m_prepare;
       /// The list of action objects to be called
       Actors<Geant4StackingAction> m_actors;
+
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4StackingActionSequence);
     public:
       /// Standard constructor
       Geant4StackingActionSequence(Geant4Context* ctxt, const std::string& name);
diff --git a/DDG4/include/DDG4/Geant4SteppingAction.h b/DDG4/include/DDG4/Geant4SteppingAction.h
index 7e95ae3c10b1b47bb437bfb1a603259788c7d431..cf16dddfc60b744684b260bfbb24b25474567a09 100644
--- a/DDG4/include/DDG4/Geant4SteppingAction.h
+++ b/DDG4/include/DDG4/Geant4SteppingAction.h
@@ -40,11 +40,10 @@ namespace dd4hep {
     class Geant4SteppingAction: public Geant4Action {
     public:
       typedef Geant4SharedSteppingAction shared_type;
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SteppingAction);
+
     public:
-      /// Default constructor
-      Geant4SteppingAction() = default;
-      /// Inhibit copy constructor
-      Geant4SteppingAction(const Geant4SteppingAction& copy) = default;
       /// Standard constructor
       Geant4SteppingAction(Geant4Context* context, const std::string& name);
       /// Default destructor
@@ -70,11 +69,11 @@ namespace dd4hep {
     protected:
       /// Reference to the shared action
       Geant4SteppingAction* m_action = 0;
+
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SharedSteppingAction);
+
     public:
-      /// Default constructor
-      Geant4SharedSteppingAction() = default;
-      /// Inhibit copy constructor
-      Geant4SharedSteppingAction(const Geant4SteppingAction& copy) = delete;
       /// Standard constructor
       Geant4SharedSteppingAction(Geant4Context* context, const std::string& nam);
       /// Default destructor
@@ -109,9 +108,10 @@ namespace dd4hep {
       /// The list of action objects to be called
       Actors<Geant4SteppingAction> m_actors;
 
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SteppingActionSequence);
+
     public:
-      /// Inhibit copy constructor
-      Geant4SteppingActionSequence(const Geant4SteppingAction& copy) = delete;
       /// Standard constructor
       Geant4SteppingActionSequence(Geant4Context* context, const std::string& name);
       /// Default destructor
diff --git a/DDG4/include/DDG4/Geant4TrackingAction.h b/DDG4/include/DDG4/Geant4TrackingAction.h
index 721e85780736aa1c208713d3d91ccac4512ea89b..ddcad1066233571556d471907ee4a24a2befaeef 100644
--- a/DDG4/include/DDG4/Geant4TrackingAction.h
+++ b/DDG4/include/DDG4/Geant4TrackingAction.h
@@ -41,11 +41,10 @@ namespace dd4hep {
     class Geant4TrackingAction: public Geant4Action {
     public:
       typedef Geant4SharedTrackingAction shared_type;
+
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4TrackingAction);
     public:
-      /// Default constructor
-      Geant4TrackingAction() = default;
-      /// Inhibit copy constructor
-      Geant4TrackingAction(const Geant4TrackingAction& copy) = delete;
       /// Standard constructor
       Geant4TrackingAction(Geant4Context* context, const std::string& name = "");
       /// Default destructor
@@ -80,11 +79,9 @@ namespace dd4hep {
       /// Reference to the shared action
       Geant4TrackingAction* m_action = 0;
 
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4SharedTrackingAction);
     public:
-      /// Default constructor
-      Geant4SharedTrackingAction() = default;
-      /// Inhibit copy constructor
-      Geant4SharedTrackingAction(const Geant4TrackingAction& copy) = delete;
       /// Standard constructor
       Geant4SharedTrackingAction(Geant4Context* context, const std::string& nam);
       /// Default destructor
@@ -126,11 +123,12 @@ namespace dd4hep {
       CallbackSequence             m_final;
       /// The list of action objects to be called
       Actors<Geant4TrackingAction> m_actors;
+
+
+      /// Define standard assignments and constructors
+      DDG4_DEFINE_ACTION_CONSTRUCTORS(Geant4TrackingActionSequence);
+
     public:
-      /// Default constructor
-      Geant4TrackingActionSequence() = default;
-      /// Inhibit copy constructor
-      Geant4TrackingActionSequence(const Geant4TrackingActionSequence& copy) = delete;
       /// Standard constructor
       Geant4TrackingActionSequence(Geant4Context* context, const std::string& name);
       /// Default destructor