Not seeing anything that couldn't be in the base class implementation, with allowed roles and allowed types abstracted