sig
  val add : 'a Type.t -> 'a -> string -> unit
  exception Name_already_exists of string
  val add_once : 'a Type.t -> 'a -> string -> unit
end