using async processing to simplify response parsing