separate async methods and callers