   (let [username (get-in @state [side :user :username])]
     (say state side {:user "__system__" :text (str username " " text ".")})))
 
-(declare prompt! forfeit trigger-event handle-end-run trash)
+(declare prompt! forfeit trigger-event handle-end-run trash update-advancement-cost update-all-advancement-costs
+         update-ice-strength update-breaker-strength)
 
 (defn pay [state side card & args]
   (let [costs (merge-costs (remove #(or (nil? %) (= % [:forfeit])) args))

            (trigger-event state side :successful-run-ends (first server)))
          (when (get-in @state [:run :unsuccessful])
            (trigger-event state side :unsuccessful-run-ends (first server)))
          (swap! state assoc-in [:runner :rig :program]
                 (for [p (get-in @state [:runner :rig :program])]
                   (assoc p :current-strength nil)))
          (let [run-effect (get-in @state [:run :run-effect])]
            (when-let [end-run-effect (:end-run run-effect)]
              (resolve-ability state side end-run-effect (:card run-effect) [(first server)]))))
        (swap! state assoc :run nil))))

(declare update-ice-strength)

(defn add-prop [state side card key n]
  (update! state side (update-in card [key] #(+ (or % 0) n)))

            (system-msg state side (str "installs " title
                                        (when host-card (str " on " (:title host-card)))
                                        (when no-cost " at no cost")))
            (trigger-event state side :runner-install installed-card)
            (when (has? c :subtype "Icebreaker") (update-breaker-strength state side c))))))))

(defn server-list [state card]
  (let [remotes (cons "New remote" (for [i (range (count (get-in @state [:corp :servers :remote])))]
