Basic Player implementation