functor (P : Problem->
  sig
    type init = P.init
    type input = P.input
    type output = P.output
    val client : JoinHelper.configuration -> unit
    val server :
      JoinHelper.configuration ->
      init -> ('a, input) JoinPool.Simple.enum -> output -> output
  end