       (cons `(cons (quote ,(caar fields)) ,(cdar fields))
             (psl-make-object (cdr fields))))))
 
-;;; Small point library
-
-(defun point2 (&optional line col)
-  "Return the current 2D point position."
-  (cons (or line (line-number-at-pos)) (or col (current-column))))
-
-(defun point2< (p1 p2)
-  "Return t if P1 occurs before P2."
-  (or (< (car p1) (car p2))
-      (and (= (car p1) (car p2)) (< (cdr p1) (cdr p2)))))
-
-(defun point2> (p1 p2)
-  "Return t if P1 occurs after P2."
-  (or (> (car p1) (car p2))
-      (and (= (car p1) (car p2)) (> (cdr p1) (cdr p2)))))
-
-(defalias 'point2-line 'car)
-(defalias 'point2-col 'cdr)
-
 ;;; Parser functions
 
-(defvar mpd-best (point2 0 0)
+(defvar mpd-best 0
   "The furthest most point that parsing reached. This information
 can be used to determine where parsing failed.")
 
-(defvar mpd-start (point2 0 0)
+(defvar mpd-start 0
   "Position of point in original source buffer. The purpose is
 for auto-indentation.")
 

(defun psl-compile-to-elisp ()
  "Compile the current buffer into an Emacs Lisp s-expression."
  (let ((buffer (current-buffer)))
    (setq mpd-start (point2 nil 0))
    (setq mpd-point-stack ())
    (with-temp-buffer
      (insert-buffer-substring buffer) ; lose the text properties

            sexp
          (error (format "%s:%d:%d: Encountered error while parsing"
                         (buffer-name buffer)
                         (line-number-at-pos mpd-best))))))))

(defun psl-eval-wrapper (sexp)
  "Evaluate a compiled ParselTongue program inside a wrapper that
