services should simply take workload arguments, simplifying model