validations and other magic