separating compute and controller
code