diff --git a/src/cell.h b/src/cell.h
index d9e968e3e768cfbc8a6e7539f36aca3d37ea6ffd..b83863df99d233d5ce00f5998e3ca361d69c0012 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -713,16 +713,6 @@ cell_can_recurse_in_pair_hydro_task(const struct cell *c) {
                        c->hydro.dx_max_part_old) < 0.5f * c->dmin);
 }
 
-__attribute__((always_inline)) INLINE static int
-cell_can_recurse_in_subset_pair_hydro_task(const struct cell *c,
-                                           const float h_max_subset) {
-
-  /* If so, is the cut-off radius plus the max distance the parts have moved */
-  /* smaller than the sub-cell sizes ? */
-  return (kernel_gamma * h_max_subset + c->hydro.dx_max_part_old) <
-         0.5f * c->dmin;
-}
-
 /**
  * @brief Can a sub-pair hydro task recurse to a lower level based
  * on the status of the particles in the cell.
@@ -766,20 +756,6 @@ cell_can_recurse_in_self_hydro_task(const struct cell *c) {
   return c->split && (kernel_gamma * c->hydro.h_max_old < 0.5f * c->dmin);
 }
 
-/**
- * @brief Can a hydro task recurse to a lower level based
- * on the status of the particles in the cell.
- *
- * @param c The #cell.
- */
-__attribute__((always_inline)) INLINE static int
-cell_can_recurse_in_self_subset_hydro_task(const struct cell *c,
-                                           const float h_max_subset) {
-
-  /* Is the cell not smaller than the smoothing length? */
-  return kernel_gamma * h_max_subset < 0.5f * c->dmin;
-}
-
 /**
  * @brief Can a sub-self hydro task recurse to a lower level based
  * on the status of the particles in the cell.
diff --git a/src/runner_doiact_functions_hydro.h b/src/runner_doiact_functions_hydro.h
index 1aaf13a2c3a023c1aa13e9875680cb1722e86cf1..099eec3a1f736cc7bee3f3eb88eeee4ba81dbee7 100644
--- a/src/runner_doiact_functions_hydro.h
+++ b/src/runner_doiact_functions_hydro.h
@@ -2842,7 +2842,7 @@ struct cell *FIND_SUB(const struct cell *const c,
 
 void DOSUB_PAIR_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
                        const int *ind, const int count, struct cell *cj,
-                       const float h_max_subset, const int gettimer) {
+                       const int gettimer) {
 
   const struct engine *e = r->e;
   struct space *s = e->s;
@@ -2854,8 +2854,8 @@ void DOSUB_PAIR_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
   if (!cell_is_active_hydro(ci, e)) return;
 
   /* Recurse? */
-  if (ci->split && cj->split &&
-      cell_can_recurse_in_subset_pair_hydro_task(ci, h_max_subset)) {
+  if (cell_can_recurse_in_pair_hydro_task(ci) &&
+      cell_can_recurse_in_pair_hydro_task(cj)) {
 
     /* Find in which sub-cell of ci the particles are */
     struct cell *const sub = FIND_SUB(ci, parts, ind);
@@ -2870,33 +2870,29 @@ void DOSUB_PAIR_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
       const int pjd = csp->pairs[k].pjd;
       if (ci->progeny[pid] == sub && cj->progeny[pjd] != NULL)
         DOSUB_PAIR_SUBSET(r, ci->progeny[pid], parts, ind, count,
-                          cj->progeny[pjd], h_max_subset,
+                          cj->progeny[pjd],
                           /*gettimer=*/0);
       if (ci->progeny[pid] != NULL && cj->progeny[pjd] == sub)
         DOSUB_PAIR_SUBSET(r, cj->progeny[pjd], parts, ind, count,
-                          ci->progeny[pid], h_max_subset,
+                          ci->progeny[pid],
                           /*gettimer=*/0);
     }
 
-  } else if (cell_is_active_hydro(ci, e)) {
-
-    /* Otherwise, compute the pair directly. */
+  }
+  /* Otherwise, compute the pair directly. */
+  else if (cell_is_active_hydro(ci, e)) {
 
     /* Do any of the cells need to be drifted first? */
     if (!cell_are_part_drifted(cj, e)) error("Cell should be drifted!");
 
     DOPAIR_SUBSET_BRANCH(r, ci, parts, ind, count, cj);
-
-  } else {
-    error("Recursion logic");
   }
 
   if (gettimer) TIMER_TOC(timer_dosub_subset);
 }
 
 void DOSUB_SELF_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
