move to asynchronous interface