switch to composition for async/await support