diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 Changes
 =======
 
+Version 0.9.1
+-------------
+
+* Use haskell-src-exts 1.20
+
 Version 0.9.0
 -------------
 
diff --git a/haskell-names.cabal b/haskell-names.cabal
--- a/haskell-names.cabal
+++ b/haskell-names.cabal
@@ -1,5 +1,5 @@
 Name:                   haskell-names
-Version:                0.9.0
+Version:                0.9.1
 License:                BSD3
 Author:                 Philipp Schuster, Roman Cheplyaka, Lennart Augustsson
 Maintainer:             Philipp Schuster
@@ -236,7 +236,7 @@
   Default-Language: Haskell2010
   Build-depends:
       base >= 4 && < 5
-    , haskell-src-exts >= 1.18 && < 1.20
+    , haskell-src-exts >= 1.20 && < 1.21
     , mtl >= 2.2.1 && < 2.3
     , transformers >=0.4.2.0 && < 0.6
     , filepath >= 1.1 && < 1.5
@@ -283,11 +283,11 @@
   Build-depends:
       base >= 4 && < 5
     , haskell-names
-    , haskell-src-exts >= 1.18 && < 1.20
+    , haskell-src-exts >= 1.20 && < 1.21
     , mtl >= 2.2.1 && < 2.3
     , filepath >= 1.1 && <1.5
     , containers >= 0.2 && < 0.6
-    , tasty >= 0.10.1.2 && < 0.12
+    , tasty >= 0.12 && < 0.13
     , tasty-golden >= 2.2.1 && < 2.4
     , filemanip >= 0.3.6.3 && < 0.4
     , pretty-show >= 1.6.1 && < 1.7
diff --git a/src/Language/Haskell/Names/Annotated.hs b/src/Language/Haskell/Names/Annotated.hs
--- a/src/Language/Haskell/Names/Annotated.hs
+++ b/src/Language/Haskell/Names/Annotated.hs
@@ -24,8 +24,6 @@
 import Data.Lens.Light
 import Data.Typeable (
   Typeable, (:~:)(Refl), eqT)
-  -- in GHC 7.8 Data.Typeable exports (:~:). Be careful to avoid the clash.
-import Control.Applicative
 
 
 annotateDecl
diff --git a/src/Language/Haskell/Names/Environment.hs b/src/Language/Haskell/Names/Environment.hs
--- a/src/Language/Haskell/Names/Environment.hs
+++ b/src/Language/Haskell/Names/Environment.hs
@@ -17,11 +17,9 @@
 import Language.Haskell.Names.SyntaxUtils (stringToName,nameToString,dropAnn, annName)
 import qualified Data.ByteString.Lazy as BS (readFile, writeFile, pack)
 import Data.Aeson
-import Data.Monoid
 import Data.Char
 import Data.Typeable
 import Control.Exception
-import Control.Applicative
 import Control.Monad
 import System.FilePath ((</>), (<.>))
 import qualified Data.Map as Map (fromList)
diff --git a/src/Language/Haskell/Names/Exports.hs b/src/Language/Haskell/Names/Exports.hs
--- a/src/Language/Haskell/Names/Exports.hs
+++ b/src/Language/Haskell/Names/Exports.hs
@@ -6,7 +6,6 @@
 
 import qualified Data.Map as Map
 import qualified Data.Set as Set
-import Control.Applicative
 import Control.Monad
 import Control.Monad.Writer
 import Data.Data
diff --git a/src/Language/Haskell/Names/GetBound.hs b/src/Language/Haskell/Names/GetBound.hs
--- a/src/Language/Haskell/Names/GetBound.hs
+++ b/src/Language/Haskell/Names/GetBound.hs
@@ -62,7 +62,7 @@
         PRec _ qn fs -> qNameToName qn : concatMap getFieldBound fs where
           getFieldBound (PFieldPat _ qn' _) = [qNameToName qn']
           getFieldBound (PFieldPun _ qn') = [qNameToName qn']
