diff --git a/src/mesh/DiamondDualConnectivityBuilder.cpp b/src/mesh/DiamondDualConnectivityBuilder.cpp
index e20f972c4adecd1e2d449e82044357bac03c9ef4..0c503521fcacd80b7de7cef483ff8ebb69dd3ad4 100644
--- a/src/mesh/DiamondDualConnectivityBuilder.cpp
+++ b/src/mesh/DiamondDualConnectivityBuilder.cpp
@@ -30,11 +30,11 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor(const Connec
 
   const auto& primal_cell_number = primal_connectivity.cellNumber();
 
-  const size_t max_node_number = max(primal_node_number);
+  const size_t cell_number_shift = max(primal_node_number) + 1;
 
   for (CellId primal_cell_id = 0; primal_cell_id < primal_number_of_cells; ++primal_cell_id) {
     diamond_descriptor.node_number_vector[primal_number_of_nodes + primal_cell_id] =
-      primal_cell_number[primal_cell_id] + max_node_number;
+      primal_cell_number[primal_cell_id] + cell_number_shift;
   }
 
   const size_t diamond_number_of_cells = primal_number_of_faces;
@@ -164,21 +164,34 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor<1>(const Con
 
   diamond_descriptor.node_number_vector.resize(diamond_number_of_nodes);
 
-  const auto& primal_node_number = primal_connectivity.nodeNumber();
-
   const size_t diamond_number_of_cells = primal_number_of_faces;
   const size_t number_of_kept_nodes    = 2 * (diamond_number_of_nodes - diamond_number_of_cells);
 
   const auto& primal_node_to_cell_matrix = primal_connectivity.nodeToCellMatrix();
   size_t next_kept_node_id               = 0;
 
-  for (NodeId node_id = 0; node_id < primal_connectivity.numberOfNodes(); ++node_id) {
-    const auto& primal_node_cell_list = primal_node_to_cell_matrix[node_id];
+  diamond_descriptor.node_number_vector.resize(diamond_number_of_nodes);
+
+  const auto& primal_node_number = primal_connectivity.nodeNumber();
+
+  for (NodeId primal_node_id = 0; primal_node_id < primal_connectivity.numberOfNodes(); ++primal_node_id) {
+    const auto& primal_node_cell_list = primal_node_to_cell_matrix[primal_node_id];
     if (primal_node_cell_list.size() == 1) {
-      diamond_descriptor.node_number_vector[next_kept_node_id++] = primal_node_number[node_id];
+      diamond_descriptor.node_number_vector[next_kept_node_id++] = primal_node_number[primal_node_id];
     }
   }
 
+  const size_t primal_number_of_kept_nodes = next_kept_node_id;
+
+  const auto& primal_cell_number = primal_connectivity.cellNumber();
+
+  const size_t cell_number_shift = max(primal_node_number) + 1;
+
+  for (CellId primal_cell_id = 0; primal_cell_id < primal_number_of_cells; ++primal_cell_id) {
+    diamond_descriptor.node_number_vector[primal_number_of_kept_nodes + primal_cell_id] =
+      primal_cell_number[primal_cell_id] + cell_number_shift;
+  }
+
   if (number_of_kept_nodes != next_kept_node_id) {
     throw UnexpectedError("unexpected number of kept node" + std::to_string(next_kept_node_id) +
                           " != " + std::to_string(number_of_kept_nodes));
@@ -200,8 +213,6 @@ DiamondDualConnectivityBuilder::_buildDiamondConnectivityDescriptor<1>(const Con
 
   diamond_descriptor.cell_to_node_vector.resize(diamond_number_of_cells);
 
-  ;
-
   const auto& primal_node_local_number_in_their_cells = primal_connectivity.nodeLocalNumbersInTheirCells();
 
   {
diff --git a/src/mesh/DiamondDualMeshBuilder.cpp b/src/mesh/DiamondDualMeshBuilder.cpp
index c959899f0a20fc97e37a01b493d18b9b6e61e5d2..6554cb512f0ff2d9e556575b4b1ac23bdd047e8f 100644
--- a/src/mesh/DiamondDualMeshBuilder.cpp
+++ b/src/mesh/DiamondDualMeshBuilder.cpp
@@ -60,8 +60,6 @@ class MeshToDualDataMapper
     if constexpr (Dimension == 1) {
       const auto& node_to_cell_matrix = primal_connectivity.nodeToCellMatrix();
 
-      throw UnexpectedError("Looks like diamond mesh construction is buggy in 1D");
-
       NodeId dual_node_id            = 0;
       m_primal_node_to_dual_node_map = [&]() {
         std::vector<std::pair<NodeId, NodeId>> primal_node_to_dual_node_vector;