       (~'fn []
         (~'when-not ~'(.initiated cursor) 
         ~'(set! (.initiated cursor) true)
+        ~'(set! (.start cursor) Time/time)
         ~@(map #(list 'set! (list '.a %1) %2) pairsyms base-getters))
         ~'(set! (.now cursor) (- Time/time (.start cursor)))
         (~'set! ~'(.ratio cursor) ~ratio-code)

(def ^System.Single -single (float 0.0))
(def ^System.Int32  -short  (int 0))

(def -mono-obj 
  (let [_ (UnityEngine.Object/Destroy (GameObject/Find "tween.core/-mono-obj")) 
        o (GameObject. "tween.core/-mono-obj")] 
    (set! (.hideFlags o) HideFlags/HideInHierarchy)
    (.AddComponent o UnityEngine.MonoBehaviour)))

(defn every-frame [f]
  (let [coro-root -mono-obj]
    (.StartCoroutine coro-root
      (reify IEnumerator
        (MoveNext [this] (f))
        (get_Current [this])))))

(defn- datatype? [v] (or (sequential? v) (set? v) (map? v)))


        (~'if ~'(< (.now cursor) (.duration cursor))
          true
          (~'do 
            ;~@(map #(list (or (-> %1 :pair :vars :r) !Pair-Object) %2) tagmaps pairsyms)
            ;(!TweenCursor ~'cursor)
            nil))))))



