asynchronous completion routine