diff --git a/openfpm_vcluster b/openfpm_vcluster
index a463ae1d10144099b2bdeccc6aa6b4de8f3bfcd8..3f37237e5b7f263e4096b9e3c4b54b6008843a50 160000
--- a/openfpm_vcluster
+++ b/openfpm_vcluster
@@ -1 +1 @@
-Subproject commit a463ae1d10144099b2bdeccc6aa6b4de8f3bfcd8
+Subproject commit 3f37237e5b7f263e4096b9e3c4b54b6008843a50
diff --git a/src/Vector/vector_dist_comm.hpp b/src/Vector/vector_dist_comm.hpp
index cec466214c3e231dd30f23926082909402bf5cc7..b052bcf0e8cd64f0778b65b2db576bf4da51eb08 100644
--- a/src/Vector/vector_dist_comm.hpp
+++ b/src/Vector/vector_dist_comm.hpp
@@ -95,8 +95,6 @@ class vector_dist_comm
 	openfpm::vector<size_t> recv_sz_get;
 	//! Conversion to byte of recv_sz_get
 	openfpm::vector<size_t> recv_sz_get_byte;
-	//! recv_sz_pos_get
-	openfpm::vector<size_t> recv_sz_pos_get;
 
 
 	//! The same as recv_sz_get but for put
@@ -905,14 +903,20 @@ public:
 			if (opt & SKIP_LABELLING)
 			{
             	size_t opt_ = compute_options(opt);
-				v_cl.SSendRecv(g_pos_send,v_pos,prc_g_opart,prc_recv_get,recv_sz_pos_get,opt_);
+				v_cl.SSendRecv(g_pos_send,v_pos,prc_g_opart,prc_recv_get,recv_sz_get,opt_);
 			}
 			else
 			{
 				prc_recv_get.clear();
-				recv_sz_pos_get.clear();
-				v_cl.SSendRecv(g_pos_send,v_pos,prc_g_opart,prc_recv_get,recv_sz_pos_get);
+				recv_sz_get.clear();
+				v_cl.SSendRecv(g_pos_send,v_pos,prc_g_opart,prc_recv_get,recv_sz_get);
 			}
+
+            // fill g_opart_sz
+            g_opart_sz.resize(prc_g_opart.size());
+
+			for (size_t i = 0 ; i < prc_g_opart.size() ; i++)
+				g_opart_sz.get(i) = g_pos_send.get(i).size();
 		}
 
         // Important to ensure that the number of particles in v_prp must be equal to v_pos