why asynchronous?