Player: initial refactoring