diff --git a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoFullPhysVol.h b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoFullPhysVol.h
index 861cd14b49403dddcc1f7321893357c11c5114e7..99a97794071c414a94be9911a127812d6e273976 100644
--- a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoFullPhysVol.h
+++ b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoFullPhysVol.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef GEOMODELKERNEL_GEOFULLPHYSVOL_H
@@ -32,8 +32,8 @@ class GeoFullPhysVol final : public GeoVFullPhysVol
  public:
   GeoFullPhysVol (const GeoLogVol* LogVol);
 
-  /// Adds a Graph Node to the Geometry Graph.
-  void add(GeoGraphNode* graphNode);
+    /// Adds a Graph Node to the Geometry Graph
+  virtual void add(GeoGraphNode* graphNode) override final;
 
   /// Returns the number of child physical volumes.
   virtual unsigned int getNChildVols() const override;
diff --git a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPhysVol.h b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPhysVol.h
index 1c35d4ad8d180009dae47d25714c6f381d47266f..bd2ac00fd6c7b6df49dfa844034f78bdff67526c 100644
--- a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPhysVol.h
+++ b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoPhysVol.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef GEOMODELKERNEL_GEOPHYSVOL_H
@@ -36,7 +36,8 @@ class GeoPhysVol : public GeoVPhysVol
   GeoPhysVol(const GeoPhysVol &right) = delete;
   GeoPhysVol & operator=(const GeoPhysVol &right) = delete;
 
-  void add(GeoGraphNode* graphNode);
+  /// Adds a Graph Node to the Geometry Graph
+  virtual void add(GeoGraphNode* graphNode) override final;
 
   /// Returns the number of child physical volumes.
   virtual unsigned int getNChildVols() const override final;
diff --git a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoVPhysVol.h b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoVPhysVol.h
index b8f9089a4fed90e0849a6cfc5fe371acf9e2823e..d90aefb16095b4354c8dd22211ee2fa88406c737 100644
--- a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoVPhysVol.h
+++ b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoVPhysVol.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef GEOMODELKERNEL_GEOVPHYSVOL_H
@@ -86,6 +86,9 @@ class GeoVPhysVol : public GeoGraphNode
   virtual const GeoGraphNode * const *getChildNode (unsigned int i) const=0;
   virtual const GeoGraphNode * const *findChildNode(const GeoGraphNode *n) const=0;
 
+  /// Adds a Graph Node to the Geometry Graph
+  virtual void add(GeoGraphNode* graphNode) = 0;
+
  protected:
   virtual ~GeoVPhysVol();
 
diff --git a/GeoModelTools/GeoModelXML/GeoModelXml/src/Gmx2Geo.cxx b/GeoModelTools/GeoModelXML/GeoModelXml/src/Gmx2Geo.cxx
index b30e41fb8593270dc2cb8225c737df5aaf9706da..b89b976a21304e2bf8dd4fdd73496f7f4ea9c160 100644
--- a/GeoModelTools/GeoModelXML/GeoModelXml/src/Gmx2Geo.cxx
+++ b/GeoModelTools/GeoModelXML/GeoModelXml/src/Gmx2Geo.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "GeoModelXml/Gmx2Geo.h"
@@ -16,6 +16,8 @@
 #include <xercesc/util/PlatformUtils.hpp>
 
 #include "GeoModelKernel/GeoPhysVol.h"
+#include "GeoModelKernel/GeoVPhysVol.h"
+
 #include "GeoModelKernel/GeoVolumeTagCatalog.h"
 
 #include "ExpressionEvaluator/IEvaluator.h"
@@ -105,17 +107,17 @@ Gmx2Geo::Gmx2Geo(const string& xmlFile, GeoPhysVol *addHere, GmxInterface &gmxIn
 //  ADA - check if an envelope is requested, in case we take is and fill it up with the addbranch's contents.
 
     XMLCh * envelope_tmp=XMLString::transcode("envelope");
-    GeoPhysVol* physVol=addHere;
+    GeoVPhysVol* physVol=addHere;
     if (addbranch->hasAttribute(envelope_tmp))
     {
         char *toRelease=XMLString::transcode(addbranch->getAttribute(envelope_tmp));
 	std::cout<<" envelope requested "<<toRelease<<std::endl;
         std::string envel=toRelease;
 	XMLString::release(&toRelease);
-	GeoPhysVol* tmpVol=dynamic_cast<GeoPhysVol*>(GeoVolumeTagCatalog::VolumeTagCatalog()->getTaggedVolume("Envelope",envel));
+	GeoVPhysVol* tmpVol=GeoVolumeTagCatalog::VolumeTagCatalog()->getTaggedVolume("Envelope",envel);
 	if (tmpVol) 
 	{
-		std::cout<< " volume "<<envel<<" found in the envelope catalog"<<std::endl;
+		std::cout<< " Volume "<<envel<<" found in the envelope catalog"<<std::endl;
 		physVol=tmpVol;
 	}
     }