sig
  type elt = architecture_name
  type id = architecture_id
  type t
  val create : unit -> t
  val register : t -> elt -> id
  val search : t -> elt -> id
  val find : t -> id -> elt
  val compare_id : id -> id -> int
  val scribe_id : 'Conduit.conduit -> '-> id -> unit
  val io_id : id Io.literate
  val iter : t -> (id -> elt -> unit) -> unit
  val set_watcher : t -> (id -> elt -> unit) -> unit
end