worker thread revamp