sig type 'a t type ('a, 'b) reagent = ('a, 'b) R.t val create : ?name:string -> unit -> 'a t val exchange : 'a t -> ('a, 'a) reagent end