diff --git a/FileIO/MPI_IO/NodePartitionedMeshReader.cpp b/FileIO/MPI_IO/NodePartitionedMeshReader.cpp
index 8d78776926ad0f4968eb5a30faa38cec2dfbc3c6..35a7ece22d64354103529314a0ded73775075411 100644
--- a/FileIO/MPI_IO/NodePartitionedMeshReader.cpp
+++ b/FileIO/MPI_IO/NodePartitionedMeshReader.cpp
@@ -157,20 +157,8 @@ MeshLib::NodePartitionedMesh* NodePartitionedMeshReader::readBinary(
     setElements(mesh_nodes, ghost_elem_data, mesh_elems, process_ghost);
 
     //----------------------------------------------------------------------------------
-    //Create a mesh and return it
-    const std::size_t n_nghost_elem = static_cast<std::size_t>(_mesh_info.regular_elements);
-    const unsigned n_global_base_nodes = static_cast<unsigned>(_mesh_info.global_base_nodes);
-    const unsigned n_global_nodes = static_cast<unsigned>(_mesh_info.global_nodes);
-    const unsigned n_base_nodes = static_cast<unsigned>(_mesh_info.base_nodes);
-    const unsigned n_active_base_nodes = static_cast<unsigned>(_mesh_info.active_base_nodes);
-    const unsigned n_active_nodes = static_cast<unsigned>(_mesh_info.active_nodes);
-
-    return new MeshLib::NodePartitionedMesh(
-            BaseLib::extractBaseName(file_name_base) + std::to_string(_mpi_comm_size),
-            mesh_nodes, glb_node_ids,
-            mesh_elems, n_nghost_elem,
-            n_global_base_nodes, n_global_nodes,
-            n_base_nodes, n_active_base_nodes, n_active_nodes);
+    return newMesh(BaseLib::extractBaseName(file_name_base),
+            mesh_nodes, glb_node_ids, mesh_elems);
 }
 
 bool NodePartitionedMeshReader::openASCIIFiles(std::string const& file_name_base,
@@ -362,21 +350,8 @@ MeshLib::NodePartitionedMesh* NodePartitionedMeshReader::readASCII(
 
         if(_mpi_rank == i)
         {
-            //----------------------------------------------------------------------------------
-            //Create a mesh
-            const std::size_t n_nghost_elem = static_cast<std::size_t>(_mesh_info.regular_elements);
-            const unsigned n_global_base_nodes = static_cast<unsigned>(_mesh_info.global_base_nodes);
-            const unsigned n_global_nodes = static_cast<unsigned>(_mesh_info.global_nodes);
-            const unsigned n_base_nodes = static_cast<unsigned>(_mesh_info.base_nodes);
-            const unsigned n_active_base_nodes = static_cast<unsigned>(_mesh_info.active_base_nodes);
-            const unsigned n_active_nodes = static_cast<unsigned>(_mesh_info.active_nodes);
-
-            np_mesh = new  MeshLib::NodePartitionedMesh(
-                    BaseLib::extractBaseName(file_name_base) + std::to_string(_mpi_comm_size),
-                    mesh_nodes, glb_node_ids,
-                    mesh_elems, n_nghost_elem,
-                    n_global_base_nodes, n_global_nodes,
-                    n_base_nodes, n_active_base_nodes, n_active_nodes);
+            np_mesh = newMesh(BaseLib::extractBaseName(file_name_base),
+                    mesh_nodes, glb_node_ids, mesh_elems);
         }
     }
 
@@ -392,6 +367,24 @@ MeshLib::NodePartitionedMesh* NodePartitionedMeshReader::readASCII(
     return  np_mesh;
 }
 
+MeshLib::NodePartitionedMesh*
+NodePartitionedMeshReader::newMesh(
+    std::string const& mesh_name,
+    std::vector<MeshLib::Node*> const& mesh_nodes,
+    std::vector<std::size_t> const& glb_node_ids,
+    std::vector<MeshLib::Element*> const& mesh_elems) const
+{
+    return new MeshLib::NodePartitionedMesh(
+        mesh_name + std::to_string(_mpi_comm_size),
+        mesh_nodes, glb_node_ids, mesh_elems,
+        static_cast<std::size_t>(_mesh_info.regular_elements),
+        static_cast<unsigned>(_mesh_info.global_base_nodes),
+        static_cast<unsigned>(_mesh_info.global_nodes),
+        static_cast<unsigned>(_mesh_info.base_nodes),
+        static_cast<unsigned>(_mesh_info.active_base_nodes),
+        static_cast<unsigned>(_mesh_info.active_nodes));
+}
+
 void NodePartitionedMeshReader::readElementASCII(std::ifstream &ins,
         std::vector<long>& elem_data, const bool ghost) const
 {
diff --git a/FileIO/MPI_IO/NodePartitionedMeshReader.h b/FileIO/MPI_IO/NodePartitionedMeshReader.h
index 3326cc2c8e4a20a489ade6965288a262a496e761..209f5fda6edfce4b48c1803db7295d2ce7a25647 100644
--- a/FileIO/MPI_IO/NodePartitionedMeshReader.h
+++ b/FileIO/MPI_IO/NodePartitionedMeshReader.h
@@ -84,6 +84,14 @@ class NodePartitionedMeshReader
 
         } _mesh_info;
 
+        /*! Creates a new mesh using PartitionMeshInfo
+         */
+        MeshLib::NodePartitionedMesh* newMesh(
+            std::string const& mesh_name,
+            std::vector<MeshLib::Node*> const& mesh_nodes,
+            std::vector<std::size_t> const& glb_node_ids,
+            std::vector<MeshLib::Element*> const& mesh_elems) const;
+
         /*!
              \brief Create a NodePartitionedMesh object, read binary mesh data
                     in the manner of parallel, and return a pointer to it.