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

              \f :fwd
              \+ :right \- :left
              \[ :push \] :pop
              \a :a \b :b \c :c \d :d \e :e}
             src)
        num (count src)]
    (loop [acc [] i 0]

   :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
