make the block parser iterate instead of recurse