diff --git a/openfpm_io b/openfpm_io
index ee9b1c3fd606cbf676f11167371ed85ed1f36346..5e408377640e8bd56b7d5e1905aca49c34655656 160000
--- a/openfpm_io
+++ b/openfpm_io
@@ -1 +1 @@
-Subproject commit ee9b1c3fd606cbf676f11167371ed85ed1f36346
+Subproject commit 5e408377640e8bd56b7d5e1905aca49c34655656
diff --git a/src/Vector/vector_dist.hpp b/src/Vector/vector_dist.hpp
index 3b1cc0b7aaaf4f2ad85a0d2666c6fb3abac9e574..df61e151a2a128d4e4d1b69629968b73dd859935 100644
--- a/src/Vector/vector_dist.hpp
+++ b/src/Vector/vector_dist.hpp
@@ -2678,10 +2678,13 @@ public:
 			                           VECTOR_POINTS> vtk_writer;
 			vtk_writer.add(v_pos,v_prp,g_m);
 
-			std::string output = std::to_string(out + "_" + std::to_string(v_cl.getProcessUnitID()) + std::to_string(".vtk"));
+			std::string output = std::to_string(out + "_" + std::to_string(v_cl.getProcessUnitID()) + std::to_string(".vtp"));
 
 			// Write the VTK file
-			return vtk_writer.write(output,prp_names,"particles",meta_info,ft);
+			bool ret=vtk_writer.write(output,prp_names,"particles",meta_info,ft);
+			if(v_cl.rank()==0)
+            {vtk_writer.write_pvtp(out,prp_names,v_cl.size())   ;}
+			return ret;
 		}
 	}
 
@@ -2770,10 +2773,13 @@ public:
 									   openfpm::vector<prop,Memory,typename layout_base<prop>::type,layout_base>>, VECTOR_POINTS> vtk_writer;
 			vtk_writer.add(v_pos,v_prp,g_m);
 
-			std::string output = std::to_string(out + "_" + std::to_string(v_cl.getProcessUnitID()) + "_" + std::to_string(iteration) + std::to_string(".vtk"));
+			std::string output = std::to_string(out + "_" + std::to_string(v_cl.getProcessUnitID()) + "_" + std::to_string(iteration) + std::to_string(".vtp"));
 
 			// Write the VTK file
-			return vtk_writer.write(output,prp_names,"particles",meta_info,ft);
+			bool ret=vtk_writer.write(output,prp_names,"particles",meta_info,ft);
+            if(v_cl.rank()==0)
+            {vtk_writer.write_pvtp(out,prp_names,v_cl.size(),iteration);}
+            return ret;
 		}
 	}