Button logic moved to player (untested)