Refactor async implementation