refactor async in parallel