adapt to asynchronous jobs