This match is driven entirely with guards; as such I find the `if/else` formulation simpler.