functor (Pre : PREFIX->
  functor (Obs : OBSERVER->
    functor (Img : IMG->
      functor (State : sig type obs = Obs.t val add_wl : obs -> unit end->
        sig
          type obs = Obs.t
          type t
          val create : unit -> t
          val compare : t -> t -> int
          val total_ord : t -> t -> int
          val add_alias : t -> t -> unit
          val do_normalize : t -> unit
          val add_observer : obs -> t -> unit
          val remove_observer : obs -> t -> unit
          val string_of : t -> string
          val reset : unit -> unit
          val get_all_ts : unit -> t list
          type img = Img.t
          val add_img : img -> t -> unit
          val get_img : t -> img option
        end