Block, so that tasks actually complete.

This makes me a bit sad, but need more radical overhaul before we can get away from it.
Use a Map to simplify parser grammar
Remove unnecessary test