anchor.diff:  
   (defun start-training (turns map)
     "Start a new training mode session and return game object."
  -  (let ((game (do-request +training-url+ (make-start-args turns map))))
  +  (let ((game (do-request (mode-url 'training) (make-start-args turns map))))
   	(if game (format t "Started training game: ~a~%" (view-url game)))
   	game))
   
   (defun start-arena ()
     "Start a new arena mode session and return game object."
     (format t "Waiting for pairing...~%")
  -  (let ((game (do-request +arena-url+ (make-start-args 300 "m1")))) ; TODO: don't send turns/map
  +  (let ((game (do-request (mode-url 'arena) (make-start-args 300 "m1")))) ; TODO: don't send turns/map
   	(if game (format t "Started arena game: ~a~%" (view-url game)))
   	game))
   
  
positive.code: (defvar +secret-key+ nil)
  (defvar +server-url+ "http://vindinium.org")
  
  (defvar +training-url+ (format nil "~a/api/training" +server-url+))
  (defvar +arena-url+ (format nil "~a/api/arena" +server-url+))
  
  ;; internal command symbol -> server formatted command
  (defvar +command-map+
    '((stay . "Stay")
  
negative.code: 		   when (cl-ppcre:scan (car x) tile-string)
  		   collect x)))
  
  (defun tile-at (board-map x y &key raw)
    "From a board map, lookup tile at given coords and return parsed tile symbol."
    (if (array-in-bounds-p board-map y x)
  	  (let ((tile-string (aref board-map y x)))
  		(if raw
  			tile-string
  			(parse-tile tile-string)))))
  
  ;; NOTE: x and y swap places
  (defun my-location (game)
    "Get your hero's current location."
    (let ((position (get-in game "hero" "pos")))
  	(list (jsown:val position "y") (jsown:val position "x"))))
  
  ;;; bot
  