    ;; Icebreakers
 
    "Alpha"
-   {:abilities [{:cost [:credit 1] :req (req (and run (zero? (:position run))))
-                 :msg "break 1 subroutine on the outermost ICE protecting this server"}
-                {:cost [:credit 1] :msg "add 1 strength" :effect (effect (pump card 1))}]}
+   (auto-icebreaker ["All"]
+     {:abilities [{:cost [:credit 1] :req (req (and run (zero? (:position run))))
+                   :msg "break 1 subroutine on the outermost ICE protecting this server"}
+                  {:cost [:credit 1] :msg "add 1 strength" :effect (effect (pump card 1)) :pump 1}]})
 
    "Alias"
-   {:abilities [{:cost [:credit 1] :req (req (#{:hq :rd :archives} (first (:server run))))
-                 :msg "break 1 sentry subroutine"}
-                {:cost [:credit 2] :msg "add 3 strength" :effect (effect (pump card 3))}]}
+   (auto-icebreaker ["Sentry"]
+     {:abilities [{:cost [:credit 1] :req (req (#{:hq :rd :archives} (first (:server run))))
+                   :msg "break 1 sentry subroutine"}
+                  {:cost [:credit 2] :msg "add 3 strength" :effect (effect (pump card 3)) :pump 3}]})
 
    "Atman"
    {:prompt "How many power counters?" :choices :credit :msg (msg "add " target " power counters")

                 :req (req current-ice)
                 :effect (req (update! state side (update-in card [:wyrm-count] (fnil #(+ % 1) 0)))
                              (update-ice-strength state side current-ice))}
                {:cost [:credit 1] :msg "add 1 strength" :effect (effect (pump card 1))}]
    :events (let [wy {:effect (req (update! state side (dissoc card :wyrm-count)))}]
                 {:pre-ice-strength {:req (req (and (= (:cid target) (:cid current-ice)) (:wyrm-count card)))
                                     :effect (req (let [c (:wyrm-count (get-card state card))]
                                                       (ice-strength-bonus state side (- c))))}
                  :pass-ice wy :run-ends wy})}

   "Yog.0"
   {:abilities [{:msg "break 1 code gate subroutine"}]}

   "ZU.13 Key Master"
   {:abilities [{:cost [:credit 1] :msg "break 1 code gate subroutine"}
                {:cost [:credit 1] :msg "add 1 strength" :effect (effect (pump card 1))}]}

   ;; ICE
   "Archer"

    :strength-bonus (req (count (filter #(has? % :subtype "Icebreaker") (all-installed state :runner))))}

   "Crypsis"
   (auto-icebreaker ["All"]
     {:abilities [{:cost [:credit 1] :msg "break ICE subroutine"}
                  {:cost [:credit 1] :msg "add 1 strength" :effect (effect (pump card 1)) :pump 1}
                  {:cost [:click 1] :msg "place 1 virus counter"
                   :effect (effect (add-prop card :counter 1))}
                  {:counter-cost 1 :label "Remove 1 hosted virus counter" :msg "remove 1 virus counter"}]})

   "Cyber-Cypher"
   (auto-icebreaker ["Code Gate"]
     {:abilities [{:cost [:credit 1] :msg "break 1 code gate subroutine"}
                  {:cost [:credit 1] :msg "add 1 strength" :effect (effect (pump card 1)) :pump 1}]})

   "Dagger"
   (auto-icebreaker ["Sentry"]
     {:abilities [{:cost [:credit 1] :msg "break 1 sentry subroutine"}
                  {:cost [:credit 1] :msg "add 5 strength" :effect (effect (pump card 5)) :pump 5}]})

   "Darwin"
   {:events {:runner-turn-begins
