diff --git a/src/cantorfaultnetworks/cantorconvergence.cc b/src/cantorfaultnetworks/cantorconvergence.cc
index a6769fd56c7be64bbd9b274bd818442ea16d09fb..23c0f134beba746c1b7654d626689f964472b2bb 100644
--- a/src/cantorfaultnetworks/cantorconvergence.cc
+++ b/src/cantorfaultnetworks/cantorconvergence.cc
@@ -207,7 +207,7 @@ int main(int argc, char** argv) { try
     solutions[exactLevelIdx] = exactGlobalAssembler.getSol();
     approxErrors[maxLevelIdx] = 0;
 
-    const DGBasis& exactBasis = exactGlobalAssembler.basis();
+    std::shared_ptr<DGBasis> exactBasis = exactGlobalAssembler.basis();
 
     EnergyNorm<MatrixType, VectorType> energyNorm(exactGlobalAssembler.matrix());
 
@@ -227,9 +227,9 @@ int main(int argc, char** argv) { try
         globalAssembler.solve();
 
         const VectorType& sol = globalAssembler.getSol();
-        const DGBasis& basis = globalAssembler.basis();
+        std::shared_ptr<DGBasis> basis = globalAssembler.basis();
 
-        DGMGTransfer<DGBasis> levelTransfer(basis, exactBasis);
+        DGMGTransfer<DGBasis> levelTransfer(*basis, *exactBasis);
         levelTransfer.prolong(sol, solutions[i]);
 
         if (i==maxLevelIdx) {