                         (vreset! current ((aget fns (.i cursor))))
                         @current)))
               (catch Exception e false)))
-          (get_Current [this] (.v cursor))))
-      (fn [] (.v cursor)))))
+          (get_Current [this] (.v cursor))))]
+      (fn [] (if (.v cursor) routine false)))))
 
 (defmacro timeline* [& fns]
   (let [[opts fns] ((juxt (comp set filter) remove) keyword? fns)

    (let [cnt (int (dec (.Length fns)))
          current (volatile! ((aget fns 0)))
          ^UnityEngine.MonoBehaviour coro-root (mono-obj)
          ^tween.core.TimeLineCursor cursor (*TimeLineCursor 0 false)]
      (.StartCoroutine coro-root
        (reify IEnumerator
          (MoveNext [this]

    (let [current (volatile! (first fns))
          fns (volatile! (rest fns))
          ^UnityEngine.MonoBehaviour coro-root (mono-obj)
          ^tween.core.TimeLineCursor cursor (*TimeLineCursor 0 false)
          routine
      (.StartCoroutine coro-root
        (reify IEnumerator
          (MoveNext [this]
