                      (trash state side prev-card {:keep-server-alive true})))
                  (let [card-name (if (or (= :rezzed install-state) (= :face-up install-state) (:rezzed c))
                                    (:title card) "a card")]
-                   (system-msg state side (str (if (= "" cost-str) 
-                                                  "installs "
-                                                  (str "spends " cost-str " to install "))
-                                               card-name " in " server))
+                   (system-msg state side (str (build-spend-msg cost-str "install")
+                                                card-name " in " server)))
                  (let [moved-card (move state side c slot)]
                    (trigger-event state side :corp-install moved-card)
                    (when (= (:type c) "Agenda")

                 (system-msg state side "installs a card facedown" )
               (if custom-message
                 (system-msg state side custom-message)
                 (system-msg state side (str (if (= "" cost-str) "installs " (str "spends " cost-str " to install ")) title
                                          (when host-card (str " on " (:title host-card)))
                                          (when no-cost " at no cost")))))
               (trigger-event state side :runner-install installed-card)

         (when-let [cost-str (pay state side card :credit (:cost card) extra-cost
                              (when-not no-additional-cost additional-cost))]
           (let [c (move state side (assoc card :seen true) :play-area)]
             (system-msg state side (str (build-spend-msg cost-str "play") title))
             (trigger-event state side (if (= side :corp) :play-operation :play-event) c)
             (if (has? c :subtype "Current")
               (do (doseq [s [:corp :runner]]
