better errors if you get it wrong