       (if choices
         (if (map? choices)
           (if (:req choices)
-            (show-select state (or player side) card ability priority)
+            (show-select state (or player side) card ability {:priority priority})
             (let [n ((:number choices) state side card targets)]
               (prompt! state (or player side) card prompt {:number n} (dissoc ability :choices))))
           (let [cs (if-not (fn? choices)

                     (let [cards (choices state side card targets)]
                             (if not-distinct
                               cards (distinct-by :title cards))))]
            (prompt! state (or player side) card prompt cs (dissoc ability :choices) priority)))
        (when (and (or (not counter-cost) (<= counter-cost (or counter 0)))
                   (or (not advance-counter-cost) (<= advance-counter-cost (or advance-counter 0)))
                   (apply pay (concat [state side card] cost)))


(defn show-select
  ([state side card ability] (show-select state side card ability nil))
  ([state side card ability {:keys [priority] :as args}]
   (let [ability (update-in ability [:choices :max] #(if (fn? %) (% state side card nil) %))]
     (swap! state update-in [side :selected]
            #(conj (vec %) {:ability (dissoc ability :choices) :req (get-in ability [:choices :req])