-          _ = []
+          getFieldBound (PFieldWildcard _) = []
         _ -> []
       ForImp _ _ _ _ n _ -> [n]
       ForExp _ _ _ n _ -> [n]
diff --git a/src/Language/Haskell/Names/Imports.hs b/src/Language/Haskell/Names/Imports.hs
--- a/src/Language/Haskell/Names/Imports.hs
+++ b/src/Language/Haskell/Names/Imports.hs
@@ -9,7 +9,6 @@
 import Data.Monoid
 import Data.Maybe
 import Data.Either
-import Control.Applicative
 
 import Control.Monad.Writer
 import Data.Map as Map (lookup)
diff --git a/src/Language/Haskell/Names/LocalSymbolTable.hs b/src/Language/Haskell/Names/LocalSymbolTable.hs
--- a/src/Language/Haskell/Names/LocalSymbolTable.hs
+++ b/src/Language/Haskell/Names/LocalSymbolTable.hs
@@ -8,7 +8,6 @@
   ) where
 
 import qualified Data.Map as Map
-import Data.Monoid
 import Language.Haskell.Exts
 import Language.Haskell.Names.SyntaxUtils (dropAnn)
 import Language.Haskell.Names.Types
diff --git a/src/Language/Haskell/Names/ModuleSymbols.hs b/src/Language/Haskell/Names/ModuleSymbols.hs
--- a/src/Language/Haskell/Names/ModuleSymbols.hs
+++ b/src/Language/Haskell/Names/ModuleSymbols.hs
@@ -136,7 +136,8 @@
     TyApp _ typ _ -> typeOuterName typ
     TyCon _ qname -> qNameToName qname
     TyParen _ typ -> typeOuterName typ
-    TyInfix _ _ qname _ -> qNameToName qname
+    TyInfix _ _ (PromotedName _ qname) _ -> qNameToName qname
+    TyInfix _ _ (UnpromotedName _ qname) _ -> qNameToName qname
     TyKind _ typ _ -> typeOuterName typ
     TyBang _ _ _ typ -> typeOuterName typ
     _ -> error "illegal data family in data instance"
