      @results))
   ([container property reason] (evolve container property reason [:main])))
 
-(defn event-> [container target event] (.evolve container target event))
+(defn path [& elements] (vec (apply mapcat #(if (coll? %) % [%]) elements)))
+
+(defn event-> [container target event] (.evolve container (path target) event))
 
 (defn create-container-from-file [c-path c-ns c-name]
   (FGTestAppContainer/loadSourceCreateAndInit c-path c-ns c-name))

(defn init-container [c]
  (FGTestAppContainer/init c))

(defn get-property [container target property] (.getProperty container target property))

(defn wait-for-property-pred [container target property pred]
  (let [actual-value (loop [a 0
                            interval 5
                            v (.getProperty container target property)]
                       (if (and (not (pred v)) (< a wait-attempts))
                         (do
                           (fg/log-debug (str "Waiting " interval " millis, attempt " (inc a) " of " wait-attempts))

   (mouse-left MouseEvent/MOUSE_CLICKED x y)])

(defn left-click
  ([container target] (.evolve container (path target) left-click-events))
  ([container x y] (.evolve container (create-left-click-events x y))))

;;
