functor (Types : sig type d_t type c_t end->
  sig
    type group_dsc = t
    type s_t
    type d_t = Types.d_t
    type c_t = Types.c_t
    val init : d_t Lazy.t Lazy.t -> c_t Lazy.t Lazy.t -> s_t Lazy.t
    type dsc = s_t * d_t * c_t
    type msg = group_dsc Request_types.Group_to_application.message
    type req = group_dsc Request_types.Group_to_application.send_request
    module Make :
      functor
        (ToChannel : sig
                       type to_chan = dsc
                       type send_req = req
                       val send_request : to_chan -> send_req -> unit
                     end->
        sig
          type src = ToChannel.to_chan
          type req = ToChannel.send_req
          type m = msg
          val start : src -> unit
          val retrieve_message : src -> req -> m
        end
  end