let create (config: config) (state: state) (context: context) : log =

  let extended =
    Config.print_derivation_context_unifier config
  in

  let logs =
    []
  in

  let logs =
    if Config.print_derivation_online config then
      (new pipe (new print ~extended:extended config state context stdout) state :> log) :: logs
    else
      logs
  in

  let protocol_set =
    new log_set logs
  in
    (protocol_set :> log)