                 end-the-run]}
 
    "Viktor 2.0"
-   {:abilities [{:msg "do 1 brain damage using 1 power counter"
-                 :counter-cost 1
-                 :effect (effect (damage :brain 1 {:card card}))}
-                (trace-ability 2 {:label "Add 1 power counter"
-                                  :msg "add 1 power counter"
-                                  :effect (effect (add-prop card :counter 1))})
+   {:abilities [(power-counter-ability (do-brain-damage 1))
+                (trace-ability 2 add-power-counter)
                 end-the-run]}
 
    "Viper"

   (morph-ice "Sentry" "Code Gate" trash-program)

   "Mamba"
   {:abilities [(do-net-damage 1)
                {:msg "do 1 net damage using 1 power counter"
                 :counter-cost 1 :effect (effect (damage :net 1 {:card card}))}
                {:msg "start a Psi game"
                 :psi {:not-equal {:msg "add 1 power counter"
                                   :effect (effect (add-prop :runner card :counter 1))}}}]}

   "Markus 1.0"
   {:abilities [trash-installed end-the-run]}

   :msg "give the Runner 1 tag"
   :effect (effect (tag-runner :runner 1))}) 

(def add-power-counter
  "Adds 1 power counter to the card."
  {:label "Add 1 power counter"
   :msg "add 1 power counter"
   :effect (effect (add-prop card :counter 1))})

(defn trace-ability
  "Run a trace with specified base strength.
   If successful trigger specified ability"
