diff --git a/MeshLib/MeshSubset.h b/MeshLib/MeshSubset.h
index 7e0e76c50fb86c997a180f7384dfbf73ce09a96f..c356d101cd009b44bbf3054ccafa25d0ce3d5e34 100644
--- a/MeshLib/MeshSubset.h
+++ b/MeshLib/MeshSubset.h
@@ -75,18 +75,6 @@ public:
     /// return this mesh ID
     std::size_t getMeshID() const { return _msh.getID(); }
 
-    /// return the number of registered nodes
-    std::size_t getNumberOfNodes() const { return _nodes.size(); }
-
-    /// Returns the global node id Node::getID() of i-th node in the mesh
-    /// subset.
-    /// \pre The _nodes vector must be of size > i.
-    std::size_t getNodeID(std::size_t const i) const
-    {
-        assert(i < _nodes.size());
-        return _nodes[i]->getID();
-    }
-
     bool useTaylorHoodElements() const { return _use_taylor_hood_elements; }
 
     std::vector<Element*>::const_iterator elementsBegin() const
diff --git a/NumLib/DOF/MeshComponentMap.cpp b/NumLib/DOF/MeshComponentMap.cpp
index 17a2c23187a50e84329d64fba7f092c8f4859b42..df12e28dd547d91e7af169999cca0b49b9597210 100644
--- a/NumLib/DOF/MeshComponentMap.cpp
+++ b/NumLib/DOF/MeshComponentMap.cpp
@@ -305,12 +305,14 @@ void MeshComponentMap::createSerialMeshComponentMap(
     for (auto const& c : components)
     {
         std::size_t const mesh_id = c.getMeshID();
+        auto const& mesh_subset_nodes = c.getNodes();
         // mesh items are ordered first by node, cell, ....
-        for (std::size_t j = 0; j < c.getNumberOfNodes(); j++)
+        for (std::size_t j = 0; j < mesh_subset_nodes.size(); j++)
         {
-            _dict.insert(Line(
-                Location(mesh_id, MeshLib::MeshItemType::Node, c.getNodeID(j)),
-                comp_id, global_index++));
+            auto const node_id = mesh_subset_nodes[j]->getID();
+            _dict.insert(
+                Line(Location(mesh_id, MeshLib::MeshItemType::Node, node_id),
+                     comp_id, global_index++));
         }
         comp_id++;
     }
@@ -409,7 +411,7 @@ void MeshComponentMap::createParallelMeshComponentMap(
     int components_at_high_order_nodes = 0;
     for (auto const& c : components)
     {
-        if (partitioned_mesh.getNumberOfNodes() == c.getNumberOfNodes())
+        if (partitioned_mesh.getNumberOfNodes() == c.getNodes().size())
         {
             components_at_high_order_nodes++;
             num_unknowns += partitioned_mesh.getNumberOfGlobalNodes();
@@ -438,9 +440,9 @@ void MeshComponentMap::createParallelMeshComponentMap(
         const auto& sub_mesh_nodes = c.getNodes();
 
         // mesh items are ordered first by node, cell, ....
-        for (std::size_t j = 0; j < c.getNumberOfNodes(); j++)
+        for (std::size_t j = 0; j < sub_mesh_nodes.size(); j++)
         {
-            const auto node_id = c.getNodeID(j);
+            const auto node_id = sub_mesh_nodes[j]->getID();
             const bool is_base_node =
                 MeshLib::isBaseNode(*sub_mesh_nodes[j],
                                     partitioned_mesh.getElementsConnectedToNode(
@@ -479,7 +481,7 @@ void MeshComponentMap::createParallelMeshComponentMap(
         }
 
         bool const use_whole_nodes =
-            (partitioned_mesh.getNumberOfNodes() == c.getNumberOfNodes());
+            (partitioned_mesh.getNumberOfNodes() == c.getNodes().size());
         if (use_whole_nodes)
         {
             _num_global_dof += partitioned_mesh.getNumberOfGlobalNodes();