Refactored for more async