 
 (defn zoom-in-on-tap! [manager
                        current-state
-                       animation-observable
-                       animation-signaller]
+                       animation-observable]
   (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)))))
+                          (zoom-out->world-pos @current-state %))))))
+
+;; Gestures - tap on node
+
+(defn observable-and-signaller
+  []
+  (let [observers (atom [])
+        observable (.create rx-observable #(swap! observers conj %))
+        signaller (fn [node] (doseq [o @observers] (.onNext o node)))]
+    [observable signaller]))
+
+(defn focus-node-on-tap! [current-state
+                          node-tap-observable
+                          animation-observable]
+  (-> node-tap-observable
+      (suppress-while-animating animation-observable)
+      (.subscribe #(js/alert "FOO"))))
 
 ;; Exported function to do magic
 

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

;; Gestures - tap


            (move-camera! current-state (math-vec dx dy)))))))

(defn switch-zoom-on-spacebar!
  [current-state animation-observable]
  (-> key-up-observable
      (.filter #(= 32 (.-keyCode %)))
      (suppress-while-animating animation-observable)
      (.subscribe #(toggle-projection! current-state))))

;; Gestures

