diff --git a/aliby/experiment.py b/aliby/experiment.py
index 6dcc953dc02f610366bce2d8902b5c9b97a45661..d29c62fdfc4fe479c352df6ca9d9ab31fec6c276 100644
--- a/aliby/experiment.py
+++ b/aliby/experiment.py
@@ -120,7 +120,7 @@ class MetaData:
         )
 
     def add_fields(self, fields_values: dict):
-        for field, value in field_values.items():
+        for field, value in fields_values.items():
             self.add_field(field, value)
 
 
diff --git a/aliby/pipeline.py b/aliby/pipeline.py
index b6dabd6c0521c2cb562b353e1fb65f0da2a78cfd..bfe18173f390ecfd53e41cda54de629350ae7a1d 100644
--- a/aliby/pipeline.py
+++ b/aliby/pipeline.py
@@ -29,6 +29,7 @@ from agora.io.signal import Signal
 from extraction.core.extractor import Extractor, ExtractorParameters
 from extraction.core.functions.defaults import exparams_from_meta
 from postprocessor.core.processor import PostProcessor, PostProcessorParameters
+from postprocessor.compiler import ExperimentCompiler, PageOrganiser
 
 logging.basicConfig(
     filename="aliby.log",
@@ -82,7 +83,7 @@ class PipelineParameters(ParametersABC):
                 id=expt_id,
                 distributed=0,
                 tps=tps,
-                directory=directory,
+                directory=str(directory),
                 strain="",
                 earlystop=dict(
                     min_tp=180,
@@ -130,6 +131,13 @@ class Pipeline(ProcessABC):
         # for other processes
         return cls(parameters=PipelineParameters.from_yaml(fpath))
 
+    @classmethod
+    def from_existing_h5(cls, fpath):
+        with h5py.File(fpath, "r") as f:
+            pipeline_parameters = PipelineParameters.from_yaml(f.attrs["parameters"])
+
+        return cls(pipeline_parameters)
+
     def run(self):
         # Config holds the general information, use in main
         # Steps holds the description of tasks with their parameters
@@ -302,6 +310,7 @@ class Pipeline(ProcessABC):
                     self.parameters.postprocessing
                 ).to_dict()
                 PostProcessor(filename, post_proc_params).run()
+
                 return True
         except Exception as e:  # bug in the trap getting
             logging.exception(
@@ -317,6 +326,15 @@ class Pipeline(ProcessABC):
             if session:
                 session.close()
 
+        try:
+            compiler = ExperimentCompiler(None, filepath)
+            tmp = compiler.run()
+            po = PageOrganiser(tmp, grid_spec=(3, 2))
+            po.plot()
+            po.save(fullpath / f"{directory}report.pdf")
+        except Exception as e:
+            print(e)
+
     def check_earlystop(self, filename, es_parameters):
         s = Signal(filename)
         df = s["/extraction/general/None/area"]