Adopt block-based enumeration where appropriate
In my opinion makes the logic easier to read/understand