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