Made it completely asynchronous