       :init-continuous-focus (core isContinuousFocusEnabled)
       :init-width (core getImageWidth)
       :init-height (core getImageHeight)
+      :init-shutter-state (when-not (empty? (core getShutterDevice)) (core getShutterOpen))
       :binning (core getProperty (core getCameraDevice) "Binning")
       :bit-depth (core getImageBitDepth)
       :pixel-size-um (core getPixelSizeUm)

  (with-core-setting [getAutoShutter setAutoShutter false]
    (let [shutter (core getShutterDevice)]
      (when open-before
        (device-best-effort shutter
          (core setShutterOpen true)))
      (wait-for-pending-devices)
      (device-best-effort (core getCameraDevice) (core snapImage))
      (swap! state assoc :last-image-time (elapsed-time @state))
      (when close-after
        (device-best-effort shutter
          (core setShutterOpen false))))))

(defn load-property-sequences [property-sequences]
  (let [new-seq (not= property-sequences @active-property-sequences)]

    (let [xy (.getXYStagePosition gui)]
      [(.x xy) (.y xy)])))

(defn set-shutter-open [open?]
  (let [shutter (core getShutterDevice)]
    (device-best-effort shutter
      (when (not= open? (get-in @state [:shutter-states shutter]))
        (core setShutterOpen open?)
        (swap! state assoc-in [:shutter-states shutter] open?)))))

(defn set-z-stage-position [stage pos]
  (when (and (@state :init-continuous-focus)
             (not (core isContinuousFocusDrive stage))
