Lots of refactoring, introduce new compute role