[WIP] Async refactor

Starting a PR for all the async refactoring.