better role handling