updated to use async/await