 (def <over> (*TimeLineCursor 0 false 0.0))
 
 (defn timeline [fns]
+  (assert (vector? fns) "timeline requires a vector")
   (let [cnt (count fns)
         ^MonoBehaviour coro-root (mono-obj)
         ^TimeLineCursor cursor (*TimeLineCursor 0 false 0.0)]

        ~@(map #(list 'set! (list '.a %1) %2) pairsyms getters))
        ~'(set! (.now cursor) (- Time/time (.start cursor)))
        ~'(set! (.ratio cursor) 
                (Mathf/InverseLerp 0.0 (.duration cursor) (.now cursor)))
      ~@(map
         #(list 'set! (:get (first %1)) 
            (list (:lerp %2)

    hard.core
    hard.input))


(defonce REGISTRY (atom {}))
(defonce THIS (gensym 'this))
(def panic false)

(def -mono-obj (volatile! nil))
(defn mono-obj []
