   (reduce #(if-let [card (parse-line side %2)] (conj %1 card) %1) [] (split-lines deck)))
 
 (defn allowed? [card {:keys [side faction title] :as identity}]
+  "Checks if a card is allowed in deck of a given identity - not accounting for influence"
   (and (not= (:type card) "Identity")
        (= (:side card) side)
        (or (not= (:type card) "Agenda")
            (= (:faction card) "Neutral")
-           (= (:faction card) faction))
+           (= (:faction card) faction)
+           (= title "The Shadow: Pulling the Strings"))
        (or (not= title "Custom Biotics: Engineered for Success")
            (not= (:faction card) "Jinteki"))))
 

                    (when (< count min-count)
                      [:span.invalid (str "(minimum " min-count ")")])])
                 (let [inf (influence deck)
                       limit (:influencelimit identity)]
                   [:div "Influence: "
                    [:span {:class (when (> inf limit) "invalid")} inf]
                    "/" (:influencelimit identity)])
                 (when (= (:side identity) "Corp")
                   (let [min-point (min-agenda-points deck)
                         points (agenda-points deck)]


(defn found? [query cards]
  (some #(if (= (.toLowerCase (:title %)) query) %) cards))

(defn influencelimit [identity]
  "Returns influence limit of an identity or INFINITY in case of draft IDs."
  (if (= (:setname identity) "Draft") INFINITY (:influencelimit identity)))

(defn search [query cards]
  (filter #(if (= (.indexOf (.toLowerCase (:title %)) query) -1) false true) cards))
