                  (let [click-channel (om/get-state owner :click-channel)]
                    (go (loop []
                          (let [new-interval-millis (<! click-channel)]
-                           (start-interval new-interval-millis)
+                           (if (false? new-interval-millis)
+                             (stop-interval)
+                             (start-interval new-interval-millis))
                            (recur))))))
       om/IWillUnmount
       (will-unmount [_] (om/set-state! owner :mounted false))

(defn clock [bpm owner]
  (letfn [(start-interval [millis] 
            (om/update! bpm :interval millis)
            (om/update! bpm :next-beat nil))]
    (reify
      om/IInitState
      (init-state [_] {:mounted false})

                                              (let [m (millis)]
                                                (om/set-state! owner :previous-click m)
                                                (when-not (nil? previous-click)
                                                  (put! click-channel (if (:should-stop app) false (- m previous-click))))))}
                              (if (:should-stop app) "stop" "tap tempo")))))

(defn dots [meter owner]
