diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp
index 47533fdb9ffc2b4b017c13c9b62acdc658c1d3fc..ed085fb72e3d2766a5b88105e5f32dd0bbba19b0 100644
--- a/src/mesh/Connectivity.cpp
+++ b/src/mesh/Connectivity.cpp
@@ -106,8 +106,7 @@ void Connectivity<3>::_computeFaceCellConnectivities()
       }
       ++l;
     }
-    m_cell_to_face_matrix
-        = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("cell_to_face_matrix", cell_to_face_vector);
+    m_cell_to_face_matrix = cell_to_face_vector;
   }
 
   {
@@ -125,9 +124,7 @@ void Connectivity<3>::_computeFaceCellConnectivities()
       ++l;
     }
 
-    m_cell_to_face_is_reversed_matrix
-        = Kokkos::create_staticcrsgraph<ConnectivityMatrixShort>("cell_to_face_is_reversed_matrix",
-                                                                 cell_to_face_is_reversed_vector);
+    m_cell_to_face_is_reversed_matrix = cell_to_face_is_reversed_vector;
   }
 
   {
@@ -138,8 +135,7 @@ void Connectivity<3>::_computeFaceCellConnectivities()
       face_to_node_vector[l] = face.nodeIdList();
       ++l;
     }
-    m_face_to_node_matrix
-        = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("face_to_node_matrix", face_to_node_vector);
+    m_face_to_node_matrix = face_to_node_vector;
   }
 
   {
@@ -221,8 +217,7 @@ void Connectivity<2>::_computeFaceCellConnectivities()
       face_to_node_vector[l] = {face.m_node0_id, face.m_node1_id};
       ++l;
     }
-    m_face_to_node_matrix
-        = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("face_to_node_matrix", face_to_node_vector);
+    m_face_to_node_matrix = face_to_node_vector;
   }
 
   {
@@ -235,7 +230,6 @@ void Connectivity<2>::_computeFaceCellConnectivities()
       }
       ++l;
     }
-    m_face_to_cell_matrix
-        = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("face_to_cell_matrix", face_to_cell_vector);
+    m_face_to_cell_matrix = face_to_cell_vector;
   }
 }
diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp
index 23cfcd940fa752e50c0436685eca873278e45fcf..84ed64c4081051158dd4a479772d0bae3c6e23f4 100644
--- a/src/mesh/Connectivity.hpp
+++ b/src/mesh/Connectivity.hpp
@@ -6,6 +6,7 @@
 
 #include <Kokkos_Core.hpp>
 
+#include <ConnectivityMatrix.hpp>
 #include <ConnectivityComputer.hpp>
 
 #include <vector>
@@ -343,9 +344,7 @@ private:
 
   Connectivity(const std::vector<std::vector<unsigned int>>& cell_by_node_vector)
   {
-    m_cell_to_node_matrix
-        = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("cell_to_node_matrix",
-                                                            cell_by_node_vector);
+    m_cell_to_node_matrix = cell_by_node_vector;
 
     Assert(this->numberOfCells()>0);
 
@@ -369,9 +368,7 @@ private:
           node_id_per_cell[r] = id++;
         }
       }
-      m_node_id_per_cell_matrix
-          = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("node_id_per_cell_matrix",
-                                                              node_id_per_cell_vector);
+      m_node_id_per_cell_matrix = node_id_per_cell_vector;
     }
 
     m_connectivity_computer.computeInverseConnectivityMatrix(m_cell_to_node_matrix,
diff --git a/src/mesh/ConnectivityComputer.cpp b/src/mesh/ConnectivityComputer.cpp
index f10e971f116e6db7db0f14b7c8b9452912660dd6..b950261546d6f24c4a8612de54f8950ff9417a19 100644
--- a/src/mesh/ConnectivityComputer.cpp
+++ b/src/mesh/ConnectivityComputer.cpp
@@ -30,8 +30,7 @@ computeInverseConnectivityMatrix(const ConnectivityMatrix& item_to_child_item_ma
   for (const auto& [child_item_id, item_vector] : child_item_to_item_vector_map) {
     child_item_to_items_vector[child_item_id] = item_vector;
   }
-  child_item_to_item_matrix
-      = Kokkos::create_staticcrsgraph<ConnectivityMatrix>("child_item_to_item_matrix", child_item_to_items_vector);
+  child_item_to_item_matrix = child_item_to_items_vector;
 }
 
 void ConnectivityComputer::
@@ -55,6 +54,5 @@ computeLocalChildItemNumberInItem(const ConnectivityMatrix& item_to_child_items_
       }
     }
   }
