     (let [state-atom   (atom (make-initial-state metro steps instruments))
           play-btn     (button :text "play")
           bpm-spinner  (spinner :model (spinner-model (metro :bpm) :from 20 :to 300 :by 1)
-                                 :maximum-size [60 :by 100])
+                                :maximum-size [60 :by 100])
+          step-lbls    (vec (for [i (range steps)] (label :size [25 :by 25] 
+                                                          :background "#22F"
+                                                          :opaque? false
+                                                          :border (line-border :color "#22A"))))
           control-pane (toolbar :floatable? false 
                                 :items [play-btn
                                         :separator

                                        [:fill-h 5]
                                        "bpm"])
          seq-pane     (mig-panel :constraints [(str "wrap " (inc steps)) "" ""]
                                  :items (mapcat #(step-row % steps state-atom) instruments))
          f (frame :title    "Sequencer"
                   :content  (border-panel :north control-pane :center seq-pane)
                   :on-close :dispose)]
      (bind/bind bpm-spinner (bind/b-do [v] (metro :bpm v)))
      (listen play-btn :action
              (fn [e]
                (let [playing? (:playing? (swap! state-atom toggle-playing))] 

      (let [metro (:metronome state)
            index (mod beat steps)
            next-beat (inc beat)]
        (swap! state-atom assoc-in [:step] index)
        (doseq [inst instruments]
          (when (nth (get-in state [:rows (:name inst)]) index)
            (at (metro beat) (inst))))
