anchor.diff:  	  (cons (subseq seq 0 n)
   			(split-seq-n (subseq seq n) n))))
   
  +(defun get-in (json &rest keys)
  +  "Deep select key in jsown object."
  +  (let ((cur (jsown:val json (car keys))))
  +	(loop for k in (cdr keys)
  +	   do (setq cur (jsown:val cur k)))
  +	cur))
  +
   (defun board-tiles (game)
     "Return board tiles string from game object."
  -  (jsown:val (jsown:val (jsown:val game "game") "board") "tiles"))
  +  (get-in game "game" "board" "tiles"))
   
   (defun board-size (game)
     "Return board size from game object."
  -  (jsown:val (jsown:val (jsown:val game "game") "board") "size"))
  +  (get-in game "game" "board" "size"))
   
   (defun make-board-map (game)
     "Create a 2d array of the tiles string from game object."
  
positive.code: 		   when (cl-ppcre:scan (car x) tile-string)
  		   collect x)))
  
  (defun tile-at (board-map x y)
    "From a board map, lookup tile at given coords and return parsed tile symbol."
    (if (array-in-bounds-p board-map y x)
  	  (parse-tile (aref board-map y x))))
  
  ;; NOTE: x and y swap places
  (defun my-location (game)
    "Get your hero's current location."
    (let ((position (jsown:val (jsown:val game "hero") "pos")))
  	(list (jsown:val position "y") (jsown:val position "x"))))
  
  ;;; bot
  
negative.code: (defvar +secret-key+ nil)
  (defvar +server-url+ "http://vindinium.org")
  
  ;; internal command symbol -> server formatted command
  (defvar +command-map+
    '((stay . "Stay")
  