diff --git a/src/engine.c b/src/engine.c
index 84ad45d284af5fa33d6fd7d00361e608e3ad3749..1733369c6e7d4258b9517c234a0b2984555d0271 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -1379,6 +1379,9 @@ void engine_count_and_link_tasks(struct engine *e) {
         engine_addlink(e, &ci->grav, t);
         engine_addlink(e, &cj->grav, t);
       }
+      if (t->subtype == task_subtype_external_grav) {
+        error("Found a pair/external-gravity task...");
+      }
 
       /* Link sub-self tasks to cells. */
     } else if (t->type == task_type_sub_self) {
@@ -1407,8 +1410,6 @@ void engine_count_and_link_tasks(struct engine *e) {
       }
       if (t->subtype == task_subtype_external_grav) {
         error("Found a sub-pair/external-gravity task...");
-        engine_addlink(e, &ci->grav, t);
-        engine_addlink(e, &cj->grav, t);
       }
     }
   }
diff --git a/src/runner.c b/src/runner.c
index c74dc3bf40872e71ae5bfeb2c4c62c435bed79a5..3d9055183c78c3b4a3f8938a5b83091a18db8015 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -1279,7 +1279,7 @@ void *runner_main(void *data) {
           else if (t->subtype == task_subtype_external_grav)
             runner_do_grav_external(r, ci, 1);
           else
-            error("Unknown task subtype.");
+            error("Unknown/invalid task subtype (%d).", t->subtype);
           break;
 
         case task_type_pair:
@@ -1293,10 +1293,8 @@ void *runner_main(void *data) {
             runner_dopair2_force(r, ci, cj);
           else if (t->subtype == task_subtype_grav)
             runner_dopair_grav(r, ci, cj, 1);
-	  else if (t->subtype == task_subtype_external_grav)
-	    error("Found a pair/external-gravity task...");
           else
-            error("Unknown task subtype.");
+            error("Unknown/invalid task subtype (%d).", t->subtype);
           break;
 
         case task_type_sub_self:
@@ -1313,7 +1311,7 @@ void *runner_main(void *data) {
           else if (t->subtype == task_subtype_external_grav)
             runner_do_grav_external(r, ci, 1);
           else
-            error("Unknown task subtype.");
+            error("Unknown/invalid task subtype (%d).", t->subtype);
           break;
 
         case task_type_sub_pair:
@@ -1327,10 +1325,8 @@ void *runner_main(void *data) {
             runner_dosub_pair2_force(r, ci, cj, t->flags, 1);
           else if (t->subtype == task_subtype_grav)
             runner_dosub_grav(r, ci, cj, 1);
-          else if (t->subtype == task_subtype_external_grav)
-            error("Found a sub-pair/external-gravity task...");
           else
-            error("Unknown task subtype.");
+            error("Unknown/invalid task subtype (%d).", t->subtype);
           break;
 
         case task_type_sort:
@@ -1386,7 +1382,7 @@ void *runner_main(void *data) {
           runner_do_sourceterms(r, t->ci, 1);
           break;
         default:
-          error("Unknown task type.");
+          error("Unknown/invalid task type (%d).", t->type);
       }
 
       /* We're done with this task, see if we get a next one. */
diff --git a/src/scheduler.c b/src/scheduler.c
index c656470cb596c12cf93639f00e26d96c24403df8..67882b3f82dc789d63c410695519ee9df9ccce1d 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -183,16 +183,19 @@ static void scheduler_splittask(struct task *t, struct scheduler *s) {
                                     ci->progeny[k], NULL, 0),
                   s);
 
-          /* Make a task for each pair of progeny. */
-          for (int j = 0; j < 8; j++)
-            if (ci->progeny[j] != NULL)
-              for (int k = j + 1; k < 8; k++)
-                if (ci->progeny[k] != NULL)
-                  scheduler_splittask(
-                      scheduler_addtask(s, task_type_pair, t->subtype,
-                                        pts[j][k], 0, ci->progeny[j],
-                                        ci->progeny[k], 0),
-                      s);
+          /* Make a task for each pair of progeny unless it's ext. gravity. */
+          if (t->subtype != task_subtype_external_grav) {
+
+            for (int j = 0; j < 8; j++)
+              if (ci->progeny[j] != NULL)
+                for (int k = j + 1; k < 8; k++)
+                  if (ci->progeny[k] != NULL)
+                    scheduler_splittask(
+                        scheduler_addtask(s, task_type_pair, t->subtype,
+                                          pts[j][k], 0, ci->progeny[j],
+                                          ci->progeny[k], 0),
+                        s);
+          }
         }
       }