refactor move logic into function objects, post completed moves to app server if multiplayer