   "Adds a move in UCI notation to a game at a given node id. The move is
   added as the last child. If no node id is supplied, the current node of the
   game is used."
-  [game uci-move & [node-id]]
+  [game uci-move & {:keys [node-id]}]
   (add-move game board/move-from-uci uci-move
             (or node-id (-> game :current-node :node-id))))
 

  "Like add-uci-move, but adds a sequence of moves rather than a single move. 
  This is faster than calling add-uci-move multiple times, because we don't
  have to unzip and zip the tree for each added move."
  [game uci-moves & [node-id]]
  (add-move-sequence game board/move-from-uci uci-moves
                     (or node-id (-> game :current-node :node-id))))


  "Removes a node (by default, the current node) from the game, and returns
  a modified game with the current node set to the parent of the deleted
  node."
  [game & {:keys [node-id]}]
  (let [node-id (or node-id (-> game :current-node :node-id))
        z (game-zip game node-id)
        zr (zip/remove z)]
