Rewrite assembler

Simplify process of creating workflow.

Main change is removing function returning functions that should be called with `self()` and then passing whole list of those around.  Now responsibility of creating process lies in given module, and we pass around rest of workflow (if needed).
Missing space after "," on line 16