diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+0.1.2.7
+  * Fix missing cases when using haskell-src-exts 1.15.
+  * Allow mtl 2.2.
+
 0.1.2.6
   * Allow Cabal 1.20.*.
 
diff --git a/halberd.cabal b/halberd.cabal
--- a/halberd.cabal
+++ b/halberd.cabal
@@ -1,5 +1,5 @@
 name:                halberd
-version:             0.1.2.6
+version:             0.1.2.7
 license:             BSD3
 license-file:        LICENSE
 author:              Erik Hesselink, Simon Meier, Tom Lokhorst, Roman Cheplyaka
@@ -26,7 +26,7 @@
                      , haskell-names    >= 0.2    &&  < 0.4
                      , haskell-src-exts >= 1.14   &&  < 1.16
                      , Cabal            >= 1.16   &&  < 1.22
-                     , mtl              >= 2.0    &&  < 2.2
+                     , mtl              >= 2.0    &&  < 2.3
                      , safe             == 0.3.*
                      , syb              >= 0.3    &&  < 0.5
   hs-source-dirs:      src
@@ -46,7 +46,7 @@
                      , haskell-names    >= 0.2    &&  < 0.4
                      , haskell-packages == 0.2.*
                      , haskell-src-exts >= 1.14   &&  < 1.16
-                     , mtl              >= 2.0    &&  < 2.2
+                     , mtl              >= 2.0    &&  < 2.3
                      , safe             == 0.3.*
                      , tagged           >= 0.4    &&  < 0.8
   hs-source-dirs:      exe
@@ -67,7 +67,7 @@
                      , haskell-src-exts     >= 1.14   && < 1.16
                      , tagged               >= 0.4    && < 0.8
                      , split                == 0.2.*
-                     , mtl                  >= 2.0    && < 2.2
+                     , mtl                  >= 2.0    && < 2.3
   hs-source-dirs:      tests
   main-is:             Runner.hs
   type:                exitcode-stdio-1.0
diff --git a/src/Halberd/CollectNames.hs b/src/Halberd/CollectNames.hs
--- a/src/Halberd/CollectNames.hs
+++ b/src/Halberd/CollectNames.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module Halberd.CollectNames
   ( collectUnboundNames
   ) where
@@ -36,6 +37,9 @@
         `extQ` namesFromType
         `extQ` namesFromExp
         `extQ` namesFromFieldUpdate
+#if MIN_VERSION_haskell_src_exts(1,15,0)
+        `extQ` namesFromPromoted
+#endif
 
 namesFromAsst :: Asst l -> [(NameSpace, QName l)]
 namesFromAsst x = case x of
@@ -62,7 +66,19 @@
     TyParen _ _      -> []
     TyInfix _ _ qn _ -> [(TypeSpace, qn)]
     TyKind _ _ _     -> []
+#if MIN_VERSION_haskell_src_exts(1,15,0)
+    TyPromoted _ _   -> []
 
+namesFromPromoted :: Promoted l -> [(NameSpace, QName l)]
+namesFromPromoted x = case x of
+    PromotedInteger{}  -> []
+    PromotedString{}   -> []
+    PromotedCon _ _ qn -> [(TypeSpace, qn)]
+    PromotedList{}     -> []
+    PromotedTuple{}    -> []
+    PromotedUnit{}     -> []
+#endif
+
 namesFromExp :: Exp l -> [(NameSpace, QName l)]
 namesFromExp x = case x of
     Var _ qn               -> [(ValueSpace, qn)]
@@ -75,6 +91,9 @@
     Lambda _ _ _           -> []
     Let _ _ _              -> []
     If _ _ _ _             -> []
+#if MIN_VERSION_haskell_src_exts(1,15,0)
+    MultiIf _ _            -> []
+#endif
     Case _ _ _             -> []
     Do _ _                 -> []
     MDo _ _                -> []
@@ -111,6 +130,9 @@
     RightArrApp _ _ _      -> []
     LeftArrHighApp _ _ _   -> []
     RightArrHighApp _ _ _  -> []
+#if MIN_VERSION_haskell_src_exts(1,15,0)
+    LCase _ _              -> []
+#endif
 
 
 namesFromFieldUpdate :: FieldUpdate l -> [(NameSpace, QName l)]
