diff --git a/src/cell.h b/src/cell.h
index 6aae833250958707cd7933478929ad54d17246db..89f7c954c29f23845cb9c876b93c6bb3d469fbe5 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -279,9 +279,6 @@ struct cell {
     /*! Values of h_max before the drifts, used for sub-cell tasks. */
     float h_max_old;
 
-    /*! The task to compute time-steps */
-    struct task *timestep;
-
     /*! Values of dx_max before the drifts, used for sub-cell tasks. */
     float dx_max_part_old;
 
diff --git a/src/engine.c b/src/engine.c
index 45d4836345fec07fc91986e1ce5669424f3ad842..0adbeb4adcdea3ab1c4c3dea7257f99e17e80b16 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -4257,7 +4257,8 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
 
     /* logger tasks ? */
     else if (t->type == task_type_logger) {
-      if (cell_is_active_hydro(t->ci, e) || cell_is_active_gravity(t->ci, e))
+      if (cell_is_active_hydro(t->ci, e) || cell_is_active_gravity(t->ci, e) ||
+          cell_is_active_stars(t->ci, e))
         scheduler_activate(s, t);
     }
 
@@ -6513,16 +6514,31 @@ void engine_dump_index(struct engine *e) {
                           e->policy & engine_policy_self_gravity);
 
   /* Be verbose about this */
-  if (e->nodeID == 0) message("writing index at t=%e.", e->time);
+  if (e->nodeID == 0) {
+    if (e->policy & engine_policy_cosmology)
+      message("Writing index at a=%e",
+              exp(e->ti_current * e->time_base) * e->cosmology->a_begin);
+    else
+      message("Writing index at t=%e",
+              e->ti_current * e->time_base + e->time_begin);
+  }
 #else
-  if (e->verbose) message("writing index at t=%e.", e->time);
+  if (e->verbose) {
+    if (e->policy & engine_policy_cosmology)
+      message("Writing index at a=%e",
+              exp(e->ti_current * e->time_base) * e->cosmology->a_begin);
+    else
+      message("Writing index at t=%e",
+              e->ti_current * e->time_base + e->time_begin);
+  }
 #endif
 
   /* Dump... */
   write_index_single(e, e->log->base_name, e->internal_units,
                      e->snapshot_units);
 
-  e->dump_snapshot = 0;
+  /* Flag that we dumped a snapshot */
+  e->step_props |= engine_step_prop_snapshot;
 
   clocks_gettime(&time2);
   if (e->verbose)
diff --git a/src/engine.h b/src/engine.h
index 358c7e5452f87d4198a46d66285d8b0a36bcbba1..7a83d4541b8ff0a6b34516e9a3e71cafede9a293 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -317,9 +317,6 @@ struct engine {
   struct logger *log;
 #endif
 
-  /* Need to dump a snapshot ? */
-  int dump_snapshot;
-
   /* How many steps have we done with the same set of tasks? */
   int tasks_age;
 
diff --git a/src/task.c b/src/task.c
index 834ae319399fbefcf7379a4ccd1a59f104a9fa28..996c5113bac9935f70a3aafafd58da965b13f5aa 100644
--- a/src/task.c
+++ b/src/task.c
@@ -47,38 +47,18 @@
 #include "lock.h"
 
 /* Task type names. */
-const char *taskID_names[task_type_count] = {"none",
-                                             "sort",
-                                             "self",
-                                             "pair",
-                                             "sub_self",
-                                             "sub_pair",
-                                             "init_grav",
-                                             "init_grav_out",
-                                             "ghost_in",
-                                             "ghost",
-                                             "ghost_out",
-                                             "extra_ghost",
-                                             "drift_part",
-                                             "drift_gpart",
-                                             "end_force",
-                                             "kick1",
-                                             "kick2",
-                                             "timestep",
-                                             "send",
-                                             "recv",
-                                             "grav_long_range",
-                                             "grav_mm",
-                                             "grav_down_in",
-                                             "grav_down",
-                                             "grav_mesh",
-                                             "cooling",
-                                             "star_formation",
-                                             "sourceterms",
-                                             "stars_ghost_in",
-                                             "stars_ghost",
-                                             "stars_ghost_out",
-                                             "logger"};
+const char *taskID_names[task_type_count] = {
+    "none",        "sort",           "self",
+    "pair",        "sub_self",       "sub_pair",
+    "init_grav",   "init_grav_out",  "ghost_in",
+    "ghost",       "ghost_out",      "extra_ghost",
+    "drift_part",  "drift_gpart",    "end_force",
+    "kick1",       "kick2",          "timestep",
+    "send",        "recv",           "grav_long_range",
+    "grav_mm",     "grav_down_in",   "grav_down",
+    "grav_mesh",   "cooling",        "star_formation",
+    "sourceterms", "logger",         "stars_ghost_in",
+    "stars_ghost", "stars_ghost_out"};
 
 /* Sub-task type names. */
 const char *subtaskID_names[task_subtype_count] = {
@@ -325,8 +305,8 @@ void task_unlock(struct task *t) {
 
     case task_type_end_force:
     case task_type_kick1:
-    case task_type_logger:
     case task_type_kick2:
+    case task_type_logger:
     case task_type_timestep:
       cell_unlocktree(ci);
       cell_gunlocktree(ci);
diff --git a/src/task.h b/src/task.h
index d2bcfa2d553d54c76080154acf59b80823e6d79e..9b3225fcf27b768059a2984847d20750d184f8d2 100644
--- a/src/task.h
+++ b/src/task.h
@@ -67,10 +67,10 @@ enum task_types {
   task_type_cooling,
   task_type_star_formation,
   task_type_sourceterms,
+  task_type_logger,
   task_type_stars_ghost_in,
   task_type_stars_ghost,
   task_type_stars_ghost_out,
-  task_type_logger,
   task_type_count
 } __attribute__((packed));
 
diff --git a/src/timers.c b/src/timers.c
index 5cd75cced7433427904e013629dd37c9bf28d009..898c833c3b6764f05ed9205efa0db6220e911a7e 100644
--- a/src/timers.c
+++ b/src/timers.c
@@ -35,65 +35,67 @@
 ticks timers[timer_count];
 
 /* Timer names. */
-const char* timers_names[timer_count] = {"none",
-                                         "prepare",
-                                         "init",
-                                         "init_grav",
-                                         "drift_part",
-                                         "drift_gpart",
-                                         "kick1",
-                                         "kick2",
-                                         "timestep",
-                                         "endforce",
-                                         "dosort",
-                                         "doself_density",
-                                         "doself_gradient",
-                                         "doself_force",
-                                         "doself_grav_pp",
-                                         "dopair_density",
-                                         "dopair_gradient",
-                                         "dopair_force",
-                                         "dopair_grav_mm",
-                                         "dopair_grav_pp",
-                                         "dograv_external",
-                                         "dograv_down",
-                                         "dograv_mesh",
-                                         "dograv_top_level",
-                                         "dograv_long_range",
-                                         "dosource",
-                                         "dosub_self_density",
-                                         "dosub_self_gradient",
-                                         "dosub_self_force",
-                                         "dosub_self_grav",
-                                         "dosub_pair_density",
-                                         "dosub_pair_gradient",
-                                         "dosub_pair_force",
-                                         "dosub_pair_grav",
-                                         "doself_subset",
-                                         "dopair_subset",
-                                         "dopair_subset_naive",
-                                         "dosub_subset",
-                                         "do_ghost",
-                                         "do_extra_ghost",
-                                         "dorecv_part",
-                                         "dorecv_gpart",
-                                         "dorecv_spart",
-                                         "do_cooling",
-                                         "do_star_formation",
-                                         "gettask",
-                                         "qget",
-                                         "qsteal",
-                                         "locktree",
-                                         "runners",
-                                         "step",
-                                         "doself_stars_density",
-                                         "dopair_stars_density",
-                                         "do_stars_ghost",
-                                         "doself_subset_stars_density",
-                                         "dopair_subset_stars_density",
-                                         "dosubpair_stars_density",
-                                         "dosub_self_stars_density",
-                                         "logger"};
+const char* timers_names[timer_count] = {
+    "none",
+    "prepare",
+    "init",
+    "init_grav",
+    "drift_part",
+    "drift_gpart",
+    "kick1",
+    "kick2",
+    "timestep",
+    "endforce",
+    "dosort",
+    "doself_density",
+    "doself_gradient",
+    "doself_force",
+    "doself_grav_pp",
+    "dopair_density",
+    "dopair_gradient",
+    "dopair_force",
+    "dopair_grav_mm",
+    "dopair_grav_pp",
+    "dograv_external",
+    "dograv_down",
+    "dograv_mesh",
+    "dograv_top_level",
+    "dograv_long_range",
+    "dosource",
+    "dosub_self_density",
+    "dosub_self_gradient",
+    "dosub_self_force",
+    "dosub_self_grav",
+    "dosub_pair_density",
+    "dosub_pair_gradient",
+    "dosub_pair_force",
+    "dosub_pair_grav",
+    "doself_subset",
+    "dopair_subset",
+    "dopair_subset_naive",
+    "dosub_subset",
+    "do_ghost",
+    "do_extra_ghost",
+    "dorecv_part",
+    "dorecv_gpart",
+    "dorecv_spart",
+    "do_cooling",
+    "do_star_formation",
+    "gettask",
+    "qget",
+    "qsteal",
+    "locktree",
+    "runners",
+    "step",
+    "doself_stars_density",
+    "dopair_stars_density",
+    "do_stars_ghost",
+    "doself_subset_stars_density",
+    "dopair_subset_stars_density",
+    "dosubpair_stars_density",
+    "dosub_self_stars_density",
+    "logger",
+};
 
 /* File to store the timers */
 static FILE* timers_file;