                  last-time start
                  wait speed-target]
                 (let [since (time-since start)]
-                  (put! out (tween-fn t))
+                  (put! out (tween-fn (ease-fn t)))
 
                   (when (< since duration)
 

        now (c/to-long (t/now))]
    (- now start)))

(def ease-fns {:linear identity})

(defn tween
  [state target]
  (fn [t]


(defn transition
  ([state target] (transition state target 500))
  ([state target duration] (transition state target duration :cubic-in-out))
  ([state target duration easing & ease-args]
     (let [out (chan)
           tween-fn (tween state target)
           ease-fn (ease easing ease-args)
           start (t/now)
           speed-target 16
           speed-tolerance 1
