diff --git a/src/engine.c b/src/engine.c
index 37a17b76793a885b213142e2833ddc3c19311b3d..6ba3d58194a83a7cd4256f2e21d251e6e5a4fb4d 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -1977,8 +1977,8 @@ void engine_make_self_gravity_tasks_mapper(void *map_data, int num_elements,
           const int cjd = cell_getid(cdim, iii, jjj, kkk);
           struct cell *cj = &cells[cjd];
 
-	  if(i==11 && j==0 && k==10)
-	    message("Found direct neighbour: (i,j,k)=(%d,%d,%d) (iii,jjj,kkk)=(%d,%d,%d) nodeID=%d", 	i,j,k, iii,jjj,kkk, cj->nodeID);
+	  /* if(i==11 && j==0 && k==10) */
+	  /*   message("Found direct neighbour: (i,j,k)=(%d,%d,%d) (iii,jjj,kkk)=(%d,%d,%d) nodeID=%d", 	i,j,k, iii,jjj,kkk, cj->nodeID); */
 
 
 	  /* Avoid duplicates of local pairs*/
@@ -3947,11 +3947,11 @@ void engine_step(struct engine *e) {
   if (e->policy & engine_policy_self_gravity) {
     for (int i = 0; i < e->s->nr_cells; ++i)
       num_gpart_mpole += e->s->cells_top[i].multipole->m_pole.num_gpart;
-    if (num_gpart_mpole != e->s->nr_gparts)
+    if (num_gpart_mpole != e->total_nr_gparts)
       error(
           "Multipoles don't contain the total number of gpart mpoles=%zd "
           "ngparts=%zd",
-          num_gpart_mpole, e->s->nr_gparts);
+          num_gpart_mpole, e->total_nr_gparts);
   }
 #endif
 
@@ -4140,7 +4140,7 @@ void engine_do_drift_top_multipoles_mapper(void *map_data, int num_elements,
 
   for (int ind = 0; ind < num_elements; ind++) {
     struct cell *c = &cells[ind];
-    if (c != NULL && c->nodeID == e->nodeID) {
+    if (c != NULL) {
 
       /* Drift the multipole at this level only */
       if (c->ti_old_multipole != e->ti_current) cell_drift_multipole(c, e);
diff --git a/src/runner_doiact_grav.h b/src/runner_doiact_grav.h
index ea41d8da9e8794a5d0284a3501f4bfab8f96a182..844c8caca2d3c85f5ced6ea593a391a0b5b2438b 100644
--- a/src/runner_doiact_grav.h
+++ b/src/runner_doiact_grav.h
@@ -1241,8 +1241,8 @@ void runner_do_grav_long_range(struct runner *r, struct cell *ci, int timer) {
       if(check) {
 	++direct_ngbs;
 	direct_ngbs_gpart += cj->multipole->m_pole.num_gpart;
-	message("Found direct neighbour %d: (i,j,k)=(%d,%d,%d) (ii,jj,kk)=(%d,%d,%d) nodeID=%d",
-		direct_ngbs, i,j,k, ii,jj,kk, cj->nodeID);
+	/* message("Found direct neighbour %d: (i,j,k)=(%d,%d,%d) (ii,jj,kk)=(%d,%d,%d) nodeID=%d", */
+	/* 	direct_ngbs, i,j,k, ii,jj,kk, cj->nodeID); */
       }
 #endif
       
diff --git a/src/space.c b/src/space.c
index f93f5338351ae009adeadc11922d9ca0a91bfb21..419d31b94bb70275e9f0820ba0f360e9bbdef0bb 100644
--- a/src/space.c
+++ b/src/space.c
@@ -234,6 +234,8 @@ void space_rebuild_recycle_mapper(void *map_data, int num_elements,
     c->xparts = NULL;
     c->gparts = NULL;
     c->sparts = NULL;
+    if(s->gravity)
+      bzero(c->multipole, sizeof(struct gravity_tensors));
     for (int i = 0; i < 13; i++)
       if (c->sort[i] != NULL) {
         free(c->sort[i]);
@@ -264,6 +266,7 @@ void space_free_cells(struct space *s) {
   threadpool_map(&s->e->threadpool, space_rebuild_recycle_mapper, s->cells_top,
                  s->nr_cells, sizeof(struct cell), 0, s);
   s->maxdepth = 0;
+  message("Done"); fflush(stdout);
 }
 
 /**
@@ -953,6 +956,8 @@ void space_rebuild(struct space *s, int verbose) {
   // message( "hooking up cells took %.3f %s." ,
   // clocks_from_ticks(getticks() - tic), clocks_getunit());
 
+  message("ti_old=%lld", ti_old);
+
   /* At this point, we have the upper-level cells, old or new. Now make
      sure that the parts in each cell are ok. */
   space_split(s, cells_top, s->nr_cells, verbose);