adding roles implementation and user interface