Separate player state, UI and track providers