diff --git a/src/cell.c b/src/cell.c
index 23a444030dbbc71b34f060e9ca098b0e854b3652..be593c7da438c2ed55ff180404b04a4dab03aee9 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -3052,11 +3052,8 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
   const int with_limiter = (e->policy & engine_policy_limiter);
 
 #ifdef WITH_MPI
-
   const int with_star_formation = e->policy & engine_policy_star_formation;
-
   const int with_feedback = e->policy & engine_policy_feedback;
-
 #endif
   int rebuild = 0;
 
@@ -3171,21 +3168,14 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
                                   ci_nodeID);
 
         /* Propagating new star counts? */
-
         if (with_star_formation && with_feedback) {
-
           if (ci_active && ci->hydro.count > 0) {
-
             scheduler_activate_recv(s, ci->mpi.recv, task_subtype_sf_counts);
-
             scheduler_activate_recv(s, ci->mpi.recv, task_subtype_tend_spart);
           }
-
           if (cj_active && cj->hydro.count > 0) {
-
             scheduler_activate_send(s, cj->mpi.send, task_subtype_sf_counts,
                                     ci_nodeID);
-
             scheduler_activate_send(s, cj->mpi.send, task_subtype_tend_spart,
                                     ci_nodeID);
           }
@@ -3243,21 +3233,14 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
                                   cj_nodeID);
 
         /* Propagating new star counts? */
-
         if (with_star_formation && with_feedback) {
-
           if (cj_active && cj->hydro.count > 0) {
-
             scheduler_activate_recv(s, cj->mpi.recv, task_subtype_sf_counts);
-
             scheduler_activate_recv(s, cj->mpi.recv, task_subtype_tend_spart);
           }
-
           if (ci_active && ci->hydro.count > 0) {
-
             scheduler_activate_send(s, ci->mpi.send, task_subtype_sf_counts,
                                     cj_nodeID);
-
             scheduler_activate_send(s, ci->mpi.send, task_subtype_tend_spart,
                                     cj_nodeID);
           }
diff --git a/src/runner.c b/src/runner.c
index 4dd6edd21987ca7f2ad869112ea17205b04d876f..84201536891c40b3fba91742035865e4dc18b142 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -4173,6 +4173,8 @@ void *runner_main(void *data) {
             free(t->buff);
           } else if (t->subtype == task_subtype_tend_spart) {
             free(t->buff);
+          } else if (t->subtype == task_subtype_tend_bpart) {
+            free(t->buff);
           } else if (t->subtype == task_subtype_sf_counts) {
             free(t->buff);
           }
diff --git a/src/space.c b/src/space.c
index 9574bdbe57f0c07062dc892a7ae3630a77c975e0..651f4c044ef864f4f5d8f9277c16f0d249514e73 100644
--- a/src/space.c
+++ b/src/space.c
@@ -569,6 +569,8 @@ void space_regrid(struct space *s, int verbose) {
         error("Failed to init spinlock for multipoles.");
       if (lock_init(&s->cells_top[k].stars.lock) != 0)
         error("Failed to init spinlock for stars.");
+      if (lock_init(&s->cells_top[k].black_holes.lock) != 0)
+        error("Failed to init spinlock for black holes.");
       if (lock_init(&s->cells_top[k].stars.star_formation_lock) != 0)
         error("Failed to init spinlock for star formation.");
     }
@@ -3349,6 +3351,7 @@ void space_split_recursive(struct space *s, struct cell *c,
         /* Update the cell-wide properties */
         h_max = max(h_max, cp->hydro.h_max);
         stars_h_max = max(stars_h_max, cp->stars.h_max);
+        black_holes_h_max = max(black_holes_h_max, cp->black_holes.h_max);
         ti_hydro_end_min = min(ti_hydro_end_min, cp->hydro.ti_end_min);
         ti_hydro_end_max = max(ti_hydro_end_max, cp->hydro.ti_end_max);
         ti_hydro_beg_max = max(ti_hydro_beg_max, cp->hydro.ti_beg_max);
@@ -3699,8 +3702,9 @@ void space_split_mapper(void *map_data, int num_cells, void *extra_data) {
 void space_recycle(struct space *s, struct cell *c) {
 
   /* Clear the cell. */
-  if (lock_destroy(&c->lock) != 0 || lock_destroy(&c->grav.plock) != 0 ||
-      lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0 ||
+  if (lock_destroy(&c->hydro.lock) != 0 || lock_destroy(&c->grav.plock) != 0 ||
+      lock_destroy(&c->grav.mlock) != 0 || lock_destroy(&c->stars.lock) != 0 ||
+      lock_destroy(&c->black_holes.lock) != 0 ||
       lock_destroy(&c->stars.star_formation_lock))
     error("Failed to destroy spinlocks.");
 
@@ -3749,8 +3753,11 @@ void space_recycle_list(struct space *s, struct cell *cell_list_begin,
   /* Clean up the list of cells. */
   for (struct cell *c = cell_list_begin; c != NULL; c = c->next) {
     /* Clear the cell. */
-    if (lock_destroy(&c->lock) != 0 || lock_destroy(&c->grav.plock) != 0 ||
-        lock_destroy(&c->mlock) != 0 || lock_destroy(&c->stars.lock) != 0 ||
+    if (lock_destroy(&c->hydro.lock) != 0 ||
+        lock_destroy(&c->grav.plock) != 0 ||
+        lock_destroy(&c->grav.mlock) != 0 ||
+        lock_destroy(&c->stars.lock) != 0 ||
+        lock_destroy(&c->black_holes.lock) != 0 ||
         lock_destroy(&c->stars.star_formation_lock))
       error("Failed to destroy spinlocks.");
 
@@ -3851,6 +3858,7 @@ void space_getcells(struct space *s, int nr_cells, struct cell **cells) {
         lock_init(&cells[j]->grav.plock) != 0 ||
         lock_init(&cells[j]->grav.mlock) != 0 ||
         lock_init(&cells[j]->stars.lock) != 0 ||
+        lock_init(&cells[j]->black_holes.lock) != 0 ||
         lock_init(&cells[j]->stars.star_formation_lock) != 0)
       error("Failed to initialize cell spinlocks.");
   }