Updated to use a role based model