model refactor

that-pattern and setPlayer(update) introduced