diff --git a/MeshLib/MeshGenerators/VtkMeshConverter.cpp b/MeshLib/MeshGenerators/VtkMeshConverter.cpp
index 82bc7af1a775cb1311bd1554b259328d42d3e3f3..9c26daec86d6b6d8def084ad1760d087d365c867 100644
--- a/MeshLib/MeshGenerators/VtkMeshConverter.cpp
+++ b/MeshLib/MeshGenerators/VtkMeshConverter.cpp
@@ -43,12 +43,13 @@ namespace detail
 {
 template <class T_ELEMENT>
 MeshLib::Element* createElementWithSameNodeOrder(
-    const std::vector<MeshLib::Node*>& nodes, vtkIdList* const node_ids)
+    const std::vector<MeshLib::Node*>& nodes, vtkIdList* const node_ids,
+    std::size_t const element_id)
 {
     auto** ele_nodes = new MeshLib::Node*[T_ELEMENT::n_all_nodes];
     for (unsigned k(0); k < T_ELEMENT::n_all_nodes; k++)
         ele_nodes[k] = nodes[node_ids->GetId(k)];
-    return new T_ELEMENT(ele_nodes);
+    return new T_ELEMENT(ele_nodes, element_id);
 }
 }  // namespace detail
 
@@ -65,7 +66,7 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(
     for (std::size_t i = 0; i < nNodes; i++)
     {
         coords = grid->GetPoints()->GetPoint(i);
-        nodes[i] = new MeshLib::Node(coords[0], coords[1], coords[2]);
+        nodes[i] = new MeshLib::Node(coords[0], coords[1], coords[2], i);
     }
 
     // set mesh elements
@@ -83,25 +84,25 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(
             case VTK_VERTEX:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Point>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_LINE:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Line>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_TRIANGLE:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Tri>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_QUAD:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Quad>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_PIXEL:
@@ -111,19 +112,19 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(
                 quad_nodes[1] = nodes[node_ids->GetId(1)];
                 quad_nodes[2] = nodes[node_ids->GetId(3)];
                 quad_nodes[3] = nodes[node_ids->GetId(2)];
-                elem = new MeshLib::Quad(quad_nodes);
+                elem = new MeshLib::Quad(quad_nodes, i);
                 break;
             }
             case VTK_TETRA:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Tet>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_HEXAHEDRON:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Hex>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_VOXEL:
@@ -137,13 +138,13 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(
                 voxel_nodes[5] = nodes[node_ids->GetId(5)];
                 voxel_nodes[6] = nodes[node_ids->GetId(7)];
                 voxel_nodes[7] = nodes[node_ids->GetId(6)];
-                elem = new MeshLib::Hex(voxel_nodes);
+                elem = new MeshLib::Hex(voxel_nodes, i);
                 break;
             }
             case VTK_PYRAMID:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Pyramid>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_WEDGE:
@@ -154,50 +155,50 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(
                     prism_nodes[i] = nodes[node_ids->GetId(i + 3)];
                     prism_nodes[i + 3] = nodes[node_ids->GetId(i)];
                 }
-                elem = new MeshLib::Prism(prism_nodes);
+                elem = new MeshLib::Prism(prism_nodes, i);
                 break;
             }
             case VTK_QUADRATIC_EDGE:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Line3>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_QUADRATIC_TRIANGLE:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Tri6>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_QUADRATIC_QUAD:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Quad8>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_BIQUADRATIC_QUAD:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Quad9>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_QUADRATIC_TETRA:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Tet10>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_QUADRATIC_HEXAHEDRON:
             {
                 elem = detail::createElementWithSameNodeOrder<MeshLib::Hex20>(
-                    nodes, node_ids);
+                    nodes, node_ids, i);
                 break;
             }
             case VTK_QUADRATIC_PYRAMID:
             {
                 elem =
                     detail::createElementWithSameNodeOrder<MeshLib::Pyramid13>(
-                        nodes, node_ids);
+                        nodes, node_ids, i);
                 break;
             }
             case VTK_QUADRATIC_WEDGE:
@@ -215,7 +216,7 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(
                 prism_nodes[11] = nodes[node_ids->GetId(13)];
                 for (unsigned i = 0; i < 3; ++i)
                     prism_nodes[12 + i] = nodes[node_ids->GetId(11 - i)];
-                elem = new MeshLib::Prism15(prism_nodes);
+                elem = new MeshLib::Prism15(prism_nodes, i);
                 break;
             }
             default: