diff --git a/.authorspellings b/.authorspellings
deleted file mode 100644
index 5a328a84..00000000
--- a/.authorspellings
+++ /dev/null
@@ -1,80 +0,0 @@
-Alejandro Serrano Mena <trupill@gmail.com>, trupill@gmail.com
-Alexandre Buisse <buisse@cs.chalmers.se>, buisse@cs.chalmers.se
-Audun Skaugen <audun@skaugen.name>, Audun Skaugen <audunskaugen@gmail.com>, audunskaugen@gmail.com
-Bas van Dijk <v.dijk.bas@gmail.com>, v.dijk.bas@gmail.com
-Ben Boeckel <mathstuf@gmail.com>, mathstuf@gmail.com
-Brandon S Allbery KF8NH <allbery.b@gmail.com>, allbery@ece.cmu.edu
-Brent Yorgey <byorgey@cis.upenn.edu>, Brent Yorgey <byorgey@gmail.com>
-Carlos Lopez-Camey <c.lopez@kmels.net>, c.lopez@kmels.net
-Carsten Otto <xmonad@c-otto.de>, xmonad@c-otto.de
-Christian Dietrich <stettberger@dokucode.de>, stettberger@dokucode.de
-Daniel Neri <daniel.neri@sigicom.com>, Daniel Neri <daniel.neri@sigicom.se>
-Daniel Schoepe <daniel.schoepe@googlemail.com>, Daniel Schoepe <daniel.schoepe@gmail.com>, Daniel Schoepe <asgaroth_@gmx.de>
-Daniel Wagner <daniel@wagner-home.com>, daniel@wagner-home.com
-Dave Harrison <dave@nullcube.com>, dave@nullcube.com
-David Glasser <glasser@mit.edu>, glasser@mit.edu
-David McLean <gopsychonauts@gmail.com>, gopsychonauts@gmail.com
-Dominik Bruhn <dominik@dbruhn.de>, dominik@dbruhn.de
-Don Stewart <dons00@gmail.com>, Don Stewart <dons@cse.unsw.edu.au>, Don Stewart <dons@galois.com>
-Gwern Branwen <gwern0@gmail.com>, gwern0@gmail.com
-Henrique Abreu <hgabreu@gmail.com>, `Henrique Abreu <hgabreu@gmail.com>'
-Ilya Portnov <portnov84@rambler.ru>, portnov84@rambler.ru
-intrigeri <intrigeri@boum.org>, intrigeri@boum.org
-Ivan Miljenovic <Ivan.Miljenovic@gmail.com>, Ivan.Miljenovic@gmail.com
-Jan-David Quesel <quesel@informatik.uni-oldenburg.de>, quesel@informatik.uni-oldenburg.de
-Jeremy Apthorp <nornagon@gmail.com>, nornagon@gmail.com
-Joachim Breitner <mail@joachim-breitner.de>, mail@joachim-breitner.de
-Joachim Fasting <joachim.fasting@gmail.com>, joachim.fasting@gmail.com
-Joel Suovaniemi <joel.suovaniemi@iki.fi>, joel.suovaniemi@iki.fi
-Joe Thornber <joe.thornber@gmail.com>, joe.thornber@gmail.com
-Johann Giwer <johanngiwer@web.de>, johanngiwer@web.de  
-Jussi Maki <joamaki@gmail.com>, joamaki@gmail.com
-kedals0 <kedals0@gmail.com>, kedals0@gmail.com
-Konstantin Sobolev <konstantin.sobolev@gmail.com>, konstantin.sobolev@gmail.com
-Lanny Ripple <lan3ny@gmail.com>, lan3ny@gmail.com
-Leonardo Serra <leoserra@minaslivre.org>, leoserra@minaslivre.org
-lithis <xmonad@selg.hethrael.org>, xmonad@selg.hethrael.org, xmonad@s001.hethrael.com
-Luis Cabellos <zhen.sydow@gmail.com>, zhen.sydow@gmail.com
-Lukas Mai <l.mai@web.de>, l.mai@web.de
-Mario Pastorelli <pastorelli.mario@gmail.com>, pastorelli.mario@gmail.com
-Mathias Stearn <redbeard0531@gmail.com>, redbeard0531@gmail.com
-Matt Brown <deadguysfrom@gmail.com>, deadguysfrom@gmail.com
-Nelson Elhage <nelhage@mit.edu>, nelhage@mit.edu
-Nicolas Dudebout <nicolas.dudebout@gatech.edu>, nicolas.dudebout@gatech.edu
-Nicolas Pouillard <nicolas.pouillard@gmail.com>, nicolas.pouillard@gmail.com
-Nils Schweinsberg <mail@n-sch.de>, mail@n-sch.de
-Norbert Zeh <nzeh@cs.dal.ca>, nzeh@cs.dal.ca
-Quentin Moser <moserq@gmail.com>, moserq@gmail.com        
-Quentin Moser <quentin.moser@unifr.ch>, quentin.moser@unifr.ch
-Rickard Gustafsson <acura@allyourbase.se>, acura@allyourbase.se
-Robert Marlow <bobstopper@bobturf.org>, bobstopper@bobturf.org, robreim@bobturf.org
-Rohan Jain <crodjer@gmail.com>, crodjer@gmail.com
-Sean Escriva <sean.escriva@gmail.com>, sean.escriva@gmail.com
-Spencer Janssen <spencerjanssen@gmail.com>, sjanssen@cse.unl.edu
-Tomohiro Matsuyama <matsuyama3@ariel-networks.com>, matsuyama3@ariel-networks.com
-Tom Rauchenwald <its.sec@gmx.net>, <its.sec@gmx.net>
-Tony Morris <haskell@tmorris.net>, haskell@tmorris.net
-Valery V. Vorotyntsev <valery.vv@gmail.com>, valery.vv@gmail.com
-Will Farrington <wcfarrington@gmail.com>, wcfarrington@gmail.com
-Wirt Wolff <wirtwolff@gmail.com>, wirtwolff@gmail.com
-Yaakov Nemoy <loupgaroublond@gmail.com>, loupgaroublond@gmail.com
-timthelion <tim.thelion@gmail.com>, tim.thelion@gmail.com
-seanmce33 <seanmce33@gmail.com>, seanmce33@gmail.com
-rupa <rupa@lrrr.us>, rupa@lrrr.us
-perlkat <perlkat@katspace.org>, perlkat@katspace.org
-longpoke <longpoke@gmail.com>, longpoke@gmail.com
-cardboard42 <cardboard42@gmail.com>, cardboard42@gmail.com
-daedalusinfinity <daedalusinfinity@gmail.com>, daedalusinfinity@gmail.com
-Jens Petersen <juhp@community.haskell.org>, Jens Petersen <petersen@haskell.org>
-
-Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>, Neil Mitchell
-Nick Burlett <nickburlett@mac.com>, nickburlett@mac.com
-Sam Hughes   <hughes@rpi.edu>, hughes@rpi.edu
-Shae Erisson <shae@ScannedInAvian.com>, shae@ScannedInAvian.com
-Conrad Irwin <conrad.irwin@gmail.com>, conrad.irwin@gmail.com
-
--- unknown:
--- xmonad-contrib@hexago.nl
--- brian@lorf.org
--- jakob@pipefour.org
-
diff --git a/.mailmap b/.mailmap
new file mode 100644
index 00000000..50a5b1c2
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,101 @@
+Alejandro Serrano Mena <trupill@gmail.com>
+Alexandre Buisse <buisse@cs.chalmers.se>
+Anders Engstrom <ankaan@gmail.com>
+Antoine R. Dumont <eniotna.t@gmail.com>
+Anton Pirogov <anton.pirogov@gmail.com>
+Anton Pirogov <anton.pirogov@gmail.com> anton.pirogov at gmail . com <unknown>
+Arjun Comar <nrujac@gmail.com>
+Audun Skaugen <audun@skaugen.name> <audunskaugen@gmail.com>
+Bas van Dijk <v.dijk.bas@gmail.com>
+Ben Boeckel <mathstuf@gmail.com>
+Ben Weitzman <benweitzman@gmail.com>
+Brandon S Allbery KF8NH <allbery.b@gmail.com>
+Brandon S Allbery KF8NH <allbery.b@gmail.com> <allbery@ece.cmu.edu>
+Brent Yorgey <byorgey@gmail.com> <byorgey@cis.upenn.edu>
+Carlos Lopez-Camey <c.lopez@kmels.net>
+Carsten Otto <xmonad@c-otto.de>
+Christian Dietrich <stettberger@dokucode.de>
+Christian Wills <cwills.dev@gmail.com>
+Daniel Neri <daniel.neri@sigicom.com> <daniel.neri@sigicom.se>
+Daniel Schoepe <daniel.schoepe@googlemail.com> <asgaroth_@gmx.de>
+Daniel Schoepe <daniel.schoepe@googlemail.com> <daniel.schoepe@gmail.com>
+Daniel Wagner <me@dmwit.com> <daniel@wagner-home.com>
+Dave Harrison <dave@nullcube.com>
+David Glasser <glasser@mit.edu>
+David McLean <gopsychonauts@gmail.com>
+Devin Mullins <devin.mullins@gmail.com> <me@twifkak.com>
+Dominik Bruhn <dominik@dbruhn.de>
+Don Stewart <dons00@gmail.com> <dons@cse.unsw.edu.au>
+Don Stewart <dons00@gmail.com> <dons@galois.com>
+Edward Z. Yang <ezyang@cs.stanford.edu>
+Gwern Branwen <gwern@gwern.net>
+Gwern Branwen <gwern@gwern.net> <gwern0@gmail.com>
+Henrique Abreu <hgabreu@gmail.com>
+Ilya Portnov <portnov84@rambler.ru>
+intrigeri <intrigeri@boum.org>
+Ivan Miljenovic <Ivan.Miljenovic@gmail.com>
+Jan-David Quesel <quesel@informatik.uni-oldenburg.de>
+Jens Petersen <juhp@community.haskell.org> <petersen@haskell.org>
+Jeremy Apthorp <nornagon@gmail.com>
+Joachim Breitner <mail@joachim-breitner.de>
+Joachim Fasting <joachim.fasting@gmail.com>
+Joel Suovaniemi <joel.suovaniemi@iki.fi>
+Joe Thornber <joe.thornber@gmail.com>
+Johann Giwer <johanngiwer@web.de>
+Jussi Maki <joamaki@gmail.com>
+Konstantin Sobolev <konstantin.sobolev@gmail.com>
+Lanny Ripple <lan3ny@gmail.com>
+Lei Chen <linxray@gmail.com>
+Leonardo Serra <leoserra@minaslivre.org>
+Luis Cabellos <zhen.sydow@gmail.com>
+Lukas Mai <l.mai@web.de>
+Mario Pastorelli <pastorelli.mario@gmail.com>
+Mathias Stearn <redbeard0531@gmail.com>
+Matt Brown <deadguysfrom@gmail.com>
+Matthew Hague <matthewhague@zoho.com>
+Nathaniel Filardo <nwfilardo@gmail.com>
+Nelson Elhage <nelhage@mit.edu>
+Nicolas Dudebout <nicolas.dudebout@gatech.edu>
+Nicolas Pouillard <nicolas.pouillard@gmail.com>
+Nils Schweinsberg <mail@n-sch.de>
+Norbert Zeh <nzeh@cs.dal.ca>
+Peter Olson <polson2@hawk.iit.edu>
+Quentin Moser <moserq@gmail.com>
+Quentin Moser <quentin.moser@unifr.ch>
+Rickard Gustafsson <acura@allyourbase.se>
+Robert Marlow <bobstopper@bobturf.org>
+Robert Marlow <bobstopper@bobturf.org> <robreim@bobturf.org>
+Rohan Jain <crodjer@gmail.com>
+Sibi Prabakaran <sibi@psibi.in> <psibi2000@gmail.com>
+Sean Escriva <sean.escriva@gmail.com>
+Sean McEligot <seanmce33@gmail.com>
+Spencer Janssen <spencerjanssen@gmail.com> <sjanssen@cse.unl.edu>
+Tomohiro Matsuyama <matsuyama3@ariel-networks.com>
+Tom Rauchenwald <its.sec@gmx.net>
+Tony Morris <haskell@tmorris.net>
+Valery V. Vorotyntsev <valery.vv@gmail.com>
+Will Farrington <wcfarrington@gmail.com>
+Wirt Wolff <wirtwolff@gmail.com>
+Yaakov Nemoy <loupgaroublond@gmail.com>
+
+brian <brian@lorf.org>
+cardboard42 <cardboard42@gmail.com>
+daedalusinfinity <daedalusinfinity@gmail.com>
+hexago.nl <xmonad-contrib@hexago.nl>
+intrigeri <intrigeri@boum.org>
+jakob <jakob@pipefour.org>
+kedals0 <kedals0@gmail.com>
+lithis <xmonad@selg.hethrael.org>
+lithis <xmonad@selg.hethrael.org> <xmonad@s001.hethrael.com>
+longpoke <longpoke@gmail.com>
+md143rbh7f <md143rbh7f@gmail.com>
+perlkat <perlkat@katspace.org>
+rupa <rupa@lrrr.us> <rupa@lrrr.us>
+timthelion <tim.thelion@gmail.com>
+
+# for core only
+Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>, Neil Mitchell
+Nick Burlett <nickburlett@mac.com>
+Sam Hughes   <hughes@rpi.edu>
+Shae Erisson <shae@ScannedInAvian.com>
+Conrad Irwin <conrad.irwin@gmail.com>
diff --git a/.travis.yml b/.travis.yml
index 104e687c..6b918cf8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -31,6 +31,9 @@ before_install:
  - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
 
 install:
+ # build xmonad from HEAD
+ - git clone https://github.com/xmonad/xmonad.git
+
  - cabal --version
  - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
  - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];
@@ -66,6 +69,8 @@ install:
       cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
    fi
 
+ - cabal install xmonad/
+
 # Here starts the actual work to be performed for the package under test;
 # any command which exits with a non-zero exit code causes the build to fail.
 script:
@@ -73,7 +78,8 @@ script:
  - cabal configure --enable-tests --enable-benchmarks -v2  # -v2 provides useful information for debugging
  - cabal build   # this builds all libraries and executables (including tests/benchmarks)
  - cabal test
- - cabal check
+# - cabal check   # complains about -Werror even though it is
+                  # hidden behind a manual flag with default false
  - cabal sdist   # tests that a source-distribution can be generated
 
 # Check that the resulting source distribution can be built & installed.
diff --git a/CHANGES.md b/CHANGES.md
index b2672ebb..b4f809fc 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,13 @@
 # Change Log / Release Notes
 
+## 0.13
+
+### Breaking Changes
+
+  * The type of `completionKey` (of `XPConfig` record) has been
+    changed from `KeySym` to `(KeyMask, KeySym)`. The default value
+    for this is still binded to `Tab` key.
+
 ## 0.12 (December 14, 2015)
 
 ### Breaking Changes
diff --git a/XMonad/Prompt.hs b/XMonad/Prompt.hs
index 6a137c39..dc9ec1f6 100644
--- a/XMonad/Prompt.hs
+++ b/XMonad/Prompt.hs
@@ -4,6 +4,7 @@
 -- |
 -- Module      :  XMonad.Prompt
 -- Copyright   :  (C) 2007 Andrea Rossato, 2015 Evgeny Kurnevsky
+--                    2015 Sibi Prabakaran
 -- License     :  BSD3
 --
 -- Maintainer  :  Spencer Janssen <spencerjanssen@gmail.com>
@@ -144,7 +145,7 @@ data XPConfig =
                                          -- history entries to remember
         , promptKeymap      :: M.Map (KeyMask,KeySym) (XP ())
                                          -- ^ Mapping from key combinations to actions
-        , completionKey     :: KeySym     -- ^ Key that should trigger completion
+        , completionKey     :: (KeyMask, KeySym)     -- ^ Key that should trigger completion
         , changeModeKey     :: KeySym     -- ^ Key to change mode (when the prompt has multiple modes)
         , defaultText       :: String     -- ^ The text by default in the prompt line
         , autoComplete      :: Maybe Int  -- ^ Just x: if only one completion remains, auto-select it,
@@ -253,7 +254,7 @@ instance Default XPConfig where
         , borderColor       = "white"
         , promptBorderWidth = 1
         , promptKeymap      = defaultXPKeymap
-        , completionKey     = xK_Tab
+        , completionKey     = (0,xK_Tab)
         , changeModeKey     = xK_grave
         , position          = Bottom
         , height            = 18
@@ -500,7 +501,7 @@ handle ks@(sym,_) e@(KeyEvent {ev_event_type = t, ev_state = m}) = do
   chgModeKey <- gets $ changeModeKey . config
   c <- getCompletions
   when (length c > 1) $ modify (\s -> s { showComplWin = True })
-  if complKey == sym
+  if complKey == (m,sym)
      then completionHandle c ks e
      else if (sym == chgModeKey) then
            do
@@ -518,7 +519,7 @@ completionHandle c ks@(sym,_) (KeyEvent { ev_event_type = t, ev_state = m }) = d
   complKey <- gets $ completionKey . config
   alwaysHlight <- gets $ alwaysHighlight . config
   case () of
-    () | t == keyPress && sym == complKey ->
+    () | t == keyPress && (m,sym) == complKey ->
           do
             st <- get
             let updateState l = case alwaysHlight of
@@ -534,7 +535,7 @@ completionHandle c ks@(sym,_) (KeyEvent { ev_event_type = t, ev_state = m }) = d
               []  -> updateWindows   >> eventLoop handle
               [x] -> updateState [x] >> getCompletions >>= updateWins
               l   -> updateState l   >> updateWins l
-      | t == keyRelease && sym == complKey -> eventLoop (completionHandle c)
+      | t == keyRelease && (m,sym) == complKey -> eventLoop (completionHandle c)
       | otherwise -> keyPressHandle m ks -- some other key, handle it normally
 -- some other event: go back to main loop
 completionHandle _ k e = handle k e
diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal
index fa588e95..e0b41338 100644
--- a/xmonad-contrib.cabal
+++ b/xmonad-contrib.cabal
@@ -50,23 +50,24 @@ flag use_xft
 
 flag testing
   description: Testing mode
+  manual: True
   default: False
 
 library
-    build-depends: base >= 3 && < 5,
-                    containers,
-                    directory,
-                    extensible-exceptions,
-                    filepath,
-                    old-locale,
-                    old-time,
-                    process,
-                    random,
-                    mtl >= 1 && < 3,
-                    unix,
-                    X11>=1.6.1 && < 1.7,
-                    xmonad>=0.12   && < 0.13,
-                    utf8-string
+    build-depends: base >= 4.5 && < 5,
+                   containers >= 0.5 && < 0.6,
+                   directory,
+                   extensible-exceptions,
+                   filepath,
+                   old-locale,
+                   old-time,
+                   process,
+                   random,
+                   mtl >= 1 && < 3,
+                   unix,
+                   X11>=1.6.1 && < 1.7,
+                   xmonad>=0.12   && < 0.13,
+                   utf8-string
 
     if flag(use_xft)
         build-depends: X11-xft >= 0.2
@@ -81,9 +82,6 @@ library
     if impl(ghc >= 6.12.1)
         ghc-options:    -fno-warn-unused-do-bind
 
-    if impl (ghc == 6.10.1) && arch (x86_64)
-        ghc-options:    -O0
-
     exposed-modules:    XMonad.Doc
                         XMonad.Doc.Configuring
                         XMonad.Doc.Extending