add some error handling to help with validation
add one role validation method to be used in child objects
use a validation_error method which also does logging