thread pool entry point