async ops + refactoring