Pulled out thread scheduling into a separate responsibility