Refactored to move some repetitive code into roles.
Updated changes