breaking out the player position management to its own class
refactor of player position, decoupled from player script