-  child_item_number_in_item_matrix
-      = Kokkos::create_staticcrsgraph<ConnectivityMatrixShort>("child_item_number_in_item_matrix", child_item_number_in_item_vector);
+  child_item_number_in_item_matrix = child_item_number_in_item_vector;
 }
diff --git a/src/mesh/ConnectivityComputer.hpp b/src/mesh/ConnectivityComputer.hpp
index 54ec0216df3bdcc23b7540ff98b45e083a91b514..1b8ee0180affa5007feb7d7482304e1a54ae3a93 100644
--- a/src/mesh/ConnectivityComputer.hpp
+++ b/src/mesh/ConnectivityComputer.hpp
@@ -1,12 +1,7 @@
 #ifndef CONNECTIVITY_COMPUTER_HPP
 #define CONNECTIVITY_COMPUTER_HPP
 
-#include <Kokkos_Core.hpp>
-#include <Kokkos_StaticCrsGraph.hpp>
-
-typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrix;
-#warning use right type (unsigned short)
-typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrixShort;
+#include <ConnectivityMatrix.hpp>
 
 struct ConnectivityComputer
 {
diff --git a/src/mesh/ConnectivityMatrix.hpp b/src/mesh/ConnectivityMatrix.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..192535cd4639bfd0bfc612c8b5b83159967dcf1c
--- /dev/null
+++ b/src/mesh/ConnectivityMatrix.hpp
@@ -0,0 +1,73 @@
+#ifndef CONNECTIVITY_MATRIX_HPP
+#define CONNECTIVITY_MATRIX_HPP
+
+#include <Kokkos_Core.hpp>
+#include <Kokkos_StaticCrsGraph.hpp>
+
+
+#if 0
+typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrix;
+#else
+
+class ConnectivityMatrix
+{
+ private:
+  typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> HostMatrix;
+  HostMatrix m_host_matrix;
+
+ public:
+  KOKKOS_INLINE_FUNCTION
+  const auto numEntries() const
+  {
+    return m_host_matrix.entries.extent(0);
+  }
+
+  KOKKOS_INLINE_FUNCTION
+  const auto numRows() const
+  {
+    return m_host_matrix.numRows();
+  }
+
+  KOKKOS_INLINE_FUNCTION
+  const auto rowConst(const size_t& j) const
+  {
+    return m_host_matrix.rowConst(j);
+  }
+
+  KOKKOS_INLINE_FUNCTION
+  const auto rowMap(const size_t& j) const
+  {
+    return m_host_matrix.row_map[j];
+  }
+
+  KOKKOS_INLINE_FUNCTION
+  ConnectivityMatrix& operator=(const std::vector<std::vector<unsigned int>>& initializer)
+  {
+    m_host_matrix = Kokkos::create_staticcrsgraph<HostMatrix>("connecticity_matrix", initializer);
+    return *this;
+  }
+
+  [[deprecated("Must only define connectivities so that only unsigned int should be treated")]]
+  KOKKOS_INLINE_FUNCTION
+  ConnectivityMatrix& operator=(const std::vector<std::vector<unsigned short>>& initializer)
+  {
+    m_host_matrix = Kokkos::create_staticcrsgraph<HostMatrix>("connecticity_matrix", initializer);
+    return *this;
+  }
+
+  ConnectivityMatrix& operator=(const ConnectivityMatrix&) = default;
+  ConnectivityMatrix& operator=(ConnectivityMatrix&&) = default;
+
+  ConnectivityMatrix() = default;
+  ConnectivityMatrix(const ConnectivityMatrix&) = default;
+  ConnectivityMatrix(ConnectivityMatrix&&) = default;
+  ~ConnectivityMatrix() = default;
+};
+
+#endif
+
+#warning use right type (unsigned short) instead of a clone of ConnectivityMatrix
+using ConnectivityMatrixShort = ConnectivityMatrix;
+
+
+#endif // CONNECTIVITY_MATRIX_HPP
diff --git a/src/scheme/SubItemValuePerItem.hpp b/src/scheme/SubItemValuePerItem.hpp
index 202ffdf2085b60f859f0dc11320569721ac44f65..283a9bf27e145bb094d93361d2c0cecf658f241c 100644
--- a/src/scheme/SubItemValuePerItem.hpp
+++ b/src/scheme/SubItemValuePerItem.hpp
@@ -6,7 +6,7 @@
 
 #warning should not stand in the scheme directory
 
-typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrix;
+#include <ConnectivityMatrix.hpp>
 
 template <typename DataType,
           TypeOfItem SubItemType,
@@ -104,13 +104,13 @@ class SubItemValuePerItem
   KOKKOS_FORCEINLINE_FUNCTION
   DataType& operator()(const size_t& j, const size_t& r)
   {
-    return m_values[m_subitem_id_per_item_matrix.row_map[j]+r];
+    return m_values[m_subitem_id_per_item_matrix.rowMap(j)+r];
   }
 
   KOKKOS_FORCEINLINE_FUNCTION
   const DataType& operator()(const size_t& j, const size_t& r) const
   {
-    return m_values[m_subitem_id_per_item_matrix.row_map[j]+r];
+    return m_values[m_subitem_id_per_item_matrix.rowMap(j)+r];
   }
 
   KOKKOS_INLINE_FUNCTION
@@ -140,22 +140,22 @@ class SubItemValuePerItem
   KOKKOS_INLINE_FUNCTION
   size_t numberOfSubValues(const size_t& i_cell) const
   {
-    return m_subitem_id_per_item_matrix.row_map[i_cell+1]-m_subitem_id_per_item_matrix.row_map[i_cell];
+    return m_subitem_id_per_item_matrix.rowMap(i_cell+1)-m_subitem_id_per_item_matrix.rowMap(i_cell);
   }
 
   KOKKOS_INLINE_FUNCTION
   SubView itemValues(const size_t& i_cell)
   {
-    const ConnectivityMatrix::size_type& cell_begin = m_subitem_id_per_item_matrix.row_map[i_cell];
-    const ConnectivityMatrix::size_type& cell_end = m_subitem_id_per_item_matrix.row_map[i_cell+1];
+    const auto& cell_begin = m_subitem_id_per_item_matrix.rowMap(i_cell);
+    const auto& cell_end = m_subitem_id_per_item_matrix.rowMap(i_cell+1);
     return SubView(m_values, cell_begin, cell_end);
   }
 
   KOKKOS_INLINE_FUNCTION
   SubViewConst itemValues(const size_t& i_cell) const
   {
-    const ConnectivityMatrix::size_type& cell_begin = m_subitem_id_per_item_matrix.row_map[i_cell];
-    const ConnectivityMatrix::size_type& cell_end = m_subitem_id_per_item_matrix.row_map[i_cell+1];
+    const auto& cell_begin = m_subitem_id_per_item_matrix.rowMap(i_cell);
+    const auto& cell_end = m_subitem_id_per_item_matrix.rowMap(i_cell+1);
     return SubViewConst(m_values, cell_begin, cell_end);
   }
 
@@ -165,7 +165,7 @@ class SubItemValuePerItem
   SubItemValuePerItem(const ConnectivityType& connectivity)
   {
     m_subitem_id_per_item_matrix = connectivity.template subItemIdPerItemMatrix<SubItemType,ItemType>();
-    m_values = Kokkos::View<DataType*>("values", m_subitem_id_per_item_matrix.entries.extent(0));
+    m_values = Kokkos::View<DataType*>("values", m_subitem_id_per_item_matrix.numEntries());
   }
 
   ~SubItemValuePerItem() = default;