asynchronous merge