   lines = lines.map (line) -> line.trim()
   lines.join('\n').trim()
 
+listen = (element, eventName, selector, handler) ->
+  innerHandler = (event) ->
+    if selector
+      currentTarget = event.target
+      loop
+        if currentTarget.matches and currentTarget.matches(selector)
+          handler({currentTarget: currentTarget, preventDefault: -> event.preventDefault()})
+
+        break if currentTarget is element
+        currentTarget = currentTarget.parentNode
+
+  element.addEventListener(eventName, innerHandler)
+
 module.exports =
-class AtomReporter extends View
-  @content: ->
-    @div class: 'spec-reporter', =>
-      @div class: 'padded pull-right', =>
-        @button outlet: 'reloadButton', class: 'btn btn-small reload-button', 'Reload Specs'
-      @div outlet: 'coreArea', class: 'symbol-area', =>
-        @div outlet: 'coreHeader', class: 'symbol-header'
-        @ul outlet: 'coreSummary', class: 'symbol-summary list-unstyled'
-      @div outlet: 'bundledArea', class: 'symbol-area', =>
-        @div outlet: 'bundledHeader', class: 'symbol-header'
-        @ul outlet: 'bundledSummary', class: 'symbol-summary list-unstyled'
-      @div outlet: 'userArea', class: 'symbol-area', =>
-        @div outlet: 'userHeader', class: 'symbol-header'
-        @ul outlet: 'userSummary', class: 'symbol-summary list-unstyled'
-      @div outlet: "status", class: 'status alert alert-info', =>
-        @div outlet: "time", class: 'time'
-        @div outlet: "specCount", class: 'spec-count'
-        @div outlet: "message", class: 'message'
-      @div outlet: "results", class: 'results'
-
-      @div outlet: "deprecations", class: 'status alert alert-warning', style: 'display: none', =>
-        @span outlet: 'deprecationStatus', '0 deprecations'
-        @div class: 'deprecation-toggle'
-      @div outlet: 'deprecationList', class: 'deprecation-list'
+class AtomReporter
+
+  constructor: ->
+    @element = document.createElement('div')
+    @element.innerHTML = """
+      <div class="spec-reporter">
+        <div class="padded pull-right">
+          <button outlet="reloadButton" class="btn btn-small reload-button">Reload Specs</button>
+        </div>
+        <div outlet="coreArea" class="symbol-area">
+          <div outlet="coreHeader" class="symbol-header"></div>
+          <ul outlet="coreSummary"class="symbol-summary list-unstyled"></ul>
+        </div>
+        <div outlet="bundledArea" class="symbol-area">
+          <div outlet="bundledHeader" class="symbol-header"></div>
+          <ul outlet="bundledSummary"class="symbol-summary list-unstyled"></ul>
+        </div>
+        <div outlet="userArea" class="symbol-area">
+          <div outlet="userHeader" class="symbol-header"></div>
+          <ul outlet="userSummary"class="symbol-summary list-unstyled"></ul>
+        </div>
+        <div outlet="status" class="status alert alert-info">
+          <div outlet="time" class="time"></div>
+          <div outlet="specCount" class="spec-count"></div>
+          <div outlet="message" class="message"></div>
+        </div>
+        <div outlet="results" class="results"></div>
+        <div outlet="deprecations" class="status alert alert-warning" style="display: none">
+          <span outlet="deprecationStatus">0 deprecations</span>
+          <div class="deprecation-toggle"></div>
+        </div>
+        <div outlet="deprecationList" class="deprecation-list"></div>
+      </div>
+    """
+
+    for element in @element.querySelectorAll('[outlet]')
+      this[element.getAttribute('outlet')] = element
 
   startedAt: null
   runningSpecCount: 0

    specs = runner.specs()
    @totalSpecCount = specs.length
    @addSpecs(specs)
    $(document.body).append this

    @on 'click', '.stack-trace', ->
      $(this).toggleClass('expanded')

    @reloadButton.on 'click', -> require('ipc').send('call-window-method', 'restart')

  reportRunnerResults: (runner) ->
    @updateSpecCounts()
    @status.addClass('alert-success').removeClass('alert-info') if @failedCount is 0
    if @failedCount is 1
      @message.text "#{@failedCount} failure"
    else
      @message.text "#{@failedCount} failures"

  reportSuiteResults: (suite) ->


path = require 'path'
_ = require 'underscore-plus'
grim = require 'grim'
marked = require 'marked'

