     @deleteMessages(linter)
 
   getActiveEditorLinter: ->
-    @getEditorLinter atom.workspace.getActiveTextEditor()
+    return @editors.ofActiveTextEditor()
 
   getEditorLinter: (editor) ->
-    @editorLinters.get editor
+    return @editors.ofTextEditor(editor)
 
   eachEditorLinter: (callback) ->
-    @editorLinters.forEach(callback)
+    @editors.editorLinters.forEach(callback)
 
   observeEditorLinters: (callback) ->
     @eachEditorLinter callback
     @emitter.on 'observe-editor-linters', callback
 
   createEditorLinter: (editor) ->
-    editorLinter = new EditorLinter(editor)
-    @editorLinters.set editor, editorLinter
+    editorLinter = @editors.create(editor)
     @emitter.emit 'observe-editor-linters', editorLinter
     editorLinter.onShouldUpdateBubble =>
       @views.renderBubble()

      @linters.lint({onChange, editorLinter})
    editorLinter.onDidDestroy =>
      editorLinter.deactivate()
      @editorLinters.delete(editor)
      @messages.deleteEditorMessages(editor)

  deactivate: ->
    @subscriptions.dispose()
    @eachEditorLinter (linter) ->
      linter.deactivate()
    @views.destroy()
    @linters.deactivate()
    @commands.destroy()
    @messages.deactivate()

    # Private Stuff
    @subscriptions = new CompositeDisposable
    @emitter = new Emitter
    @linters = new (require('./linter-registry'))()
    @editors = new (require('./editor-registry'))()
    @messages = new (require('./messages'))()
    @views = new LinterViews(this)
    @commands = new Commands(this)
