simplify read, pure, match, and project
convert the rest of the WorkflowOps

- use chain() everywhere