first attempt to refactor async tasks