     (move-camera-on-arrow-keys! current-state animation-observable)
     (move-camera-on-pan! gesture-manager current-state animation-observable)
     (move-camera-on-swipe! gesture-manager current-state animation-observable)
-    (switch-zoom-on-spacebar!
-      current-state animation-observable animation-signaller)
-    (zoom-on-pinch!
-      gesture-manager current-state animation-observable animation-signaller)
-    (zoom-in-on-tap!
-      gesture-manager current-state animation-observable animation-signaller)))
+    (switch-zoom-on-spacebar! current-state animation-observable)
+    (zoom-on-pinch! gesture-manager current-state animation-observable)
+    (zoom-in-on-tap! gesture-manager current-state animation-observable)
+    (focus-node-on-tap! current-state node-tap-observable animation-observable)))

        width (.-clientWidth element)
        height (.-clientHeight element)
        svg (setup-svg! selector width height)
        current-state (atom (initial-state svg width height))
        gesture-manager (hammer-manager svg)
        [animation-observable
         animation-signaller] (animation-observable-and-signaller)]
    (sync-graph! @current-state)
    (load-graph "miserables.json"
                (fn [graph]

    (.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

