diff --git a/src/language/algorithms/Heat5PointsAlgorithm.cpp b/src/language/algorithms/Heat5PointsAlgorithm.cpp
index 05cf171dd9d64f5605579eb089cb017854e49ef4..b46f0739fbf47d0da0112b2db79c58b4f3ba2009 100644
--- a/src/language/algorithms/Heat5PointsAlgorithm.cpp
+++ b/src/language/algorithms/Heat5PointsAlgorithm.cpp
@@ -116,26 +116,15 @@ Heat5PointsAlgorithm<Dimension>::Heat5PointsAlgorithm(
                        0, true);   // forces last output
 
       const CellValue<const double> dual_Vj = diamond_mesh_data.Vj();
-      const auto& face_to_node_matrix       = mesh->connectivity().faceToNodeMatrix();
 
-      const FaceValue<const double> mes_l = [=] {
-        FaceValue<double> compute_mes_l{mesh->connectivity()};
-        const NodeValue<const TinyVector<Dimension>>& xr = mesh->xr();
+      const FaceValue<const double> mes_l = [&] {
         if constexpr (Dimension == 1) {
+          FaceValue<double> compute_mes_l{mesh->connectivity()};
           compute_mes_l.fill(1);
-        } else if constexpr (Dimension == 2) {
-          parallel_for(
-            mesh->numberOfFaces(), PUGS_LAMBDA(FaceId face_id) {
-              const auto& face_to_node              = face_to_node_matrix[face_id];
-              const NodeId node_id1                 = face_to_node[0];
-              const NodeId node_id2                 = face_to_node[1];
-              const TinyVector<Dimension, double> r = xr[node_id1] - xr[node_id2];
-              compute_mes_l[face_id]                = l2Norm(r);
-            });
+          return compute_mes_l;
         } else {
-          throw NotImplementedError("Not implemented in 3D");
+          return mesh_data.ll();
         }
-        return compute_mes_l;
       }();
 
       const CellValue<const double> dual_mes_l_j = [=] {