     (.add manager (js/Hammer.Pan.))
     (-> manager (.add (js/Hammer.Swipe.))
         (.recognizeWith (.get manager "pan")))
+    (-> manager (.add (js/Hammer.Pinch.))
+        (.recognizeWith (.get manager "pan")))
     manager))
 
 (defn gesture-observable [manager svg gesture]

            (.generateWithRelativeTime rx-observable
              {:dx (* update-interval-ms (or vx 0)), :dy (* update-interval-ms (or vy 0))}
              (fn [d] 
                (> (dist-sq (:dx d) (:dy d)) 10))
              (fn [d] (let [[x y] (apply dampen (map d [:dx :dy]))] {:dx x :dy y}))
              identity
              (constantly update-interval-ms))))))))


(defn move-camera-on-swipe! [manager current-state]
  (.subscribe
    (swipe-displacements-observable manager (:svg @current-state))
    (fn [d] 
      (let [{:keys [dx dy]} d] (move-camera! current-state dx dy)))))

;; Exported function to do magic


(def world-height 800)
(def update-interval-ms 15)
(def swipe-damping-factor 1)
(def min-slide-speed-sq 16)

;; SVG setup

