   (and (:start rules)
        (->> rules
             (mapcat val)
-            (every? #{:start :fwd :left :right :push :pop :a :b :c :d :e}))))
+            (every? valid-symbols))))
 
 (defn process-tweet
   [{:keys [id src params user-id]}]

(defn parse-system-spec
  [src]
  (let [src                 (str/lower-case src)
        [hd rules]          (str/split src #":")
        [bg iter theta rot] (str/split hd #",")
        rules               (if rules
                              (->> rules
                                   (re-seq #"(([a-z])=([a-z2-9\-\+\[\]]+))")
                                   (map translate-rule)
                                   (into {})))]
    {:bg    (try (col/as-int24 (col/css bg)) (catch Exception e))

   :theta  0
   :rot    90})

(def valid-symbols
  #{:start :fwd :left :right :push :pop :a :b :c :d :e :x :y :z})

(defn replace-symbols
  [src]
  (let [src (replace
