diff --git a/src/Vector/vector_dist_comm.hpp b/src/Vector/vector_dist_comm.hpp
index ca70fd9939a5700a4e3b440bca71e1c14a14634f..fa00ed674652c072007b6a18ba385ff9cc6ccd47 100644
--- a/src/Vector/vector_dist_comm.hpp
+++ b/src/Vector/vector_dist_comm.hpp
@@ -749,6 +749,7 @@ public:
 	 *
 	 */
 	vector_dist_comm(const vector_dist_comm<dim,St,prop,Decomposition,Memory> & v)
+	:v_cl(create_vcluster()),dec(create_vcluster())
 	{
 		this->operator=(v);
 	}
@@ -1043,7 +1044,7 @@ public:
 	 */
 	vector_dist_comm<dim,St,prop,Decomposition,Memory> & operator=(vector_dist_comm<dim,St,prop,Decomposition,Memory> && vc)
 	{
-		dec.swap(vc.dec);
+		dec = vc.dec;
 
 		return *this;
 	}
diff --git a/src/Vector/vector_dist_unit_test.hpp b/src/Vector/vector_dist_unit_test.hpp
index a4ef5334411213d14d28b17f5bffb1b6a307eaaa..88a7275a268faa0eebc47208390061bb33de8a76 100644
--- a/src/Vector/vector_dist_unit_test.hpp
+++ b/src/Vector/vector_dist_unit_test.hpp
@@ -1771,6 +1771,52 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost_put )
 	}
 }
 
+BOOST_AUTO_TEST_CASE( vector_of_vector_dist )
+{
+	Vcluster & v_cl = create_vcluster();
+
+	if (v_cl.getProcessingUnits() > 48)
+		return;
+
+	// Boundary conditions
+	size_t bc[3]={PERIODIC,PERIODIC,PERIODIC};
+
+	// Box
+	Box<3,float> box({0.0,0.0,0.0},{1.0,1.0,1.0});
+
+	// ghost
+	Ghost<3,float> ghost(0.1);
+
+	openfpm::vector< vector_dist<3,float, aggregate<double,double>> > phases;
+
+	// first phase
+	phases.add( vector_dist<3,float, aggregate<double,double>>(4096,box,bc,ghost) );
+
+	// The other 3 phases
+	phases.add( vector_dist<3,float, aggregate<double,double>>(phases.get(0).getDecomposition(),4096) );
+	phases.add( vector_dist<3,float, aggregate<double,double>>(phases.get(0).getDecomposition(),4096) );
+	phases.add( vector_dist<3,float, aggregate<double,double>>(phases.get(0).getDecomposition(),4096) );
+
+	phases.get(0).map();
+	phases.get(0).ghost_get<>();
+	phases.get(1).map();
+	phases.get(1).ghost_get<>();
+	phases.get(2).map();
+	phases.get(2).ghost_get<>();
+	phases.get(3).map();
+	phases.get(3).ghost_get<>();
+
+	size_t cnt = 0;
+
+	for (size_t i = 0 ; i < phases.size() ; i++)
+		cnt += phases.get(i).size_local();
+
+	v_cl.sum(cnt);
+	v_cl.execute();
+
+	BOOST_REQUIRE_EQUAL(cnt,4*4096ul);
+}
+
 #include "vector_dist_cell_list_tests.hpp"
 #include "vector_dist_NN_tests.hpp"
 #include "vector_dist_complex_prp_unit_test.hpp"