using the result of the validation function
context is used when calling validation function
custom validation function can return raw booleans
custom validation function can return a raw message for invalid results