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

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