                  (when-let [events (:events (card-def c))]
                    (unregister-events state side c)
                    (register-events state side events c))))))
+         (trigger-event state side :card-moved moved-card)
          moved-card)))))
 
 (defn draw

  (let [server (first (get-in @state [:run :server]))]
    (swap! state update-in [:runner :register :unsuccessful-run] #(conj % server))
    (swap! state assoc-in [:run :unsuccessful] true)
    (trigger-event state side :unsuccessful-run)
    (handle-end-run state side)))

(defn no-action [state side args]
  (swap! state assoc-in [:run :no-action] true)
  (system-msg state side "has no further action"))

(defn continue [state side args]
  (when (get-in @state [:run :no-action])
    (swap! state update-in [:run :position] dec)
    (swap! state assoc-in [:run :no-action] false)
    (swap! state assoc-in [:runner :rig :program]
           (for [p (get-in @state [:runner :rig :program])]
             (if (or (not (:current-strength p)) (:all-run p))
               p (assoc p :current-strength nil))))
    (system-msg state side "continues the run")))

(defn play-ability [state side {:keys [card ability targets] :as args}]
  (let [cdef (card-def card)

         (when (or no-cost (pay state side card :credit cost (:additional-cost cdef)))
           (card-init state side (assoc card :rezzed true))
           (system-msg state side (str "rez " (:title card) (when no-cost " at no cost")))
           (resolve-ability state side cdef card nil)
           (when (#{"ICE"} (:type card)) (update-ice-strength state side card))
           (trigger-event state side :rez card))))))

(defn corp-install