diff --git a/src/Language/Haskell/Names/Open/Base.hs b/src/Language/Haskell/Names/Open/Base.hs
--- a/src/Language/Haskell/Names/Open/Base.hs
+++ b/src/Language/Haskell/Names/Open/Base.hs
@@ -5,6 +5,7 @@
 -- of how to use this module.
 {-# LANGUAGE RankNTypes, FlexibleInstances, FlexibleContexts, UndecidableInstances, DefaultSignatures, TemplateHaskell, ScopedTypeVariables #-}
 {-# LANGUAGE ImplicitParams, KindSignatures, TypeApplications #-}
+{-# LANGUAGE MonoLocalBinds #-}
 module Language.Haskell.Names.Open.Base where
 
 import qualified Language.Haskell.Names.GlobalSymbolTable as Global
@@ -12,7 +13,6 @@
 import Language.Haskell.Names.GetBound
 import Language.Haskell.Names.RecordWildcards
 import Language.Haskell.Exts
-import Control.Applicative
 import Control.Monad.Identity
 import Data.List
 import Data.Lens.Light
@@ -20,7 +20,6 @@
 import Data.Typeable
 import Data.Monoid
 import Data.Functor.Constant
-import GHC.Exts (Constraint)
 
 -- | Describes how we should treat names in the current context
 data NameContext
@@ -85,8 +84,6 @@
 
 alg :: (?alg :: Alg w, Resolvable d) => d -> Scope -> w d
 alg = runAlg ?alg
-
-data ConstraintProxy (p :: * -> Constraint) = ConstraintProxy
 
 defaultRtraverse
   :: (GTraversable Resolvable a, Applicative f, ?alg :: Alg f)
diff --git a/src/Language/Haskell/Names/Open/Derived.hs b/src/Language/Haskell/Names/Open/Derived.hs
--- a/src/Language/Haskell/Names/Open/Derived.hs
+++ b/src/Language/Haskell/Names/Open/Derived.hs
@@ -158,3 +158,7 @@
 deriveGTraversable ''Unpackedness
 
 deriveGTraversable ''EWildcard
+
+deriveGTraversable ''DerivStrategy
+
+deriveGTraversable ''MaybePromotedName
diff --git a/src/Language/Haskell/Names/Open/Instances.hs b/src/Language/Haskell/Names/Open/Instances.hs
--- a/src/Language/Haskell/Names/Open/Instances.hs
+++ b/src/Language/Haskell/Names/Open/Instances.hs
@@ -1,8 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 {-# LANGUAGE FlexibleContexts, FlexibleInstances, TemplateHaskell,
              MultiParamTypeClasses, UndecidableInstances, RankNTypes,
-             OverlappingInstances #-}
-{-# LANGUAGE ImplicitParams #-}
+             ImplicitParams #-}
 
 -- MonoLocalBinds extension prevents premature generalization, which
 -- results in the "default" instance being picked.
@@ -18,9 +17,7 @@
 import Language.Haskell.Exts
 import Language.Haskell.Names.SyntaxUtils
 import qualified Data.Data as D
-import Control.Applicative
 import Data.Typeable
-import Data.Type.Equality
 import Data.Lens.Light
 import Data.List
 import qualified Data.Traversable as T
diff --git a/src/Language/Haskell/Names/ScopeUtils.hs b/src/Language/Haskell/Names/ScopeUtils.hs
--- a/src/Language/Haskell/Names/ScopeUtils.hs
+++ b/src/Language/Haskell/Names/ScopeUtils.hs
@@ -1,6 +1,5 @@
 module Language.Haskell.Names.ScopeUtils where
 
-import Control.Applicative
 import Control.Arrow
 import Data.Monoid
 import Language.Haskell.Names.Types
diff --git a/src/Language/Haskell/Names/SyntaxUtils.hs b/src/Language/Haskell/Names/SyntaxUtils.hs
--- a/src/Language/Haskell/Names/SyntaxUtils.hs
+++ b/src/Language/Haskell/Names/SyntaxUtils.hs
@@ -143,6 +143,8 @@
 specialConToString (TupleCon _ Unboxed n) = '#':replicate (n-1) ','
 specialConToString (Cons _)               = ":"
 specialConToString (UnboxedSingleCon _)   = "#"
+specialConToString (ExprHole _)   = "_"
+
 
 unCName :: CName l -> Name l
 unCName (VarName _ n) = n
diff --git a/src/Language/Haskell/Names/Types.hs b/src/Language/Haskell/Names/Types.hs
--- a/src/Language/Haskell/Names/Types.hs
+++ b/src/Language/Haskell/Names/Types.hs
@@ -6,7 +6,6 @@
 import Data.Typeable
 import Data.Data
 import Data.Foldable as F
-import Data.Traversable
 import Data.Map (Map)
 import Text.Printf
 
diff --git a/tests/run.hs b/tests/run.hs
--- a/tests/run.hs
+++ b/tests/run.hs
@@ -1,8 +1,5 @@
-{-# LANGUAGE FlexibleInstances, OverlappingInstances, ImplicitParams,
-             MultiParamTypeClasses, FlexibleContexts, GADTs,
-             TypeApplications #-}
--- GHC 7.8 fails with the default context stack size of 20
-{-# OPTIONS_GHC -fcontext-stack=50 #-}
+{-# LANGUAGE FlexibleInstances, ImplicitParams, MultiParamTypeClasses,
+             FlexibleContexts, GADTs, TypeApplications #-}
 import Test.Tasty hiding (defaultMain)
 import Test.Tasty.Golden
 import Test.Tasty.Golden.Manage
@@ -112,7 +109,7 @@
 class TestAnn a where
   getAnn :: a -> Maybe (String, Scoped SrcSpan)
 
-instance TestAnn a where
+instance {-# OVERLAPS #-} TestAnn a where
   getAnn = const Nothing
 
 instance TestAnn (QName (Scoped SrcSpan)) where
