diff --git a/DDAlign/include/DDAlign/AlignmentOperators.h b/DDAlign/include/DDAlign/AlignmentOperators.h
index 080bfc449bada8b44974605124373cef3184d18a..e03665355788f0e61abda26521d7b2b90eca919e 100644
--- a/DDAlign/include/DDAlign/AlignmentOperators.h
+++ b/DDAlign/include/DDAlign/AlignmentOperators.h
@@ -57,7 +57,6 @@ namespace DD4hep {
       const Entries& entries;
       /// Initializing functor constructor
       AlignmentSelector(GlobalAlignmentCache& c, Nodes& n, const Entries& e) : AlignmentOperator(c,n), entries(e) {}
-      ~AlignmentSelector() { }
       const AlignmentSelector& reset()   const { nodes.clear(); return *this; }
       /// Function callback for cache entries
       void operator()(const GlobalAlignmentCache::Cache::value_type& e) const;
diff --git a/DDAlign/include/DDAlign/AlignmentsManager.h b/DDAlign/include/DDAlign/AlignmentsManager.h
index 7402335b803e80430cf99dd06a92dd479243d3f3..453c97cb2cda40576115c2f1613c754ffce918e6 100644
--- a/DDAlign/include/DDAlign/AlignmentsManager.h
+++ b/DDAlign/include/DDAlign/AlignmentsManager.h
@@ -68,7 +68,9 @@ namespace DD4hep {
       template <typename T> static AlignmentsManager from(T& host);
 
       /// Default constructor
-      AlignmentsManager() : Handle<Object>(0) {}
+      AlignmentsManager() = default;
+      /// Copy constructor
+      AlignmentsManager(const AlignmentsManager& copy) = default;
       /// Constructor to be used for proper handles
       AlignmentsManager(const Handle<Object>& e) : Handle<Object>(e) {}
       /// Constructor to be used for proper handles
@@ -77,8 +79,8 @@ namespace DD4hep {
       AlignmentsManager(const std::string& name);
       /// Initializing constructor. Creates the object!
       AlignmentsManager(char const* name);
-      /// Default destructor
-      ~AlignmentsManager() {}
+      /// Assignment operator
+      AlignmentsManager& operator=(const AlignmentsManager& mgr) = default;
       /// Delete the manager. Be careful: this affects all referencing handles!
       void destroy();
       /// Adopy alignment dependency for later recalculation
diff --git a/DDAlign/src/AlignmentsManager.cpp b/DDAlign/src/AlignmentsManager.cpp
index 9314678a9f9d310b286219955bca57d57c59eb85..ca6762a1454124d2e4d76ce0a41dba9577a8e985 100644
--- a/DDAlign/src/AlignmentsManager.cpp
+++ b/DDAlign/src/AlignmentsManager.cpp
@@ -32,7 +32,8 @@ namespace DD4hep {
 
     typedef Conditions::ConditionDependency Dependency;
 
-    struct AlignContext {
+    class AlignContext {
+    public:
       struct Entry {
         const Dependency*           dep;
         DetElement::Object*         det;
diff --git a/DDG4/include/DDG4/Geant4PhysicsList.h b/DDG4/include/DDG4/Geant4PhysicsList.h
index b52ce05144bbea5ab2c1aab291f4d16b62a3c960..75c85a5342b7d84aaa7798d6204e819f76be9d6f 100644
--- a/DDG4/include/DDG4/Geant4PhysicsList.h
+++ b/DDG4/include/DDG4/Geant4PhysicsList.h
@@ -66,14 +66,12 @@ namespace DD4hep {
       typedef std::map<std::string, ParticleProcesses> PhysicsProcesses;
 
       /// Structure describing a G4 particle constructor
-      class ParticleConstructor: public std::string {
+      class ParticleConstructor : public std::string {
       public:
         /// Default constructor
         ParticleConstructor() = default;
         /// Initalizing constructor
         ParticleConstructor(const std::string& s) : std::string(s) { }
-        /// Default destructor
-        ~ParticleConstructor() {}
         /// Assignment operator
         ParticleConstructor& operator=(const ParticleConstructor& c)  {
           if ( &c != this ) this->std::string::operator=(c);
@@ -99,8 +97,6 @@ namespace DD4hep {
         PhysicsConstructor(const PhysicsConstructor& c) : std::string(c), pointer(c.pointer)  {}
         /// Initalizing constructor
         PhysicsConstructor(const std::string& s) : std::string(s), pointer(0)  {}
-        /// Default destructor
-        ~PhysicsConstructor() {}
         /// Assignment operator
         PhysicsConstructor& operator=(const PhysicsConstructor& c)  {
           if ( &c != this ) { this->std::string::operator=(c); pointer=c.pointer; }
diff --git a/DDG4/src/Geant4Random.cpp b/DDG4/src/Geant4Random.cpp
index c0fce221f4d842f5fe012f5487581b14461d253a..769193cfc3dd961b28665dc164d7a28a3a6d199c 100644
--- a/DDG4/src/Geant4Random.cpp
+++ b/DDG4/src/Geant4Random.cpp
@@ -54,6 +54,11 @@ namespace    {
       fSeed = seed;
       m_generator->setSeed((long)seed);
     }
+    /// Set new seed
+    virtual  void SetSeed(ULong_t seed=0)    {
+      fSeed = seed;
+      m_generator->setSeed((long)seed);
+    }
     /// Single shot random number creation
     virtual Double_t Rndm(Int_t)  {
       return m_engine->flat();
diff --git a/DDRec/include/DDRec/Material.h b/DDRec/include/DDRec/Material.h
index 8c6bd7b1d890245249531c7141b9e6635db5c3f2..ecdd3abc8b01591b9f26b09ae491b4a9eaf513b6 100644
--- a/DDRec/include/DDRec/Material.h
+++ b/DDRec/include/DDRec/Material.h
@@ -87,14 +87,14 @@ namespace DD4hep {
 
       /// assignment from Geometry::Material
       MaterialData& operator=(const IMaterial& m){
-      
-	_name = m.name() ;
-	_Z = m.Z() ;
-	_A = m.A() ;
-	_rho = m.density() ;
-	_x0 = m.radiationLength() ;
-	_lambda = m.interactionLength() ;
-	
+        if ( this != &m )  {
+          _name = m.name() ;
+          _Z = m.Z() ;
+          _A = m.A() ;
+          _rho = m.density() ;
+          _x0 = m.radiationLength() ;
+          _lambda = m.interactionLength() ;
+        }
         return *this ;
       }
 
diff --git a/DDSurfaces/include/DDSurfaces/IMaterial.h b/DDSurfaces/include/DDSurfaces/IMaterial.h
index ade46aba515f5d0908b00e24c694b3f67e3827a0..40e75521ba40464bab6a9dff7d25be60b6083519 100644
--- a/DDSurfaces/include/DDSurfaces/IMaterial.h
+++ b/DDSurfaces/include/DDSurfaces/IMaterial.h
@@ -14,12 +14,16 @@ namespace DDSurfaces {
    */
   
   class IMaterial {
+
+  protected:    
+    /// Assignment operator
+    IMaterial& operator=(const IMaterial&) { return *this; }
     
   public:
     
     /// Destructor
     virtual ~IMaterial() {}
-    
+
     /// material name
     virtual std::string name() const =0 ;