   ([type]
    (create-board type {}))
   ([type config]
-   (impl/instantiate type config)))
+   (Board. (atom {}) (impl/instantiate type config))))
 
 ;; What follows then are a suite of simple tools for dealing with the boards.
 

  [f pin & args]
  (apply f (:board pin) (:pin-n pin) args))



;; pins, and the current mode settings for those pins.


(defrecord Board [state-atom impl-board])

(declare board? board-dispatch board-apply chan?)

;; We start by creating board objects with the `create-board` function, which returns a board object based
;; on the specified `board-type`, which points towards the implementation key for the device being used (e.g.
