implement asynchronous mode