                           :bad-publicity (Integer/parseInt target)))}
 
    "Progenitor"
-   {:abilities [{:cost [:click 1] :req (req (empty? (:hosted card)))
+   {:abilities [{:label "Install a virus program on Progenitor"
+                 :cost [:click 1] :req (req (empty? (:hosted card)))
                  :prompt "Choose a Virus program to install on Progenitor"
                  :choices (req (filter #(and (= (:type %) "Program")
                                              (has? % :subtype "Virus")

                                             (not (has? % :subtype "Icebreaker"))
                                             (<= (:cost %) (:credit runner)))
                                       (:hand runner)))
                 :msg (msg "host " (:title target))
                 :effect (effect (gain :memory (:memoryunits target))
                                 (runner-install target {:host-card card}))}]}

   "Director Haas"
   {:effect (effect (gain :click 1 :click-per-turn 1)) :leave-play (effect (lose :click-per-turn 1))

                                          (if (>= (:advance-counter (get-card state card)) 5) 3 2)))}}}

   "Off-Campus Apartment"
   {:abilities [{:label "Install and host a connection on Off-Campus Apartment"
                 :prompt "Choose a connection to install on Off-Campus Apartment"
                 :choices (req (filter #(and (has? % :subtype "Connection")
                                             (<= (:cost %) (:credit runner)))
                                       (:hand runner)))
                 :msg (msg "host " (:title target) " and draw 1 card")
                 :effect (effect (runner-install target {:host-card card}) (draw))}
                {:label "Host an installed connection"
                 :prompt "Choose a connection to host on Off-Campus Apartment"
                 :choices {:req #(and (has? % :subtype "Connection") (:installed %))}
                 :msg (msg "host " (:title target) " and draw 1 card")
                 :effect (effect (host card target) (draw))}]}

   "Omni-Drive"
   {:recurring 1
    :abilities [{:label "Install and host a program of 1[Memory Unit] or less on Omni-Drive"
                 :req (req (empty? (:hosted card))) :cost [:click 1]
                 :prompt "Choose a program of 1[Memory Unit] or less to install on Omni-Drive"
                 :choices (req (filter #(and (= (:type %) "Program")
