diff --git a/src/Vector/vector_dist_comm.hpp b/src/Vector/vector_dist_comm.hpp
index 12919b9f5e56abff381be9da2b897a563337cc0c..585be039d8032a8819f0aeca5610b052616ea201 100644
--- a/src/Vector/vector_dist_comm.hpp
+++ b/src/Vector/vector_dist_comm.hpp
@@ -49,11 +49,14 @@ class vector_dist_comm
 	//! third id is the processor id
 	openfpm::vector<aggregate<size_t,size_t,size_t>> m_opart;
 
-	//! Per processor ordered particles id for ghost_get
+	//! Per processor ordered particles id for ghost_get (see prc_g_opart)
 	//! For each processor the internal vector store the id of the
 	//! particles that must be communicated to the other processors
 	openfpm::vector<openfpm::vector<aggregate<size_t,size_t>>> g_opart;
 
+	// processor rank list of g_opart
+	openfpm::vector<size_t> prc_g_opart;
+
 	//! Sending buffer for the ghost particles position
 	openfpm::vector<send_pos_vector> g_pos_send;
 
@@ -671,6 +674,7 @@ class vector_dist_comm
 		// Buffer that contain for each processor the id of the particle to send
 		g_opart.clear();
 		g_opart.resize(dec.getNNProcessors());
+		prc_g_opart.clear();
 
 		// Iterate over all particles
 		auto it = v_pos.getIteratorTo(g_m);
@@ -833,12 +837,9 @@ public:
 		v_pos.resize(g_m);
 		v_prp.resize(g_m);
 
-		// Create processor list
-		openfpm::vector<size_t> prc;
-
 		// Label all the particles
 		if ((opt & SKIP_LABELLING) == false)
-			labelParticlesGhost(v_pos,v_prp,prc,g_m);
+			labelParticlesGhost(v_pos,v_prp,prc_g_opart,g_m);
 
 		// Send and receive ghost particle information
 		openfpm::vector<send_vector> g_send_prp;
@@ -850,13 +851,13 @@ public:
 
 		prc_recv_get.clear();
 		recv_sz_get.clear();
-		v_cl.SSendRecvP<send_vector,decltype(v_prp),prp...>(g_send_prp,v_prp,prc,prc_recv_get,recv_sz_get);
+		v_cl.SSendRecvP<send_vector,decltype(v_prp),prp...>(g_send_prp,v_prp,prc_g_opart,prc_recv_get,recv_sz_get);
 
 		if (opt != NO_POSITION)
 		{
 			prc_recv_get.clear();
 			recv_sz_get.clear();
-			v_cl.SSendRecv(g_pos_send,v_pos,prc,prc_recv_get,recv_sz_get);
+			v_cl.SSendRecv(g_pos_send,v_pos,prc_g_opart,prc_recv_get,recv_sz_get);
 		}
 
 		add_loc_particles_bc(v_pos,v_prp,g_m,opt);