diff --git a/src/mesh/Connectivity3D.hpp b/src/mesh/Connectivity3D.hpp
index bf88c0ff5e74618e3445d78a121dc8a7fd1807b9..6b70560d86d73cbec5a9bfdd13673d6766e80a83 100644
--- a/src/mesh/Connectivity3D.hpp
+++ b/src/mesh/Connectivity3D.hpp
@@ -38,8 +38,6 @@ private:
   std::vector<RefFaceList> m_ref_face_list;
   std::vector<RefNodeList> m_ref_node_list;
 
-  size_t m_number_of_faces;
-
   Kokkos::View<double*> m_inv_cell_nb_nodes;
 
   Kokkos::View<const unsigned short*> m_node_nb_faces;
@@ -251,11 +249,6 @@ private:
         }
       }
     }
-    std::cerr << __FILE__ << ':' << __LINE__ << ':'
-              << rang::fg::red << " only works for hexa" << rang::fg::reset << '\n';
-
-    m_number_of_faces = face_cells_map.size();
-
     std::cerr << __FILE__ << ':' << __LINE__ << ':'
               << rang::fg::red << " m_max_nb_node_per_face forced to 4" << rang::fg::reset << '\n';
 
@@ -282,7 +275,7 @@ private:
     }
 
     {
-      std::vector<std::vector<unsigned int>> face_to_cell_vector(m_number_of_faces);
+      std::vector<std::vector<unsigned int>> face_to_cell_vector(face_cells_map.size());
       size_t l=0;
       for (const auto& face_cells_vector : face_cells_map) {
         const auto& cells_info_vector = face_cells_vector.second;
@@ -299,7 +292,7 @@ private:
     }
 
     {
-      std::vector<std::vector<unsigned short>> face_to_cell_local_face_vector(m_number_of_faces);
+      std::vector<std::vector<unsigned short>> face_to_cell_local_face_vector(face_cells_map.size());
       size_t l=0;
       for (const auto& face_cells_vector : face_cells_map) {
         const auto& cells_info_vector = face_cells_vector.second;
@@ -425,9 +418,9 @@ private:
   }
 
   KOKKOS_INLINE_FUNCTION
-  const size_t& numberOfFaces() const
+  size_t numberOfFaces() const
   {
-    return m_number_of_faces;
+    return m_face_to_cell_matrix.numRows();
   }
 
   KOKKOS_INLINE_FUNCTION