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