 
 (defn throw-into-basket
   "Animate a TARGET by moving it into the BASKET."
-  [scene basket target] 
+  [director scene basket target counter] 
   (let [total-animation-time 400
         source (.modelToView target (CAAT/Point. 0 0))
         destination (.modelToView basket (CAAT/Point. 0 0))

        (fn [event]
          (let [point-in-basket (.modelToModel target (.point event) basket)]
            (if (.contains basket (.x point-in-basket) (.y point-in-basket))
              (when (. basket (doOpen))
                (throw-into-basket scene basket target)
                (. counter (inc))
                (.audioPlay director "munching")
                (. basket (doMunch))
                ;; (message! director scene (rand-nth *positive-feedbacks*))
                )
              (. basket (doClose))))
          (.__mouseDrag target event)))
  (m/wrap target.mouseDown [e oldf]
          (.audioPlay director "flopp")

    (.addChild basket-container basket-head)
    (set! basket-container.isOpened false)
    (set! basket-container.doMunch
          (fn [& {:keys [on-finish] :or {on-finish (fn [])}}]
            (basket-head-munch! basket-head :on-finish on-finish)))
    (set! basket-container.doTalk
          (fn []
            (basket-head-talk! basket-head)))
    (set! basket-container.doOpen
          (fn [& {:keys [on-finish] :or {on-finish (fn [])}}]
            (when (not this.isOpened)
              (log/info logger "Opening basket")
              (animate basket-head (gen-shaky-behavior basket-head))
              (animate basket-head
                       (gen-move-behavior :to {:up 30})
                       (fn [t] (on-finish)))
              (.addBehavior basket-body
                            (doto (CAAT/ScaleBehavior.)
                              (.setFrameTime (.time basket-body) 120)
