                 (do-net-damage 2)]}
 
    "Wendigo"
-   (let [ab {:req (req (= (:cid card) (:cid target)))
-             :effect (req (if (odd? (:advance-counter (get-card state card)))
-                            (morph state side card "Barrier" "Code Gate")
-                            (morph state side card "Code Gate" "Barrier")))}]
-     {:advanceable :always
-      :effect (req (if (odd? (get card :advance-counter 0))
-                     (morph state side card "Barrier" "Code Gate")
-                     (morph state side card "Code Gate" "Barrier")))
-      :abilities [{:msg "prevent the Runner from using a chosen program for the remainder of this run"}]
-      :events {:advance ab :advancement-placed ab}})
+   (morph-ice "Code Gate" "Barrier" {:msg "prevent the Runner from using a chosen program for the remainder of this run"})
 
    "Whirlpool"
    {:abilities [{:msg "prevent the Runner from jacking out"

    :flags {:cannot-lower-strength true}}

   "Lycan"
   (let [ab {:req (req (= (:cid card) (:cid target)))
             :effect (req (if (odd? (:advance-counter (get-card state card)))
                            (morph state side card "Code Gate" "Sentry")
                            (morph state side card "Sentry" "Code Gate")))}]
     {:advanceable :always
      :effect (req (if (odd? (get card :advance-counter 0))
                     (morph state side card "Code Gate" "Sentry")
                     (morph state side card "Sentry" "Code Gate")))
      :abilities [trash-program]
      :events {:advance ab :advancement-placed ab}})

   "Mamba"
   {:abilities [(do-net-damage 1)

                 :effect (req (swap! state assoc-in [:run :position] 0) (derez state side card))}]}

   "Changeling"
   (morph-ice "Barrier" "Sentry" end-the-run)
   
   "Checkpoint"
   {:effect (effect (gain :bad-publicity 1) (system-msg "takes 1 bad publicity"))
    :abilities [(trace-ability 5 {:label "Do 3 meat damage when this run is successful"
