diff --git a/Plugins/Root/src/RootMaterialWriter.cpp b/Plugins/Root/src/RootMaterialWriter.cpp
index a00523d42d6b373e07ddc42efa2aaebd7ea5bf51..8e3c9e8cb2fd7ee9bf5906782d435f3f86ede5eb 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,15 @@ 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 +288,8 @@ 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..585704c82eb139694828f56fd729da2d94ccd451 160000
--- a/external/acts-core
+++ b/external/acts-core
@@ -1 +1 @@
-Subproject commit 19d57d9646a3c5ad89a55ed7f6a8fe355e77d63a
+Subproject commit 585704c82eb139694828f56fd729da2d94ccd451