convert dispatcher to a class

makes subclass methods easier to work with
make approval delivery method name more clear
validate UserRole#role
copy the position into the approval