diff --git a/DDCore/include/DD4hep/Printout.h b/DDCore/include/DD4hep/Printout.h
index 54c541e459d8285c3de007aa21f64d8bd5030549..6ba805e3985d8930f1719836d8006a7d60ce2822 100644
--- a/DDCore/include/DD4hep/Printout.h
+++ b/DDCore/include/DD4hep/Printout.h
@@ -36,7 +36,7 @@ namespace DD4hep {
     class VisAttr;
     class DetElement;
     class PlacedVolume;
-    template <typename T> struct Handle;
+    template <typename T> class Handle;
     typedef Handle<NamedObject> Ref_t;
   }
 
diff --git a/DDCore/include/DD4hep/Shapes.h b/DDCore/include/DD4hep/Shapes.h
index 22e5617418d322748d1ccd539d2b371cc7b4aef6..70c26f9c7abf7557e017614fe64d9c2c1370342d 100644
--- a/DDCore/include/DD4hep/Shapes.h
+++ b/DDCore/include/DD4hep/Shapes.h
@@ -48,7 +48,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    template <typename T> struct Solid_type: public Handle<T> {
+    template <typename T> class Solid_type: public Handle<T> {
     protected:
       typedef T Implementation;
       void _setDimensions(double* param);
@@ -102,7 +102,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Box: public Solid_type<TGeoBBox> {
+    class Box: public Solid_type<TGeoBBox> {
     protected:
       /// Internal helper method to support object construction
       void make(const std::string& name, double x, double y, double z);
@@ -156,7 +156,8 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Polycone: public Solid_type<TGeoPcon> {
+    class Polycone: public Solid_type<TGeoPcon> {
+    public:
       /// Constructor to be used when reading the already parsed polycone object
       template <typename Q> Polycone(const Handle<Q>& e)
           : Solid_type<TGeoPcon>(e) {
@@ -185,7 +186,8 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct ConeSegment: public Solid_type<TGeoConeSeg> {
+    class ConeSegment: public Solid_type<TGeoConeSeg> {
+    public:
       /// Constructor to be used when reading the already parsed ConeSegment object
       template <typename Q> ConeSegment(const Handle<Q>& e)
           : Solid_type<TGeoConeSeg>(e) {
@@ -201,7 +203,7 @@ namespace DD4hep {
     };
 
     /// Intermediate class to overcome drawing probles with the TGeoTubeSeg
-    struct MyConeSeg: public TGeoConeSeg {
+    class MyConeSeg: public TGeoConeSeg {
     public:
       MyConeSeg()
           : TGeoConeSeg() {
@@ -228,7 +230,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Tube: public Solid_type< /*TGeoTubeSeg */MyConeSeg> {
+    class Tube: public Solid_type< /*TGeoTubeSeg */MyConeSeg> {
     protected:
       /// Internal helper method to support object construction
       void make(const std::string& name, double rmin, double rmax, double z, double startPhi, double deltaPhi);
@@ -283,7 +285,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Cone: public Solid_type<TGeoCone> {
+    class Cone: public Solid_type<TGeoCone> {
     protected:
       /// Internal helper method to support object construction
       void make(const std::string& name, double z, double rmin1, double rmax1, double rmin2, double rmax2);
@@ -318,7 +320,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Trap: public Solid_type<TGeoTrap> {
+    class Trap: public Solid_type<TGeoTrap> {
     private:
       /// Internal helper method to support object construction
       void make(double pz, double py, double px, double pLTX);
@@ -358,7 +360,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Trapezoid: public Solid_type<TGeoTrd2> {
+    class Trapezoid: public Solid_type<TGeoTrd2> {
     private:
       /// Internal helper method to support object construction
       void make(double x1, double x2, double y1, double y2, double z);
@@ -390,7 +392,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Torus: public Solid_type<TGeoTorus> {
+    class Torus: public Solid_type<TGeoTorus> {
     private:
       /// Internal helper method to support object construction
       void make(double r, double rmin, double rmax, double phi, double delta_phi);
@@ -424,7 +426,8 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct Sphere: public Solid_type<TGeoSphere> {
+    class Sphere: public Solid_type<TGeoSphere> {
+    public:
       /// Constructor to be used when passing an already created object
       Sphere(const Sphere& e)
           : Solid_type<TGeoSphere>(e) {
@@ -474,7 +477,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct PolyhedraRegular: public Solid_type<TGeoPgon> {
+    class PolyhedraRegular: public Solid_type<TGeoPgon> {
     protected:
       /// Helper function to create the polyhedron
       void _create(const std::string& name, int nsides, double rmin, double rmax, double zpos, double zneg, double start,
@@ -507,7 +510,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct EightPointSolid: public Solid_type<TGeoArb8> {
+    class EightPointSolid: public Solid_type<TGeoArb8> {
     private: 
       /// Internal helper method to support object construction
       void make(double dz, const double* vtx);
@@ -533,7 +536,7 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct BooleanSolid: public Solid_type<TGeoCompositeShape> {
+    class BooleanSolid: public Solid_type<TGeoCompositeShape> {
     protected:
       /// Constructor to be used when passing an already created object
       BooleanSolid()
@@ -558,7 +561,8 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct SubtractionSolid: public BooleanSolid {
+    class SubtractionSolid: public BooleanSolid {
+    public:
       /// Default constructor
       SubtractionSolid()
           : BooleanSolid() {
@@ -593,7 +597,8 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct UnionSolid: public BooleanSolid {
+    class UnionSolid: public BooleanSolid {
+    public:
       /// Default constructor
       UnionSolid()
           : BooleanSolid() {
@@ -628,7 +633,8 @@ namespace DD4hep {
      *   \version 1.0
      *   \ingroup DD4HEP_GEOMETRY
      */
-    struct IntersectionSolid: public BooleanSolid {
+    class IntersectionSolid: public BooleanSolid {
+    public:
       /// Default constructor
       IntersectionSolid()
           : BooleanSolid() {
diff --git a/DDCore/include/DD4hep/objects/VolumeManagerInterna.h b/DDCore/include/DD4hep/objects/VolumeManagerInterna.h
index e1883f801217f63887e267b96a39ab7e54b72947..7bbe77262c769d020840ca421c6a4ea994e3636a 100644
--- a/DDCore/include/DD4hep/objects/VolumeManagerInterna.h
+++ b/DDCore/include/DD4hep/objects/VolumeManagerInterna.h
@@ -73,7 +73,7 @@ namespace DD4hep {
      * \version 1.0
      * \ingroup DD4HEP_GEOMETRY
     */
-    struct VolumeManagerObject: public NamedObject {
+    class VolumeManagerObject: public NamedObject {
     public:
       typedef IDDescriptor::Field Field;
       typedef VolumeManager::Managers Managers;
diff --git a/DDCore/include/XML/Conversions.h b/DDCore/include/XML/Conversions.h
index c0eb8fa4dcef5ca1beba4a518f805b6dc40346d1..ecd58b24c41c37871eb22fa91e6d17f669663b84 100644
--- a/DDCore/include/XML/Conversions.h
+++ b/DDCore/include/XML/Conversions.h
@@ -19,7 +19,7 @@ namespace DD4hep {
 
   /// Namespace for the AIDA detector description toolkit supporting XML utilities 
   namespace XML {
-    struct Handle_t;
+    class Handle_t;
   }
 
   /// Basic conversion objects for handling DD4hep XML files.
diff --git a/DDCore/src/DetectorInterna.cpp b/DDCore/src/DetectorInterna.cpp
index 04a922af25ddb2780fc50bec384d63d097322f15..f805f5c7e2857aed4f43066105956c846c1a8ec2 100644
--- a/DDCore/src/DetectorInterna.cpp
+++ b/DDCore/src/DetectorInterna.cpp
@@ -240,7 +240,7 @@ void DetElementObject::removeAtUpdate(unsigned int type, void* pointer)   {
 /// Trigger update callbacks
 void DetElementObject::update(unsigned int tags, void* param)   {
   DetElement det(this);
-  const void* args[3] = { (void*)tags, this, param };
+  const void* args[3] = { (void*)((unsigned long)tags), this, param };
   if ( (tags&DetElement::PLACEMENT_CHANGED)==DetElement::PLACEMENT_CHANGED &&
        (tags&DetElement::PLACEMENT_HIGHEST)==DetElement::PLACEMENT_HIGHEST )  {
     printout(INFO,"DetElement","+++ Need to update chaches and child caches of %s",
diff --git a/DDCore/src/Handle.cpp b/DDCore/src/Handle.cpp
index acd124e439b84b7e029904f65452eec1dcc845ad..5623982933284d460a2f629fb7037714605d6ec1 100644
--- a/DDCore/src/Handle.cpp
+++ b/DDCore/src/Handle.cpp
@@ -169,7 +169,7 @@ namespace DD4hep {
     template <> const char* Handle<_Segmentation>::name() const {
       return this->m_element ? this->m_element->name().c_str() : "";
     }
-    template struct DD4hep::Geometry::Handle<_Segmentation>;
+    template class DD4hep::Geometry::Handle<_Segmentation>;
   }
 }