          (zipmap (map :id states) states)))
 
 (defn guard? [g]
-  (and (vector? g)
-       (case (first g)
-         (:gt :geq :leq :lt) (or (= (count g) 3) (= (count g) 4))
-         (:and :or) (every? guard? (rest g)))))
+  (or (nil? g)
+      (and (vector? g)
+           (case (first g)
+             (:gt :geq :leq :lt) (or (= (count g) 3) (= (count g) 4))
+             (:and :or) (every? guard? (rest g))))))
 
 ; edge label is a set containing :required | button masks
 (defn make-edge [target guard label]

                                                   :borderRadius    (str (* scale w) "px")
                                                   :backgroundColor "rgba(165,42,42,0.5)"
                                                   :position        "absolute"
                                                   :color           "white"
                                                   :left            (str sx "px")
                                                   :bottom          (str sy "px")}}]))
                                [(first (:required-transitions ha))])]))

                                      :borderRadius    (str (* scale w) "px")
                                      :backgroundColor "brown"
                                      :position        "absolute"
                                      :color           "lightgray"
                                      :left            (str (* scale x) "px")
                                      :bottom          (str (* scale y) "px")}}
                        (str (:id ha) " " (:state ha))]])
