refactor the topology interface so that it doesn't expose NumberOfTasks