add player
refactor viewport