Reorder/tweak validations so they raise all the right messages and none of the wrong ones.