-                       const int *ind, const int count,
-                       const float h_max_subset, const int gettimer) {
+                       const int *ind, const int count, const int gettimer) {
 
   const struct engine *e = r->e;
 
@@ -2905,18 +2901,17 @@ void DOSUB_SELF_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
   if (!cell_is_active_hydro(ci, e)) return;
 
   /* Recurse? */
-  if (ci->split &&
-      cell_can_recurse_in_self_subset_hydro_task(ci, h_max_subset)) {
+  if (ci->split && cell_can_recurse_in_self_hydro_task(ci)) {
 
     /* Find in which sub-cell of ci the particles are */
     struct cell *const sub = FIND_SUB(ci, parts, ind);
 
     /* Loop over all progeny. */
-    DOSUB_SELF_SUBSET(r, sub, parts, ind, count, h_max_subset, /*gettimer=*/0);
+    DOSUB_SELF_SUBSET(r, sub, parts, ind, count, /*gettimer=*/0);
     for (int j = 0; j < 8; j++)
       if (ci->progeny[j] != sub && ci->progeny[j] != NULL)
         DOSUB_PAIR_SUBSET(r, sub, parts, ind, count, ci->progeny[j],
-                          h_max_subset, /*gettimer=*/0);
+                          /*gettimer=*/0);
   }
 
   /* Otherwise, compute self-interaction. */
diff --git a/src/runner_doiact_hydro.h b/src/runner_doiact_hydro.h
index 2b8d243047f9de3763824f8d5d375ea1ad503d2e..42e90414e71cf05f96c37483c4157bfd513cc17f 100644
--- a/src/runner_doiact_hydro.h
+++ b/src/runner_doiact_hydro.h
@@ -161,8 +161,7 @@ void DOPAIR_SUBSET_BRANCH(struct runner *r, const struct cell *restrict ci,
 
 void DOSUB_PAIR_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
                        const int *ind, const int count, struct cell *cj,
-                       const float h_max_subset, const int gettimer);
+                       const int gettimer);
 
 void DOSUB_SELF_SUBSET(struct runner *r, struct cell *ci, struct part *parts,
-                       const int *ind, const int count,
-                       const float h_max_subset, const int gettimer);
+                       const int *ind, const int count, const int gettimer);
diff --git a/src/runner_ghost.c b/src/runner_ghost.c
index 1a5903c475728b7127df1decd52fb3a06a9276de..ad4745cbd19938a24a4f9558aab22946a468f0ab 100644
--- a/src/runner_ghost.c
+++ b/src/runner_ghost.c
@@ -1457,8 +1457,7 @@ void runner_do_ghost(struct runner *r, struct cell *c, int timer) {
 
             /* Otherwise, sub-self interaction? */
             else if (l->t->type == task_type_sub_self)
-              runner_dosub_self_subset_density(r, finger, parts, pid, count,
-                                               h_max_subset, 1);
+              runner_dosub_self_subset_density(r, finger, parts, pid, count, 1);
 
             /* Otherwise, sub-pair interaction? */
             else if (l->t->type == task_type_sub_pair) {
@@ -1466,10 +1465,10 @@ void runner_do_ghost(struct runner *r, struct cell *c, int timer) {
               /* Left or right? */
               if (l->t->ci == finger)
                 runner_dosub_pair_subset_density(r, finger, parts, pid, count,
-                                                 l->t->cj, h_max_subset, 1);
+                                                 l->t->cj, 1);
               else
                 runner_dosub_pair_subset_density(r, finger, parts, pid, count,
-                                                 l->t->ci, h_max_subset, 1);
+                                                 l->t->ci, 1);
             }
           }
         }