**Might redo this in clojure, seems to be the better language for those kind of things. Probably could build it on jvm and clr** Engine/Abstraction for processing custom tasks. How to "process" those tasks is implemented in steps, which are executed by workers. Each step can spawn new tasks.