     @constructor.removeFromArray(@constructor.jobs, (j) -> j.args.id is @id)
 
     # Create an job that contains everything we'll need to do the work.
-    job = {
-      task: @task,
-      callbacks: [onDidSpellCheck],
-      args: {
-        id: @id,
-        projectPath,
-        relativePath,
+    job =
+      manager: @manager
+      callbacks: [onDidSpellCheck]
+      args:
+        id: @id
+        projectPath: projectPath
+        relativePath: relativePath
         text: buffer.getText()
-      }
-    }
 
     # If we already have a job for this work piggy-back on it with our callback.
     return if @constructor.piggybackExistingJob(job)

  @handler: null
  @jobs: []

  constructor: (@task) ->
    @id = idCounter++

  terminate: ->


  @startNextJob: ->
    job = @jobs[0]
    job.manager.check(job.args, job.args.text).then (results) =>
      @removeFromArray(@jobs, (j) -> j.args.id is job.args.id)
      callback(results.misspellings) for callback in job.callbacks

      @startNextJob() if @jobs.length > 0
