   (update-state! current-state :camera-pos add-vec
                  (scalar-multiply d (/ (scroll-scale-for-state @current-state)))))
 
-(defn set-projection! [current-state projection animation-signaller]
-  (swap-state-animated! animation-signaller
-                        current-state assoc :projection projection))
-
-(defn toggle-projection! [current-state animation-signaller]
+(defn set-projection! [current-state projection]
+  (swap-state-animated! current-state assoc :projection projection))
+
+(defn toggle-projection! [current-state]
   (let [projection (if (= (:projection @current-state) :fisheye)
                      :zoom-out
                      :fisheye)]
-    (set-projection! current-state projection animation-signaller)))
-
-(defn zoom-in-to-pos! [current-state pos animation-signaller]
-  (swap-state-animated! animation-signaller
-                        current-state assoc
+    (set-projection! current-state projection)))
+
+(defn zoom-in-to-pos! [current-state pos]
+  (swap-state-animated! current-state assoc
                         :projection :fisheye
                         :camera-pos pos))
 


(defn zoom-in-on-tap! [manager
                       current-state
                       animation-observable
                       animation-signaller]
  (let [taps (tap-observable manager (:svg @current-state))]
    (.subscribe
      taps
      #(if (= (:projection @current-state) :zoom-out)
         (zoom-in-to-pos! current-state
                          (zoom-out->world-pos @current-state %)
                          animation-signaller)))))

;; Exported function to do magic


    (.subscribe
      pinch-ins
      #(if (= (:projection @current-state) :fisheye)
         (set-projection! current-state :zoom-out)))
    (.subscribe
      pinch-outs
      #(if (= (:projection @current-state) :zoom-out)
         (zoom-in-to-pos! current-state
                          (zoom-out->world-pos @current-state (:center %)))))))

;; Gestures - tap

