continuing refactoring to use async