diff --git a/DDCond/include/DDCond/ConditionsContent.h b/DDCond/include/DDCond/ConditionsContent.h
index a28b861e0923564df538c63258cc2044ee93604a..2238fd0f5d94c8b40bbb5232106d059e6429845e 100644
--- a/DDCond/include/DDCond/ConditionsContent.h
+++ b/DDCond/include/DDCond/ConditionsContent.h
@@ -76,9 +76,12 @@ namespace dd4hep {
         LoadInfo(const LoadInfo& c) = default;
         virtual ~LoadInfo()         = default;
         LoadInfo& operator=(const LoadInfo& copy) = default;
-        virtual const std::type_info& type()   const { return typeid(T); }
-        virtual const void*           ptr()    const { return &info;     }
-        virtual ConditionsLoadInfo*   clone()  const { return new LoadInfo<T>(info);     }
+        virtual const std::type_info& type()   const  override
+        { return typeid(T);                      }
+        virtual const void*           ptr()    const  override
+        { return &info;                          }
+        virtual ConditionsLoadInfo*   clone()  const  override
+        { return new LoadInfo<T>(info);          }
       };
      
       typedef std::map<Condition::key_type,ConditionDependency* > Dependencies;
diff --git a/DDG4/plugins/Geant4SensDetFilters.cpp b/DDG4/plugins/Geant4SensDetFilters.cpp
index feec7eea861e7f42c850609db6c55dabd8d98272..feac568e9dd24954cee366346b41bf3e8aeb8cdf 100644
--- a/DDG4/plugins/Geant4SensDetFilters.cpp
+++ b/DDG4/plugins/Geant4SensDetFilters.cpp
@@ -60,7 +60,7 @@ namespace dd4hep {
       /// Standard destructor
       virtual ~ParticleRejectFilter();
       /// Filter action. Return true if hits should be processed
-      virtual bool operator()(const G4Step* step) const;
+      virtual bool operator()(const G4Step* step) const  final;
     };
 
     /// Geant4 sensitive detector filter implementing a particle selector
@@ -75,7 +75,7 @@ namespace dd4hep {
       /// Standard destructor
       virtual ~ParticleSelectFilter();
       /// Filter action. Return true if hits should be processed
-      virtual bool operator()(const G4Step* step) const;
+      virtual bool operator()(const G4Step* step) const  final;
     };
 
     /// Geant4 sensitive detector filter implementing a Geantino rejector
@@ -90,7 +90,7 @@ namespace dd4hep {
       /// Standard destructor
       virtual ~GeantinoRejectFilter();
       /// Filter action. Return true if hits should be processed
-      virtual bool operator()(const G4Step* step) const;
+      virtual bool operator()(const G4Step* step) const  final;
     };
 
     /// Geant4 sensitive detector filter implementing an energy cut.
@@ -108,7 +108,7 @@ namespace dd4hep {
       /// Standard destructor
       virtual ~EnergyDepositMinimumCut();
       /// Filter action. Return true if hits should be processed
-      virtual bool operator()(const G4Step* step) const;
+      virtual bool operator()(const G4Step* step) const  final;
     };
   }
 }
diff --git a/DDG4/src/Geant4Exec.cpp b/DDG4/src/Geant4Exec.cpp
index 1d211f938bfbea057c38158644e93ab32bb11379..573ce5d1e383a2c42499cff80e3f3daffe2ee699 100644
--- a/DDG4/src/Geant4Exec.cpp
+++ b/DDG4/src/Geant4Exec.cpp
@@ -165,9 +165,9 @@ namespace dd4hep {
       virtual ~Geant4UserRunAction() {
       }
       /// Begin-of-run callback
-      virtual void BeginOfRunAction(const G4Run* run);
+      virtual void BeginOfRunAction(const G4Run* run)  final;
       /// End-of-run callback
-      virtual void EndOfRunAction(const G4Run* run);
+      virtual void EndOfRunAction(const G4Run* run)  final;
     };
 
     /// Concrete implementation of the Geant4 event action
@@ -192,9 +192,9 @@ namespace dd4hep {
       virtual ~Geant4UserEventAction() {
       }
       /// Begin-of-event callback
-      virtual void BeginOfEventAction(const G4Event* evt);
+      virtual void BeginOfEventAction(const G4Event* evt)  final;
       /// End-of-event callback
-      virtual void EndOfEventAction(const G4Event* evt);
+      virtual void EndOfEventAction(const G4Event* evt)  final;
     };
 
     /// Concrete implementation of the Geant4 tracking action
