           #(when z-drive
              (let [z (compute-z-position event)]
                (set-stage-position z-drive z)))
-          (event :runnables)
+          (doseq [runnable (event :runnables)]
+            (.run runnable))
           #(do (wait-for-pending-devices)
                (expose event)
                (collect event out-queue)

                                  elapsed-time-ms (- (jvm-time-ms) start-time)
                                  img (annotate-image raw-image event state elapsed-time-ms)
                                  this-time (System/currentTimeMillis)
                                  dt (- 33 (- this-time last-time))]                    
                              (if first-image (reset-snap-window img)  )                         
                                 (Thread/sleep (max 0 dt))  
                              (if (.windowClosed @snap-window) 
                                (edt (.enableLiveMode gui false))  
                                (show-image @snap-window img first-image)  )
                              (recur this-time false))))
                        (core stopSequenceAcquisition))
                "Live mode (clojure)")))
    (reset! live-mode-running false)  ))




;; java interop


        super-channels (all-super-channels simple-channels (get-camera-channel-names))]
     (JSONObject. {
      "BitDepth" (core getImageBitDepth)
      "Channels" (count super-channels)
      "ChNames" (JSONArray. (map :name super-channels))
      "ChColors" (JSONArray. (map #(.getRGB (:color %)) super-channels))         
