ensure validations, better errors, etc