Better Interface

Use dependency injection to initialise and return threads.