refactor roles