            :output (get-buffer-create "*Spoken Math*")
            :buffer comint
            :process (get-buffer-process comint)))
-    (with-current-buffer comint
-      ;;; dont do this, it'll hose emacs 
-      ;(add-hook 'comint-preoutput-filter-functions #'emacspeak-maths-comint-filter)
-      )
-   (process-send-string
-   (emacspeak-maths-process emacspeak-maths)
-   emacspeak-maths--init)))
+    (set-process-filter
+     (emacspeak-maths-process emacspeak-maths)
+     #'emacspeak-maths-process-filter)
+    (process-send-string
+     (emacspeak-maths-process emacspeak-maths)
+     emacspeak-maths--init)))
 
 ;;}}}
 (provide 'emacspeak-maths)

             (start (point)))
          (condition-case nil
              (while (not (eobp))
;;; parse here
                (setq result (emacspeak-maths-parse-output))
                (setf (emacspeak-maths-results emacspeak-maths)
                      (append (emacspeak-maths-results emacspeak-maths) result))
                (skip-syntax-forward " >")
                (delete-region start (point))
                (setq start (point)))


;;}}}
;;{{{ Setup:

(defvar emacspeak-maths--init
  (concat
   "var mjx = require('mathjax-node');"
   "var sre = require('speech-rule-engine');"
   "sre.setupEngine({markup: 'acss'});"
   "var runWithCounter = function(counter, callback, args) {"
   "  var result = callback.apply(sre, args);"
   "  console.log('BEGINOUTPUT' + counter + ': ' + result + ' :ENDOUTPUT');"
   "};\n")
  "Initialization code we send the node process on startup.")

(defun emacspeak-maths-start ()
