diff --git a/Plugins/Root/src/RootMaterialWriter.cpp b/Plugins/Root/src/RootMaterialWriter.cpp
index a00523d42d6b373e07ddc42efa2aaebd7ea5bf51..2244cabaf60d362c10079cba979753df10a09147 100644
--- a/Plugins/Root/src/RootMaterialWriter.cpp
+++ b/Plugins/Root/src/RootMaterialWriter.cpp
@@ -235,8 +235,8 @@ FW::Root::RootMaterialWriter::collectMaterial(
 {
 
   // If the volume has volume material, write that
-  if (tVolume.volumeMaterialPtr() != nullptr and m_cfg.processVolumes) {
-    detMatMap.second[tVolume.geoID()] = tVolume.volumeMaterialPtr();
+  if (tVolume.volumeMaterialSharedPtr() != nullptr and m_cfg.processVolumes) {
+    detMatMap.second[tVolume.geoID()] = tVolume.volumeMaterialSharedPtr();
   }
 
   // If confined layers exist, loop over them and collect the layer material
@@ -250,8 +250,8 @@ FW::Root::RootMaterialWriter::collectMaterial(
   if (m_cfg.processBoundaries) {
     for (auto& bou : tVolume.boundarySurfaces()) {
       const auto& bSurface = bou->surfaceRepresentation();
-      if (bSurface.surfaceMaterialPtr() != nullptr) {
-        detMatMap.first[bSurface.geoID()] = bSurface.surfaceMaterialPtr();
+      if (bSurface.surfaceMaterialSharedPtr() != nullptr) {
+        detMatMap.first[bSurface.geoID()] = bSurface.surfaceMaterialSharedPtr();
       }
     }
   }
@@ -271,15 +271,17 @@ FW::Root::RootMaterialWriter::collectMaterial(
 {
   // If the representing surface has material, collect it
   const auto& rSurface = tLayer.surfaceRepresentation();
-  if (rSurface.surfaceMaterialPtr() != nullptr and m_cfg.processRepresenting) {
-    detMatMap.first[rSurface.geoID()] = rSurface.surfaceMaterialPtr();
+  if (rSurface.surfaceMaterialSharedPtr() != nullptr
+      and m_cfg.processRepresenting) {
+    detMatMap.first[rSurface.geoID()] = rSurface.surfaceMaterialSharedPtr();
   }
 
   // Check the approach surfaces
   if (tLayer.approachDescriptor() != nullptr and m_cfg.processApproaches) {
     for (auto& aSurface : tLayer.approachDescriptor()->containedSurfaces()) {
-      if (aSurface->surfaceMaterialPtr() != nullptr) {
-        detMatMap.first[aSurface->geoID()] = aSurface->surfaceMaterialPtr();
+      if (aSurface->surfaceMaterialSharedPtr() != nullptr) {
+        detMatMap.first[aSurface->geoID()]
+            = aSurface->surfaceMaterialSharedPtr();
       }
     }
   }
@@ -288,8 +290,9 @@ FW::Root::RootMaterialWriter::collectMaterial(
   if (tLayer.surfaceArray() != nullptr and m_cfg.processSensitives) {
     // sensitive surface loop
     for (auto& sSurface : tLayer.surfaceArray()->surfaces()) {
-      if (sSurface->surfaceMaterialPtr() != nullptr) {
-        detMatMap.first[sSurface->geoID()] = sSurface->surfaceMaterialPtr();
+      if (sSurface->surfaceMaterialSharedPtr() != nullptr) {
+        detMatMap.first[sSurface->geoID()]
+            = sSurface->surfaceMaterialSharedPtr();
       }
     }
   }
diff --git a/external/acts-core b/external/acts-core
index 19d57d9646a3c5ad89a55ed7f6a8fe355e77d63a..e5dd9fbe179201e70347d1a3b9fa1899c226798f 160000
--- a/external/acts-core
+++ b/external/acts-core
@@ -1 +1 @@
-Subproject commit 19d57d9646a3c5ad89a55ed7f6a8fe355e77d63a
+Subproject commit e5dd9fbe179201e70347d1a3b9fa1899c226798f