@@ -218,12 +218,12 @@ namespace dd4hep {
       virtual ~Geant4UserTrackingAction() {
       }
       /// Pre-track action callback
-      virtual void PreUserTrackingAction(const G4Track* trk) {
+      virtual void PreUserTrackingAction(const G4Track* trk)  final  {
         m_sequence->context()->kernel().setTrackMgr(fpTrackingManager);
         m_sequence->begin(trk);
       }
       /// Post-track action callback
-      virtual void PostUserTrackingAction(const G4Track* trk) {
+      virtual void PostUserTrackingAction(const G4Track* trk)   final  {
         m_sequence->end(trk);
         m_sequence->context()->kernel().setTrackMgr(0);
       }
@@ -250,11 +250,11 @@ namespace dd4hep {
       virtual ~Geant4UserStackingAction() {
       }
       /// New-stage callback
-      virtual void NewStage() {
+      virtual void NewStage()  final  {
         m_sequence->newStage();
       }
       /// Preparation callback
-      virtual void PrepareNewEvent() {
+      virtual void PrepareNewEvent()  final  {
         m_sequence->prepare();
       }
     };
@@ -281,7 +281,7 @@ namespace dd4hep {
       virtual ~Geant4UserGeneratorAction() {
       }
       /// Generate primary particles
-      virtual void GeneratePrimaries(G4Event* event);
+      virtual void GeneratePrimaries(G4Event* event)  final;
     };
 
     /// Concrete implementation of the Geant4 stepping action
@@ -305,7 +305,7 @@ namespace dd4hep {
       virtual ~Geant4UserSteppingAction() {
       }
       /// User stepping callback
-      virtual void UserSteppingAction(const G4Step* s) {
+      virtual void UserSteppingAction(const G4Step* s)   final  {
         (*m_sequence)(s, fpSteppingManager);
       }
     };
@@ -333,9 +333,9 @@ namespace dd4hep {
       virtual ~Geant4UserDetectorConstruction() {
       }
       /// Call the actions for the construction of the sensitive detectors and the field
-      virtual void ConstructSDandField();
+      virtual void ConstructSDandField()  final;
       /// Call the actions to construct the detector geometry
-      virtual G4VPhysicalVolume* Construct();
+      virtual G4VPhysicalVolume* Construct()  final;
     };
 
     /// Concrete implementation of the Geant4 user initialization action sequence
@@ -354,12 +354,12 @@ namespace dd4hep {
         : G4VUserActionInitialization(), Base(ctxt, seq) {
       }
       /// Default destructor
-      virtual ~Geant4UserActionInitialization() {
+      virtual ~Geant4UserActionInitialization()  {
       }
       /// Build the actions for the worker thread
-      virtual void Build()  const;
+      virtual void Build()  const  final;
       /// Build the action sequences for the master thread
-      virtual void BuildForMaster()  const;
+      virtual void BuildForMaster()  const  final;
     };
 
     /// Begin-of-run callback
diff --git a/DDG4/src/Geant4Random.cpp b/DDG4/src/Geant4Random.cpp
index a86728d2a45bf690cb2cb5cb62030978571a569b..d79c68cb6f13672de6c06ce827b6d311ce9427d9 100644
--- a/DDG4/src/Geant4Random.cpp
+++ b/DDG4/src/Geant4Random.cpp
@@ -49,29 +49,29 @@ namespace    {
     /// Default destructor
     virtual ~RNDM() {      }
     /// Set new seed
-    virtual  void SetSeed(UInt_t seed=0)    {
+    virtual  void SetSeed(UInt_t seed=0)  final  {
       fSeed = seed;
       m_generator->setSeed((long)seed);
     }
     /// Set new seed
-    virtual  void SetSeed(ULong_t seed=0)    {
+    virtual  void SetSeed(ULong_t seed=0)  final  {
       fSeed = seed;
       m_generator->setSeed((long)seed);
     }
     /// Single shot random number creation
-    virtual Double_t Rndm()  {
+    virtual Double_t Rndm()  final {
       return m_engine->flat();
     }
     /// Single shot random number creation
-    virtual Double_t Rndm(Int_t)  {
+    virtual Double_t Rndm(Int_t)  final  {
       return m_engine->flat();
     }
     /// Return an array of n random numbers uniformly distributed in ]0,1].
-    virtual void RndmArray(Int_t size, Float_t *array)    {
+    virtual void RndmArray(Int_t size, Float_t *array)  final  {
       for (Int_t i=0;i<size;i++) array[i] = m_engine->flat();
     }
     /// Return an array of n random numbers uniformly distributed in ]0,1].
-    virtual void RndmArray(Int_t size, Double_t *array)    {
+    virtual void RndmArray(Int_t size, Double_t *array)  final  {
       m_engine->flatArray(size,array);
     }
   };
diff --git a/examples/DDDB/include/DDDB/DDDBConversion.h b/examples/DDDB/include/DDDB/DDDBConversion.h
index 666b281e38efaf62b30353f3544b97407c01c31c..86381531e5618e28f25013754d057f49f03720c3 100644
--- a/examples/DDDB/include/DDDB/DDDBConversion.h
+++ b/examples/DDDB/include/DDDB/DDDBConversion.h
@@ -50,11 +50,11 @@ namespace dd4hep {
       typedef std::map<std::string, std::string> StringMap;
       typedef std::map<std::string, std::pair<std::string,std::string > > StringPairMap;
       std::string  name, id;
-      DDDBDocument*    document;
-      int          refCount;
+      DDDBDocument* document = 0;
+      int           refCount = 0;
 
       /// Default constructor
-      DDDBNamed();
+      DDDBNamed() = default;
       /// Initializing constructor
       DDDBNamed(const std::string& c);
       /// Copy constructor
diff --git a/examples/DDDB/src/DDDBConversion.cpp b/examples/DDDB/src/DDDBConversion.cpp
index c64f72bc170c941a626bbd34460cb94737f585ed..1fc736fbd17ed5e4ebcf521b874354fa288ca5ef 100644
--- a/examples/DDDB/src/DDDBConversion.cpp
+++ b/examples/DDDB/src/DDDBConversion.cpp
@@ -77,12 +77,6 @@ namespace dd4hep  {
     InstanceCount::decrement(this);
   }
 
-  /// Default constructor
-  DDDBNamed::DDDBNamed()
-    : name(), id(), document(0), refCount(0)
-  {
-  }
-
   /// Initializing constructor
   DDDBNamed::DDDBNamed(const std::string& c)
     : name(c), id(), document(0), refCount(0)
diff --git a/examples/DDDB/src/plugins/CondDB2DDDB.cpp b/examples/DDDB/src/plugins/CondDB2DDDB.cpp
index 23590dfa848250c0462cb2c83cb255baab3fa5c2..3094b8da2403ea0db88fab0503c423100333a627 100644
--- a/examples/DDDB/src/plugins/CondDB2DDDB.cpp
+++ b/examples/DDDB/src/plugins/CondDB2DDDB.cpp
@@ -119,14 +119,10 @@ namespace dd4hep {
       class Locals  {
       public:
         string obj_path;
-        DDDBDocument* xml_doc;
-        Locals() : obj_path(), xml_doc(0) {}
-        Locals(const Locals& c) : obj_path(c.obj_path), xml_doc(c.xml_doc) {}
-        Locals& operator=(const Locals& c)  {
-          obj_path = c.obj_path;
-          xml_doc  = c.xml_doc;
-          return *this;
-        }
+        DDDBDocument* xml_doc = 0;
+        Locals() = default;
+        Locals(const Locals& c) = default;
+        Locals& operator=(const Locals& c) = default;
       };
 
       /// Helper class to preserve local processing environment
@@ -184,8 +180,7 @@ namespace dd4hep {
       /// Initializing constructor
       DDDBContext(Detector* d);
       /// Default destructor
-      ~DDDBContext()  {
-      }
+      ~DDDBContext() = default;
 
       /** Printout helpers                                                                             */
       void print(const DDDBIsotope* obj)   const               { if ( print_materials ) dddb_print(obj);    }
@@ -222,7 +217,7 @@ namespace dd4hep {
       void collectPath(const string& path, DDDBMaterial*  obj) { collect_p(geo->materialPaths,  path, obj); }
       void collectPath(const string& path, DDDBPhysVol*   obj) { collect_p(geo->placementPaths, path, obj); }
       void collectPath(const string& path, DDDBLogVol*    obj) { collect_p(geo->volumePaths,    path, obj); }
-      void collectPath(const string& path, DDDBTabProperty*   obj) { collect_p(geo->tabpropertyPaths, path, obj); }
+      void collectPath(const string& path, DDDBTabProperty* obj) { collect_p(geo->tabpropertyPaths, path, obj); }
       void collectPath(const string& path, DDDBCatalog*   obj) { collect_p(geo->catalogPaths,   path, obj); }
       void collectPath(const string& path, Condition& object) {
         dddb::Conditions::const_iterator i=geo->conditionPaths.find(path);
diff --git a/examples/DDDB/src/plugins/DDDBFileReader.cpp b/examples/DDDB/src/plugins/DDDBFileReader.cpp
index 80c56677d83aa41b077a6de84431006f0acd1b99..6c16d9de096f84153569d427ae54853a79d92545 100644
--- a/examples/DDDB/src/plugins/DDDBFileReader.cpp
+++ b/examples/DDDB/src/plugins/DDDBFileReader.cpp
@@ -44,15 +44,15 @@ namespace dd4hep {
       /// Default destructor
       virtual ~DDDBFileReader()  {}
       /// Read raw XML object from the database / file
-      virtual int getObject(const std::string& system_id, UserContext* ctxt, std::string& data);
+      virtual int getObject(const std::string& system_id, UserContext* ctxt, std::string& data)  override;
       /// Inform reader about a locally (e.g. by XercesC) handled source load
-      virtual void parserLoaded(const std::string& system_id);
+      virtual void parserLoaded(const std::string& system_id)  override;
       /// Inform reader about a locally (e.g. by XercesC) handled source load
-      virtual void parserLoaded(const std::string& system_id, UserContext* ctxt);
+      virtual void parserLoaded(const std::string& system_id, UserContext* ctxt)  override;
       /// Resolve a given URI to a string containing the data
-      virtual bool load(const std::string& system_id, std::string& buffer);
+      virtual bool load(const std::string& system_id, std::string& buffer)  override;
       /// Resolve a given URI to a string containing the data
-      virtual bool load(const std::string& system_id, UserContext* ctxt, std::string& buffer);
+      virtual bool load(const std::string& system_id, UserContext* ctxt, std::string& buffer)  override;
 
     };
   }    /* End namespace DDDB            */