     (.setDiscardable target true)
     (listen target
             :mouse-enter
-            (fn [e oldf] 
-              (.addBehavior
-               target
-               (doto (CAAT/ScaleBehavior.)
-                 (.setFrameTime (.time scene) 250)
-                 (.setValues 1 1.1 1 1.1))) 
+            (fn [e oldf]
+              (animate target [:scale [:from 1 :to 1.1 :time 150]]) 
               (oldf target e)))
     (listen target :mouse-exit
             (fn [e oldf]
               (when (not target.trashed)
-                (.addBehavior
-                 target
-                 (doto (CAAT/ScaleBehavior.)
-                   (.setFrameTime (.time scene) 250)
-                   (.setValues 1.1 1 1.1 1))))
+                (animate target [:scale [:from 1.1 :to 1 :time 150]]))
               (oldf target e)))))
 
 (defn make-draggable-into

               object
               :position [(+ (rand-int 30) (* (/ 600 (count objects)) index) 100)
                          (+ (rand-int 50) 360)])))
          ;; (add! scene (winning-screen scene))
          ))))))

(def kw->behavior-fn {:move (fn [arg] (apply move-behavior arg))
                      :rotate (fn [arg] (apply rotate-behavior arg))
                      :scale (fn [arg] (apply scale-behavior arg))
                      :alpha (fn [arg] (apply alpha-behavior arg))
                      :parallel parallel-behavior})

(defprotocol AAnimationSpec
