slightly changed the PlayerSource interface