diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp
index 974067b18557dbe64f6736ad718cedaa15a2d676..e72d0b80677f8d309b1f5b0770078e8b68e904b7 100644
--- a/src/mesh/Connectivity.cpp
+++ b/src/mesh/Connectivity.cpp
@@ -97,6 +97,8 @@ void Connectivity<3>::_computeFaceCellConnectivities()
   }
 
   {
+    auto& cell_to_face_matrix
+        = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
     std::vector<std::vector<unsigned int>> cell_to_face_vector(this->numberOfCells());
     for (size_t j=0; j<cell_to_face_vector.size(); ++j) {
       cell_to_face_vector[j].resize(cell_nb_faces[j]);
@@ -110,7 +112,7 @@ void Connectivity<3>::_computeFaceCellConnectivities()
       }
       ++l;
     }
-    m_cell_to_face_matrix = cell_to_face_vector;
+    cell_to_face_matrix = cell_to_face_vector;
   }
 
   FaceValuePerCell<bool> cell_face_is_reversed(*this);
@@ -146,12 +148,14 @@ void Connectivity<3>::_computeFaceCellConnectivities()
     }
   }
 
-  m_connectivity_computer.computeInverseConnectivityMatrix(m_cell_to_face_matrix,
+  const auto& cell_to_face_matrix
+      = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
+  m_connectivity_computer.computeInverseConnectivityMatrix(cell_to_face_matrix,
                                                            m_face_to_cell_matrix);
 
   m_face_to_cell_local_face = CellValuePerFace<unsigned short>(*this);
 
-  m_connectivity_computer.computeLocalChildItemNumberInItem(m_cell_to_face_matrix,
+  m_connectivity_computer.computeLocalChildItemNumberInItem(cell_to_face_matrix,
                                                             m_face_to_cell_matrix,
                                                             m_face_to_cell_local_face);
 
diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp
index 99845abc1755c8c8fd75f0c3d344269d5d1e3d8d..9a0eba32547c9009a5b719c5c22037a1d2528823 100644
--- a/src/mesh/Connectivity.hpp
+++ b/src/mesh/Connectivity.hpp
@@ -237,6 +237,12 @@ class Connectivity final
     return m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)];
   }
 
+  KOKKOS_INLINE_FUNCTION
+  ConnectivityMatrix cellToFaceMatrix() const
+  {
+    return m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
+  }
+
   KOKKOS_INLINE_FUNCTION
   ConnectivityMatrix nodeToCellMatrix() const
   {
@@ -245,7 +251,6 @@ class Connectivity final
 
   NodeValuePerCell<unsigned short> m_cell_to_node_local_cell;
 
-  ConnectivityMatrix m_cell_to_face_matrix;
   FaceValuePerCell<bool> m_cell_face_is_reversed;
 
   ConnectivityMatrix m_face_to_cell_matrix;
@@ -407,7 +412,9 @@ inline const ConnectivityMatrix&
 Connectivity<3>::itemToItemMatrix<TypeOfItem::cell,
                                   TypeOfItem::face>() const
 {
-  return m_cell_to_face_matrix;
+  const auto& cell_to_face_matrix
+      = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
+  return cell_to_face_matrix;
 }
 
 template <>
@@ -460,7 +467,9 @@ inline const ConnectivityMatrix&
 Connectivity<2>::itemToItemMatrix<TypeOfItem::cell,
                                   TypeOfItem::face>() const
 {
-  return m_cell_to_face_matrix;
+  const auto& cell_to_face_matrix
+      = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
+  return cell_to_face_matrix;
 }
 
 template <>
@@ -525,8 +534,9 @@ inline const ConnectivityMatrix&
 Connectivity<1>::itemToItemMatrix<TypeOfItem::cell,
                                   TypeOfItem::face>() const
 {
-#warning in 1d, faces and node are the same
-  return m_cell_to_face_matrix;
+  const auto& cell_to_face_matrix
+      = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
+  return cell_to_face_matrix;
 }
 
 template <>
diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp
index a3b1fb1805d30cde0761b32bb185d857dd615064..cd8250412b0bb6b410cce1116514022ed3c8c0ea 100644
--- a/src/mesh/MeshData.hpp
+++ b/src/mesh/MeshData.hpp
@@ -134,10 +134,11 @@ class MeshData
         });
 
       const auto& cell_to_node_matrix = m_mesh.connectivity().cellToNodeMatrix();
+      const auto& cell_to_face_matrix = m_mesh.connectivity().cellToFaceMatrix();
       Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) {
           const auto& cell_nodes = cell_to_node_matrix.rowConst(j);
 
-          const auto& cell_faces = m_mesh.connectivity().m_cell_to_face_matrix.rowConst(j);
+          const auto& cell_faces = cell_to_face_matrix.rowConst(j);
           const auto& cell_face_is_reversed = m_mesh.connectivity().m_cell_face_is_reversed.itemValues(j);
 
           for (size_t L=0; L<cell_faces.length; ++L) {