make async anon class into a seperate class (PlayerWatcherAsync)
refactor methods