 ;; LOCATE ;;
 ;;;;;;;;;;;;
 
-(defun merlin-locate-pure (ident &optional just-open)
-  "Locate the identifier IDENT at point.
-If JUST-OPEN is non-nil, don't move to the opened buffer."
+(defun merlin-locate-pure (ident)
+  "Locate the identifier IDENT at point."
   (merlin-sync-to-point)
   (let* ((r (merlin-send-command 
-             (list 'locate ident 'at (merlin-unmake-point (point))))))
+             (list 'locate (substring-no-properties ident) 
+                   'at (merlin-unmake-point (point))))))
     (if (and r (listp r))
-        (if just-open
-            (save-excursion
-              (save-selected-window
-                (merlin-goto-file-and-point r just-open)
-                (merlin-highlight (bounds-of-thing-at-point 'ocaml-atom) 'merlin-type-face)))
-          (progn
-            (merlin-goto-file-and-point r)
-            (push (cons (buffer-name) (point)) merlin-position-stack)
-            (message "Use %s to go back."
-                     (substitute-command-keys "\\[merlin-pop-stack]"))))
-      (message "%s not found." ident))))
+        (merlin-goto-file-and-point r)
+      (message "%S not found." ident))))
 
 (defun merlin-locate ()
   "Locate the identifier under point"
   (interactive)
-  (merlin-locate-pure (merlin-thing-at-point 'ocaml-atom)))
+  (merlin-locate-pure (thing-at-point 'ocaml-atom)))
 
 ;; I don't like it beginning by "ac" but
 ;; it is the only way I found to get it working (otherwise the completion

      (forward-line (1- line))
      (move-to-column col))))

(defun merlin-goto-file-and-point (data &optional same-buffer-force)
  "Go to the file and position indicated by DATA which is an assoc list containing fields file, line and col.
If SAME-BUFFER-FORCE is non-nil, create a new window even if it is the same buffer."
  (if (> (length (cdr (assoc 'file data))) 0)
      (find-file-other-window (cdr (assoc 'file data)))
    (when same-buffer-force
        (find-file-other-window buffer-file-name)))
  (merlin-goto-point (cdr (assoc 'pos data))))

(defun merlin-make-point (data)
  "Transform DATA (a couple line / col) into a point."

(defun merlin-type-expression (exp callback-if-success &optional callback-if-exn)
  "Get the type of EXP inside the local context."
  (if exp (merlin-send-command-async
           (list 'type 'expression (substring-no-properties exp)
                 'at (merlin-unmake-point (point)))
           callback-if-success callback-if-exn)))

(defun merlin-type-display (bounds type &optional quiet)
