I don't think there's a need to make the factory APIs match the actual CS APIs; I'm much more concerned about elegant test setup, and I think it's much cleaner and easier to reason about if the entire thread is defined in one shot. It also makes integrity much easier to maintain.