diff --git a/openfpm_numerics b/openfpm_numerics
index aaa2cab12452445faa160d2b2a2ccdee85a93011..834b07c439b8cb308f535fcf43bddf9cc9ac7823 160000
--- a/openfpm_numerics
+++ b/openfpm_numerics
@@ -1 +1 @@
-Subproject commit aaa2cab12452445faa160d2b2a2ccdee85a93011
+Subproject commit 834b07c439b8cb308f535fcf43bddf9cc9ac7823
diff --git a/src/Decomposition/CartDecomposition.hpp b/src/Decomposition/CartDecomposition.hpp
index c170c01e6b3c68726bb7679b67ca2c79fee7972d..8454d6d349e0206cf69b47080269956b965374a2 100755
--- a/src/Decomposition/CartDecomposition.hpp
+++ b/src/Decomposition/CartDecomposition.hpp
@@ -812,16 +812,15 @@ public:
 		domain = cart.domain;
 		std::copy(cart.spacing,cart.spacing+3,spacing);
 
-		//! Runtime virtual cluster
-		v_cl = cart.v_cl;
-
 		ghost = cart.ghost;
 
-		cart.bbox = bbox;
-		cart.ss_box = ss_box;
+		bbox = cart.bbox;
+		ss_box = cart.ss_box;
 
 		for (size_t i = 0 ; i < dim ; i++)
-			cart.bc[i] = bc[i];
+			bc[i] = cart.bc[i];
+
+		return *this;
 
 		return *this;
 	}
diff --git a/src/Grid/grid_dist_id.hpp b/src/Grid/grid_dist_id.hpp
index 67e80da68f816e111ab6ca9f27cb0849f0a3783e..9902cb07a74e2d92af4097a32f5cfd1030f99a92 100644
--- a/src/Grid/grid_dist_id.hpp
+++ b/src/Grid/grid_dist_id.hpp
@@ -663,7 +663,7 @@ public:
 	 *
 	 */
 	grid_dist_id(const Decomposition & dec, const size_t (& g_sz)[dim],const Box<dim,St> & domain, const Ghost<dim,long int> & g)
-	:domain(domain),dec(dec),v_cl(*global_v_cluster),ginfo(g_sz),ginfo_v(g_sz)
+	:domain(domain),dec(*global_v_cluster),v_cl(*global_v_cluster),ginfo(g_sz),ginfo_v(g_sz)
 	{
 #ifdef SE_CLASS2
 		check_new(this,8,GRID_DIST_EVENT,4);
@@ -672,6 +672,7 @@ public:
 		InitializeCellDecomposer(g_sz);
 
 		ghost = convert_ghost(g,cd_sm);
+		this->dec = dec.duplicate(ghost);
 
 		// Initialize structures
 		InitializeStructures(g_sz);
diff --git a/src/Grid/grid_dist_id_iterator_sub.hpp b/src/Grid/grid_dist_id_iterator_sub.hpp
index 244fa2e589faf36f5b46cf65c43de329d0e6a780..eb8424015f510e1fac0d0c5a910371e4520bbcec 100644
--- a/src/Grid/grid_dist_id_iterator_sub.hpp
+++ b/src/Grid/grid_dist_id_iterator_sub.hpp
@@ -129,7 +129,7 @@ class grid_dist_iterator_sub
 	*
 	*/
 	grid_dist_iterator_sub(const grid_dist_iterator_sub<dim,device_grid> & tmp)
-	:g_c(tmp.g_c),gList(tmp.gList),gdb_ext(gdb_ext),start(tmp.start),stop(tmp.stop)
+	:g_c(tmp.g_c),gList(tmp.gList),gdb_ext(tmp.gdb_ext),start(tmp.start),stop(tmp.stop)
 	{
 		// get the next grid iterator
 		if (g_c < gList.size())