player app refactoring to handle async api