diff --git a/DDCore/include/XML/Layering.h b/DDCore/include/XML/Layering.h
index 2e3ec7075e97d4dd5b8610cb6eab42966a7e0613..54b9168f9911a39761a62b6058ae604197815ece 100644
--- a/DDCore/include/XML/Layering.h
+++ b/DDCore/include/XML/Layering.h
@@ -121,7 +121,7 @@ namespace dd4hep {
     /// Initializing constructor
     Layering(xml::Element element);
     /// Default destructor
-    ~Layering() = default;
+    ~Layering();
 
     std::vector<Layer*>& layers() {
       return _stack.layers();
diff --git a/DDCore/src/XML/Layering.cpp b/DDCore/src/XML/Layering.cpp
index 9484eb0fe0d4912316353ac72a78779ada798212..060cc0c4b9e234a5c1eb79533af61dd1a27d67ab 100644
--- a/DDCore/src/XML/Layering.cpp
+++ b/DDCore/src/XML/Layering.cpp
@@ -123,3 +123,9 @@ void Layering::sensitivePositionsInLayer(xml::Element e, std::vector<double>& se
 }
 
 
+Layering::~Layering(){
+  vector<Layer*>& layers = this->layers();
+  for_each(layers.begin(), layers.end(), detail::deletePtr<Layer>);
+  layers.clear();
+}
+