                  (message "[Intero] -> %s" cmd))
                (process-send-string (intero-process worker)
                                     (concat cmd "\n")))
-      (error "Intero process is not running. Run M-x intero-restart to start it."))))
+      (error "Intero process is not running: run M-x intero-restart to start it"))))
 
 (defun intero-buffer (worker)
-  "Get the worker buffer for the current directory."
+  "Get the WORKER buffer for the current directory."
   (let ((buffer (intero-get-buffer-create worker)))
     (if (get-buffer-process buffer)
         buffer
       (intero-get-worker-create worker nil (current-buffer)))))
 
 (defun intero-process (worker)
-  "Get the worker process for the current directory."
+  "Get the WORKER process for the current directory."
   (get-buffer-process (intero-buffer worker)))
 
 (defun intero-get-worker-create (worker &optional targets source-buffer)
-  "Start an Intero worker."
+  "Start the given WORKER.
+If provided, use the specified TARGETS and SOURCE-BUFFER."
   (let* ((buffer (intero-get-buffer-create worker)))
     (if (get-buffer-process buffer)
         buffer

      buffer)))

(defun intero-flycheck-buffer ()
  "Run flycheck in the buffer. Restarting in case there was a
problem and flycheck is stuck."
  (flycheck-mode -1)
  (flycheck-mode)
  (flycheck-buffer))

(defun intero-make-options-list (targets no-build no-load)
  "Make the stack ghci options list."
  (append (list "--with-ghc"
                "intero"
                "--docker-run-args=--interactive=true --tty=false"

         nil)))))

(defun intero-start-process-in-buffer (buffer &optional targets source-buffer)
  "Start an Intero worker in BUFFER, for the default or specified TARGETS.
Automatically performs initial actions in SOURCE-BUFFER, if specified."
  (if (buffer-local-value 'intero-give-up buffer)
      buffer
    (let* ((options
