diff --git a/src/partition.c b/src/partition.c
index 63eee1a00605c8bb4be1de601238f9fe56416088..a39ab93c5a7beffa1e8ea78149d04bb853483e19 100644
--- a/src/partition.c
+++ b/src/partition.c
@@ -577,9 +577,11 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
     int cid = ci - cells;
 
     /* Different weights for different tasks. */
-    if (t->type == task_type_ghost || t->type == task_type_kick1 ||
-        t->type == task_type_kick2 || t->type == task_type_timestep ||
-        t->type == task_type_drift_part || t->type == task_type_drift_gpart) {
+    if (t->type == task_type_drift_part || t->type == task_type_drift_gpart ||
+	t->type == task_type_ghost || t->type == task_type_extra_ghost ||
+	t->type == task_type_kick1 || t->type == task_type_kick2 || 
+	t->type == task_type_timestep || t->type == task_type_init_grav ||
+	t->type == task_type_grav_down || t->type == task_type_grav_long_range) {
 
       /* Particle updates add only to vertex weight. */
       if (taskvweights) weights_v[cid] += w;
diff --git a/src/scheduler.c b/src/scheduler.c
index 263466c8841ebb3d04053bca55fb9200236750f5..b1d3903f9c17ed01cd045563220e0be27a766c40 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -1143,20 +1143,32 @@ void scheduler_reweight(struct scheduler *s, int verbose) {
       case task_type_ghost:
         if (t->ci == t->ci->super) cost = wscale * t->ci->count;
         break;
+      case task_type_extra_ghost:
+        if (t->ci == t->ci->super) cost = wscale * t->ci->count;
+        break;
       case task_type_drift_part:
         cost = wscale * t->ci->count;
         break;
       case task_type_drift_gpart:
         cost = wscale * t->ci->gcount;
         break;
+      case task_type_init_grav:
+	cost = wscale * t->ci->gcount;
+	break;
+      case task_type_grav_down:
+	cost = wscale * t->ci->gcount;
+	break;
+      case task_type_grav_long_range:
+	cost = wscale * t->ci->gcount;
+	break;
       case task_type_kick1:
-        cost = wscale * t->ci->count;
+        cost = wscale * t->ci->count + wscale * t->ci->gcount;
         break;
       case task_type_kick2:
-        cost = wscale * t->ci->count;
+        cost = wscale * t->ci->count + wscale * t->ci->gcount;
         break;
       case task_type_timestep:
-        cost = wscale * t->ci->count;
+        cost = wscale * t->ci->count + wscale * t->ci->gcount;
         break;
       case task_type_send:
         cost = 10 * wscale * t->ci->count * t->ci->count;