woo a big manual brainstorm/rewrite of moving and state updating