runtime: use subclassing instead of extra ctor param for a special case.
runtime: migrate control flow related procs to strongly typed DSL