type 'a t
val init : 'a option -> 'a t
val signal : 'a t -> 'a -> unit
val wait : 'a t -> 'a
val get : 'a t -> 'a option
val look : 'a t -> 'a option