refactor async out to `part`