diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-08-29 v5.0.1.2
+        * Merge #345, Try fixing duplicate errors
+        * Merge #344, elisp: Use advice to check syntax on save-buffer
+        * Merge #341, support `browse -d` in ghc-modi
+        * Merge #352, elisp: Fix C-u accidentally getting turned into a
+          prefix command
+
 2014-08-24 v5.0.1.1
         * Fix CaseSplitting faliure when using "fancy types" (see #336)
         * Print error information in "spec" test suite when using `extract`
diff --git a/elisp/ghc-check.el b/elisp/ghc-check.el
--- a/elisp/ghc-check.el
+++ b/elisp/ghc-check.el
@@ -367,7 +367,7 @@
 (defun ghc-check-insert-from-warning ()
   (interactive)
   (let ((ret t))
-    (dolist (data (mapcar (lambda (ovl) (overlay-get ovl 'ghc-msg)) (ghc-check-overlay-at (point))) ret)
+    (dolist (data (delete-dups (mapcar (lambda (ovl) (overlay-get ovl 'ghc-msg)) (ghc-check-overlay-at (point)))) ret)
       (save-excursion
 	(cond
 	 ((string-match "Inferred type: \\|no type signature:" data)
diff --git a/elisp/ghc.el b/elisp/ghc.el
--- a/elisp/ghc.el
+++ b/elisp/ghc.el
@@ -28,7 +28,7 @@
 	       (< emacs-minor-version minor)))
       (error "ghc-mod requires at least Emacs %d.%d" major minor)))
 
-(defconst ghc-version "5.0.0")
+(defconst ghc-version "5.0.1.2")
 
 ;; (eval-when-compile
 ;;  (require 'haskell-mode))
@@ -64,7 +64,6 @@
 (defvar ghc-sort-key        "\es")
 (defvar ghc-type-key        "\C-c\C-t")
 (defvar ghc-info-key        "\C-c\C-i")
-(defvar ghc-check-key       "\C-x\C-s")
 (defvar ghc-toggle-key      "\C-c\C-c")
 (defvar ghc-jump-key        "\C-c\C-j")
 (defvar ghc-module-key      "\C-c\C-m")
@@ -74,7 +73,6 @@
 (defvar ghc-shallower-key   "\C-c<")
 (defvar ghc-deeper-key      "\C-c>")
 ;(defvar ghc-case-split-key  "\C-c\C-s")
-(defvar ghc-initial-sig-key "\C-u\et")
 (defvar ghc-refine-key      "\C-c\C-f")
 (defvar ghc-auto-key        "\C-c\C-a")
 (defvar ghc-prev-hole-key   "\C-c\ep")
@@ -101,9 +99,8 @@
     (define-key haskell-mode-map ghc-previous-key    'ghc-goto-prev-error)
     (define-key haskell-mode-map ghc-next-key        'ghc-goto-next-error)
     (define-key haskell-mode-map ghc-help-key        'ghc-display-errors)
-    (define-key haskell-mode-map ghc-insert-key      'ghc-insert-template)
+    (define-key haskell-mode-map ghc-insert-key      'ghc-insert-template-or-signature)
     (define-key haskell-mode-map ghc-sort-key        'ghc-sort-lines)
-    (define-key haskell-mode-map ghc-check-key       'ghc-save-buffer)
     (define-key haskell-mode-map ghc-toggle-key      'ghc-toggle-check-command)
     (define-key haskell-mode-map ghc-jump-key        'ghc-jump-file)
     (define-key haskell-mode-map ghc-module-key      'ghc-insert-module)
@@ -112,13 +109,15 @@
     (define-key haskell-mode-map ghc-shallower-key   'ghc-make-indent-shallower)
     (define-key haskell-mode-map ghc-deeper-key      'ghc-make-indent-deeper)
     ;(define-key haskell-mode-map ghc-case-split-key  'ghc-case-split)
-    (define-key haskell-mode-map ghc-initial-sig-key 'ghc-initial-code-from-signature)
     (define-key haskell-mode-map ghc-refine-key      'ghc-refine)
     (define-key haskell-mode-map ghc-auto-key        'ghc-auto)
     (define-key haskell-mode-map ghc-prev-hole-key   'ghc-goto-prev-hole)
     (define-key haskell-mode-map ghc-next-hole-key   'ghc-goto-next-hole)
     (ghc-comp-init)
-    (setq ghc-initialized t))
+    (setq ghc-initialized t)
+    (defadvice save-buffer (after ghc-check-syntax-on-save activate)
+      "Check syntax with GHC when a haskell-mode buffer is saved."
+      (when (eq 'haskell-mode major-mode) (ghc-check-syntax))))
   (ghc-import-module)
   (ghc-check-syntax))
 
@@ -151,5 +150,11 @@
     (insert (format "\t%s\n" ghc-ver))
     (insert "\nEnvironment variables:\n")
     (insert (format "\tPATH=%s\n" path))))
+
+(defun ghc-insert-template-or-signature (&optional flag)
+  (interactive "P")
+  (if flag
+      (ghc-initial-code-from-signature)
+    (ghc-insert-template)))
 
 (provide 'ghc)
diff --git a/ghc-mod.cabal b/ghc-mod.cabal
--- a/ghc-mod.cabal
+++ b/ghc-mod.cabal
@@ -1,5 +1,5 @@
 Name:                   ghc-mod
-Version:                5.0.1.1
+Version:                5.0.1.2
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
                         Daniel Gröber <dxld@darkboxed.org>
                         Alejandro Serrano <trupill@gmail.com>
diff --git a/src/GHCModi.hs b/src/GHCModi.hs
--- a/src/GHCModi.hs
+++ b/src/GHCModi.hs
@@ -316,5 +316,11 @@
          -> ModuleString
          -> GhcModT m (String, Bool, Set FilePath)
 browseIt set mdl = do
-    ret <- browse mdl
+    let (det,rest') = break (== ' ') mdl
+        rest = dropWhile (== ' ') rest'
+    ret <- if det == "-d"
+               then withOptions setDetailed (browse rest)
+               else browse mdl
     return (ret, True, set)
+  where
+    setDetailed opt = opt { detailed = True } 
