                                   :effect (effect (gain :credit 1))}}}
 
    "Uninstall"
-   {:choices {:req #(and (= (first (:zone %)) :rig) (#{"Program" "Hardware"} (:type %)))}
+   {:choices {:req #(and (:installed %) (#{"Program" "Hardware"} (:type %)))}
     :msg (msg "move " (:title target) " to his or her grip")
     :effect (effect (move target :hand))}
 


   "Foxfire"
   {:trace {:base 7 :prompt "Choose 1 card to trash" :not-distinct true
            :choices (req (filter #(or (has? % :subtype "Virtual") (has? % :subtype "Link"))
                                  (concat (get-in runner [:rig :hardware])
                                          (get-in runner [:rig :resource])
                                          (get-in runner [:rig :program]))))
            :msg (msg "trash " (:title target)) :effect (effect (trash target))}}

   "Frame Job"


   "Freelancer"
   {:req (req tagged) :msg (msg "trash " (join ", " (map :title targets)))
    :choices {:max 2 :req #(and (:installed %) (= (:type %) "Resource"))}
    :effect (effect (trash-cards :runner targets))}

   "Gabriel Santiago: Consummate Professional"
   {:events {:successful-run {:msg "gain 2 [Credits]" :once :per-turn
