diff --git a/src/mesh/ItemToItemMatrix.hpp b/src/mesh/ItemToItemMatrix.hpp
index d03ee9e0caccef03a89ca4ed001ede3c73bebcd6..20f57dc33ed1ce4840b6f152b61ea7a6b47a63e4 100644
--- a/src/mesh/ItemToItemMatrix.hpp
+++ b/src/mesh/ItemToItemMatrix.hpp
@@ -60,6 +60,15 @@ class ItemToItemMatrix
     return SubItemList<RowType>(m_connectivity_matrix.rowConst(source_id));
   }
 
+  template <typename IndexType>
+  const auto operator[](const IndexType& source_id) const
+  {
+    static_assert(std::is_same<IndexType, SourceItemId>(),
+                  "ItemToItemMatrix must be indexed using correct ItemId");
+    using RowType = decltype(m_connectivity_matrix.rowConst(source_id));
+    return SubItemList<RowType>(m_connectivity_matrix.rowConst(source_id));
+  }
+
   ItemToItemMatrix(const ConnectivityMatrix& connectivity_matrix)
       : m_connectivity_matrix{connectivity_matrix}
   {
diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp
index fe84d78602b5c6f798c341ecdcc087da41d01cdf..0a4b9ec63ff74b71e25342144871c34e3236c163 100644
--- a/src/mesh/MeshNodeBoundary.hpp
+++ b/src/mesh/MeshNodeBoundary.hpp
@@ -52,7 +52,7 @@ class MeshNodeBoundary
         = mesh.connectivity().faceToNodeMatrix();
 
     for (size_t l=0; l<face_list.size(); ++l) {
-      const size_t face_number = face_list[l];
+      const FaceId face_number = face_list[l];
       const auto& face_nodes = face_to_node_matrix[face_number];
 
       for (size_t r=0; r<face_nodes.size(); ++r) {