             (list (or (-> %2 :pair :pool :c) '*Pair) (:identity %2) %4)) 
           tags tagmaps pairsyms targets)]
    `(~'let [~THIS ~o
-            ~cursor (~'*TweenCursor false ~'Time/time ~(:duration opts) 0.0 0.0)
+            ~cursor (~'*TweenCursor false ~'(float Time/time) ~(:duration opts) (float 0.0) (float 0.0))
             ~@val-binds]
-      ;[~tags ~tagmaps]
       (~'fn []
         (~'when-not ~'(.initiated cursor) 
         ~'(set! (.initiated cursor) true)

        ~@(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)

        (get_Current [this] (.v cursor))))
    (fn [] false)))

(defn lazy-timeline [fns]
  (let [current (volatile! (first fns))
        fns (volatile! (rest fns))
        ^MonoBehaviour coro-root (mono-obj)
        ^TimeLineCursor cursor (*TimeLineCursor 0 false 0.0)]
    (.StartCoroutine coro-root
      (reify IEnumerator
        (MoveNext [this]
          (when-not panic
            (set! (.v cursor) (@current))
            (if (.v cursor) true
              (if (do (vreset! current (first @fns) )
                      (vswap! fns rest) @current)
                true
                (!TimeLineCursor cursor)))))
        (get_Current [this] (.v cursor))))
    (fn [] (if @current true false))))

(defn lazier-timeline [fns]
  (let [fns (map #(%) fns)
        current (volatile! (first fns))
        fns (volatile! (rest fns))
        ^MonoBehaviour coro-root (mono-obj)
        ^TimeLineCursor cursor (*TimeLineCursor 0 false 0.0)]
    (.StartCoroutine coro-root
      (reify IEnumerator
        (MoveNext [this]
          (when-not panic
            (try (set! (.v cursor) (@current))
              (if (.v cursor) true
                (if (do (vreset! current (first @fns))
                        (vswap! fns rest) @current)
                    true
                  (!TimeLineCursor cursor)))
              (catch Exception e false))))
        (get_Current [this] (.v cursor))))
    (fn [] (if @current true false))))




(def seconds (volatile! 0))

'(lazier-timeline 
  (cycle [
    (fn [] (wait (rand 5)))
    (fn [] (lazy-timeline (map #(fn [] (log %)) "dog")))]))



(defn args->opts [m]
