sig type 'a t val observe : ?period:int -> string -> 'a -> 'a end