 
 (declare resolve-ability)
 
-(defn show-prompt [state side card msg choices f]
-  (let [prompt (if (string? msg) msg (msg state side card nil))]
+(defn show-prompt
+  ([state side card msg choices f] (show-prompt state side card msg choices f nil))
+  ([state side card msg choices f priority]
+    (let [prompt (if (string? msg) msg (msg state side card nil))]
     (when (or (#{:credit :counter} choices) (> (count choices) 0))
       (swap! state update-in [side :prompt]
-             #(conj (vec %) {:msg prompt :choices choices :effect f :card card})))))
+             (if priority
+               #(cons {:msg prompt :choices choices :effect f :card card} (vec %))
+               #(conj (vec %) {:msg prompt :choices choices :effect f :card card})))))))
 
 (defn resolve-psi [state side card psi bet]
   (swap! state assoc-in [:psi side] bet)

               (or (not req) (req state side card targets)))
      (if choices
        (if (map? choices)
          (show-select state (or player side) card ability)
          (let [cs (if-not (fn? choices)
                     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))))
        (when (and (or (not counter-cost) (<= counter-cost counter))
                   (or (not advance-counter-cost) (<= advance-counter-cost advance-counter))
                   (apply pay (concat [state side card] cost)))

               p (assoc p :current-strength nil))))
    (system-msg state side "continues the run")))


(defn play-ability [state side {:keys [card ability targets] :as args}]
      (system-msg state side (str "play ability"))
  (let [cdef (card-def card)
        abilities (:abilities cdef)
        ab (if (= ability (count abilities))
