diff --git a/aliby/pipeline.py b/aliby/pipeline.py
index c0bd873ee9aa6815ccdd2a73298ff30d240d724d..d6057dea5b7c44a1f6a6a912c09033d485ab967f 100644
--- a/aliby/pipeline.py
+++ b/aliby/pipeline.py
@@ -213,6 +213,7 @@ class Pipeline(ProcessABC):
                 filename = f"{directory}/{image.name}.h5"
                 meta = MetaData(directory, filename)
                 from_start = True
+                trackers_state = None
                 if (
                     not general_config.get("overwrite", False)
                     and Path(filename).exists()
@@ -230,7 +231,9 @@ class Pipeline(ProcessABC):
                                 or 0
                             )
                             # get state array
-                            state_array = StateReader(filename).get_formatted_states()
+                            trackers_state = StateReader(
+                                filename
+                            ).get_formatted_states()
                             tiler.n_processed = process_from
                             process_from += 1
                         from_start = False
@@ -261,9 +264,10 @@ class Pipeline(ProcessABC):
                 runner = BabyRunner.from_tiler(
                     BabyParameters.from_dict(config["baby"]), tiler
                 )
-                bwriter = BabyWriter(filename)
+                if trackers_state:
+                    runner.crawler.trackers_state = trackers_state
 
-                # State Writer to recover interrupted experiments
+                bwriter = BabyWriter(filename)
                 swriter = StateWriter(filename)
 
                 # Limit extraction parameters during run using the available channels in tiler
@@ -318,11 +322,7 @@ class Pipeline(ProcessABC):
                         #     f"Segmentation failed:Segmentation:{perf_counter() - t}s"
                         # )
                         t = perf_counter()
-                        bwriter.write(seg, overwrite=["mother_assign"])
-                        swriter.write(
-                            data=runner.crawler.tracker_states,
-                            overwrite=swriter.datatypes.keys(),
-                        )
+                        bwriter.write(seg, overwrite=["mother_assign"], tp=i)
                         logging.debug(f"Timing:Writing-baby:{perf_counter() - t}s")
 
                         # TODO add time-skipping for cases when the
@@ -353,6 +353,11 @@ class Pipeline(ProcessABC):
                         logging.debug(f"Quality:Clogged_traps:{frac_clogged_traps}")
                         print("Frac clogged traps: ", frac_clogged_traps)
 
+                    # State Writer to recover interrupted experiments
+                    swriter.write(
+                        data=runner.crawler.tracker_states,
+                        overwrite=swriter.datatypes.keys(),
+                    )
                     meta.add_fields({"last_processed": i})
                 # Run post processing