 (def run true)
 
 (defn hue [^UnityEngine.Material m ^UnityEngine.GameObject o]
-  (lazier-timeline (cycle [
-    (fn [] (wait (+ (rand) 0.3)))
-    (fn [] (tween {:material-color (UnityEngine.Color. (?f) (?f) (?f))} m 0.5 {:in :pow3}))
-    (fn [] (tween 
-      {:local {
-        :scale (Vector3. 2.0 2.0 2.0)
-        :position (v3+ (.position (.transform o)) 
-                       (Vector3. 0.0 2.0 0.0))}} o 1.0 {:in :pow5}))
-    ;(fn [] (wait (+ (rand) 0.1)))
-    (fn [] (tween {:material-color (UnityEngine.Color. 1 1 1)} m 0.5 {:in :pow3})) 
-    (fn [] (tween 
-     {:local {
-        :scale (Vector3. 1.0 1.0 1.0)
-        :position (v3+ (.position (.transform o)) 
-                      (Vector3. 0.0 0.0 0.0))}} o 0.5 :pow5))])))
+  (timeline-1
+    (cycle [
+      (fn [] (wait (+ (rand) 0.3)))
+      (fn [] (tween {:material-color (UnityEngine.Color. (?f) (?f) (?f))} m 0.5 {:in :pow3}))
+      (fn [] (tween 
+        {:local {
+          :scale (Vector3. 2.0 2.0 2.0)
+          :position (v3+ (.position (.transform o)) 
+                         (Vector3. 0.0 2.0 0.0))}} o 1.0 {:in :pow5}))
+      ;(fn [] (wait (+ (rand) 0.1)))
+      (fn [] (tween {:material-color (UnityEngine.Color. 1 1 1)} m 0.5 {:in :pow3})) 
+      (fn [] (tween 
+       {:local {
+          :scale (Vector3. 1.0 1.0 1.0)
+          :position (v3+ (.position (.transform o)) 
+                        (Vector3. 0.0 0.0 0.0))}} o 0.5 :pow5))])))
 
 
 (defn start-demo [_] 
   (clear-cloned!)
-  (dorun (for [x (range 20) 
-               z (range 20)
+  (dorun (for [x (range 13) 
+               z (range 13)
                :let [o (clone! :ball (V* (->v3 x 0 z) 2.0)) ]]
     (hue (.material (.GetComponent o UnityEngine.Renderer)) o))) )
 
-
-(defn fast-demo [_] 
-  (clear-cloned!)
-  (let [o-arr 
-        (into-array System.Object 
-          (for [x (range 20) z (range 20)
-            :let [o (clone! :ball (V* (->v3 x 0 z) 2.0)) ]] o))]
-    ) )
-
-(fast-demo nil)
-
-(lazy-timeline [ 
-(tween 
+'(timeline [
+  (tween 
   {:light {
     :range (float (+ 15 (rand 50)))
     :color (color (rand-vec 1.0 1.0 1.0))}} 

            (with-meta %3 {:tag (or (-> %2 :pair :tag) '*Pair-Object)}) 
            (list (or (-> %2 :pair :pool :c) '*Pair) (:identity %2) %4)) 
          tags tagmaps pairsyms targets)]
   `(~'let [~THIS ~o
            ~cursor (~'*TweenCursor false ~'(float Time/time) ~(:duration opts) (float 0.0) (float 0.0))
            ~@val-binds]
      (~'fn []
        (~'when-not ~'(.initiated cursor) 
        ~'(set! (.initiated cursor) true)
        ~'(set! (.start cursor) (- Time/time (.overage <over>)) )

(def <over> (*TimeLineCursor 0 false 0.0))

(defn timeline [fns]
  (let [current (volatile! (first fns))
        fns (volatile! (rest fns))
        ^MonoBehaviour coro-root (mono-obj)
