diff --git a/dune/tectonic/globalruinanonlinearity.hh b/dune/tectonic/globalruinanonlinearity.hh
index 2634563dbaeb22471456852d48b9b24471d19c37..4c15db46287bc18288a73765c0a9c7f26d594169 100644
--- a/dune/tectonic/globalruinanonlinearity.hh
+++ b/dune/tectonic/globalruinanonlinearity.hh
@@ -29,8 +29,8 @@ class GlobalRuinaNonlinearity
         mu(mu),
         eta(eta),
         normalStress(normalStress),
-        trivialNonlinearity(new LocalNonlinearity<dim>(
-            shared_ptr<NiceFunction const>(new TrivialFunction))) {}
+        trivialNonlinearity(
+            new LocalNonlinearity<dim>(make_shared<TrivialFunction const>())) {}
 
   /*
     Return a restriction of the outer function to the i'th node.
@@ -40,10 +40,10 @@ class GlobalRuinaNonlinearity
       return trivialNonlinearity;
 
     // TODO: cache functions
-    shared_ptr<NiceFunction const> const func(
-        new RuinaFunction((*nodalIntegrals)[i][0], (*a)[i][0], (*mu)[i][0],
-                          (*eta)[i][0], (*normalStress)[i][0]));
-    return shared_ptr<LocalNonlinearity<dim>>(new LocalNonlinearity<dim>(func));
+    auto const func = make_shared<RuinaFunction const>(
+        (*nodalIntegrals)[i][0], (*a)[i][0], (*mu)[i][0], (*eta)[i][0],
+        (*normalStress)[i][0]);
+    return make_shared<LocalNonlinearity<dim> const>(func);
   }
 
 private: