Add threaded job processing