diff --git a/core/functions/test_hdf.py b/core/functions/test_hdf.py
new file mode 100644
index 0000000000000000000000000000000000000000..bd7fd764345840e80c63bdd49f7aad4a8d5ad2ca
--- /dev/null
+++ b/core/functions/test_hdf.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python3
+# c=CellsHDF.from_source("/home/alan/Documents/sync_docs/PhD/tmp/DO6MS2_003store.h5")
+import h5py
+from core.cells import Cells
+import pandas as pd
+
+f = h5py.File("/home/alan/Documents/sync_docs/PhD/tmp/DO6MS2_003store.h5")
+tracks = f["/extraction/general/None/area"][()]
+cell = Cells.from_source("/home/alan/Documents/sync_docs/PhD/tmp/DO6MS2_003store.h5")
+from postprocessor.core.picker import Picker
+
+picker = Picker(tracks=pd.DataFrame(tracks), cells=cell)
diff --git a/core/processor.py b/core/processor.py
index 917b951773a11d0b4d591be8951993382f824bbb..32cc0f313c92ced1ed3e8fd677414838f9bb29cd 100644
--- a/core/processor.py
+++ b/core/processor.py
@@ -1,13 +1,41 @@
+class Parameters:
+    def __init__(self, merger=None, picker=None, processes=None, branches=None):
+        self.merger = merger
+        self.picker = picker
+        self.processes = processes
+        self.branches = branches
+
+    def __getitem__(self, item):
+        return getattr(self, item)
+
+
 class PostProcessor:
-    def __init__(self, parameters):
+    def __init__(self, parameters, signals):
         self.parameters = parameters
 
         self.merger = Merger(parameters["merger"])
         self.picker = Picker(parameters["picker"])
-        self.processes, self.branches = [
-            (self.get_process(process), branch)
-            for process, branch in parameters["processes"]
+        self.processes = [
+            self.get_process(process) for process in parameters["processes"]
         ]
+        self.branches = parameters["branches"]
 
     def run(self):
+        self.merger.run(signals.get_branch(self.branches["merger"]))
+        self.picker.run(signals.get_branch(self.branches["picker"]))
+        for process, branch in zip(self.processes, self.branches["processes"]):
+            process.run(signals.get_branch(branch))
+
+
+class Signals:
+    def __init__(self, file):
+        self._file = h5py.File(file, "r")
+
+    def get_branch(self, branch):
+        return self._file[branch][()]
+
+    def branch_to_df(self):
         pass
+
+    def close(self):
+        self._file.close()