     source: null
     type: null
     messages: []
-    out: []
     final_out: []
     trailing_out: ""
     step: null

        type: "GET"
        success: (data) =>
          @retrieved_output(true)
          ## reset the converter
          @stdoutConverter = CI.terminal.ansiToHtmlConverter("brblue")
          @stderrConverter = CI.terminal.ansiToHtmlConverter("red")
          @append_output(data)

  htmlEscape: (str) =>
    str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')

  append_output: (new_out) =>
    idx = 0
    while idx < new_out.length
      type = new_out[idx].type
      converter = if type == 'err'
                    @stderrConverter
                  else
                    @stdoutConverter
      sequence = (o for o in new_out[idx..] when o.type is type)
      @final_out.push(converter.append(@htmlEscape((o.message for o in sequence).join "")))
      idx += sequence.length
    @trailing_out(@stdoutConverter.get_trailing() + @stderrConverter.get_trailing())

  report_build: () =>
