onBlank and onInvalid are now defaulted to do nothing rather than being null