sig
  val all : (int * (string * chooser)) list ref
  val register : string -> int -> chooser -> unit
  val of_name : string -> chooser
  val choice : (int, unit -> unit) Hashtbl.t -> string * chooser
  val preset : (string * string) list -> (string * string) list
end