 (defonce THIS 'THYSELF)
 (defonce REGISTRY (atom {}))
 (def panic false)
+
+(def abort! #(throw (UnityEngine.MissingReferenceException. "tween.core/abort!")))
 
 (def ^System.Single -single (float 0.0))
 (def ^System.Int32  -short  (int 0))

(ns tween.core
  (:import 
    [UnityEngine Application MonoBehaviour WaitForSeconds Time Mathf
     GameObject Color Vector4 Vector3 Vector2 Quaternion]
    [System Object]
    [System.Collections IEnumerator]
    Wait MonoObj TimeLine

      (.StartCoroutine coro-root
        (reify IEnumerator
          (MoveNext [this]
            (try 
              (set! (.v cursor) (.invoke @current))
              (if (.v cursor) TRUE
                (if (do (vreset! current (first @fns) )
                        (vswap! fns rest) @current)
                  TRUE FALSE))
              (catch UnityEngine.MissingReferenceException e false)))
          (get_Current [this] (.v cursor))))]
      (fn [] (if @current routine false)))))

