diff --git a/src/cell.c b/src/cell.c
index 03a23ed562b387d113bc68c0033979ec8578403a..46c2be3d0554ff8ff301ecae1804c0fd5155e5c3 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -2069,8 +2069,8 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
     const int cj_active = (cj != NULL) ? cell_is_active(cj, e) : 0;
 
     /* Only activate tasks that involve a local active cell. */
-    if ((ci_active && ci->nodeID == engine_rank) ||
-        (cj_active && cj->nodeID == engine_rank)) {
+    if ((ci_active && ci->nodeID == nodeID) ||
+        (cj_active && cj->nodeID == nodeID)) {
       scheduler_activate(s, t);
 
       /* Set the drifting flags */
@@ -2088,7 +2088,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
 
 #ifdef WITH_MPI
       /* Activate the send/recv tasks. */
-      if (ci->nodeID != engine_rank) {
+      if (ci->nodeID != nodeID) {
 
         /* If the local cell is active, receive data from the foreign cell. */
         if (cj_active) {
@@ -2112,7 +2112,7 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
         /* If the local cell is active, send its ti_end values. */
         if (cj_active) scheduler_activate_send(s, cj->send_ti, ci->nodeID);
 
-      } else if (cj->nodeID != engine_rank) {
+      } else if (cj->nodeID != nodeID) {
 
         /* If the local cell is active, receive data from the foreign cell. */
         if (ci_active) {
@@ -2156,8 +2156,6 @@ int cell_unskip_tasks(struct cell *c, struct scheduler *s) {
     if (c->kick1 != NULL) scheduler_activate(s, c->kick1);
     if (c->kick2 != NULL) scheduler_activate(s, c->kick2);
     if (c->timestep != NULL) scheduler_activate(s, c->timestep);
-    // if (c->grav_ghost[0] != NULL) scheduler_activate(s, c->grav_ghost[0]);
-    // if (c->grav_ghost[1] != NULL) scheduler_activate(s, c->grav_ghost[1]);
     if (c->grav_down != NULL) scheduler_activate(s, c->grav_down);
     if (c->grav_long_range != NULL) scheduler_activate(s, c->grav_long_range);
     if (c->cooling != NULL) scheduler_activate(s, c->cooling);
diff --git a/src/engine.c b/src/engine.c
index 46eee0c9806037657c554845bfab62831d6dd8d4..1e2bf22e8f3d8db1fb49264704afca65449b6a81 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -4314,12 +4314,14 @@ void engine_unskip(struct engine *e) {
   /* Activate all the regular tasks */
   threadpool_map(&e->threadpool, runner_do_unskip_mapper, e->s->local_cells_top,
                  e->s->nr_local_cells, sizeof(int), 1, e);
-  // threadpool_map(&e->threadpool, runner_do_unskip_mapper, e->s->cells_top,
-  //             e->s->nr_cells, sizeof(int), 1, e);
 
-  /* And the top level gravity FFT one */
-  if (e->s->periodic && (e->policy & engine_policy_self_gravity))
-    scheduler_activate(&e->sched, e->s->grav_top_level);
+  /* And the top level gravity FFT one when periodicity is on.*/
+  if (e->s->periodic && (e->policy & engine_policy_self_gravity)) {
+   
+    /* But only if there are other tasks (i.e. something happens on this node) */
+    if(e->sched.active_count > 0)
+      scheduler_activate(&e->sched, e->s->grav_top_level);
+  }
 
   if (e->verbose)
     message("took %.3f %s.", clocks_from_ticks(getticks() - tic),
diff --git a/src/gravity/Default/gravity.h b/src/gravity/Default/gravity.h
index 34e10e8896cdc3de4a288e194dca2d75bc30a854..1eee6e678288a209b669c46f7c87fbb5c399b6c7 100644
--- a/src/gravity/Default/gravity.h
+++ b/src/gravity/Default/gravity.h
@@ -78,7 +78,7 @@ gravity_compute_timestep_self(const struct gpart* const gp,
   const float epsilon = gravity_get_softening(gp);
 
   /* Note that 0.66666667 = 2. (from Gadget) / 3. (Plummer softening) */
-  float dt = sqrtf(0.66666667f * grav_props->eta * epsilon * ac_inv);
+  const float dt = sqrtf(0.66666667f * grav_props->eta * epsilon * ac_inv);
 
   return dt;
 }