diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+#### 0.16.0.2
+
+* Allow haskell-src-exts 1.16.*
+
 #### 0.16.0.1
 
 * Fix a bug where the generated Haskell client for a resource with a
diff --git a/rest-gen.cabal b/rest-gen.cabal
--- a/rest-gen.cabal
+++ b/rest-gen.cabal
@@ -1,5 +1,5 @@
 name:                rest-gen
-version:             0.16.0.1
+version:             0.16.0.2
 description:         Documentation and client generation from rest definition.
 synopsis:            Documentation and client generation from rest definition.
 maintainer:          code@silk.co
@@ -57,7 +57,7 @@
     , fclabels >= 1.0.4 && < 2.1
     , filepath >= 1.2 && < 1.4
     , hashable >= 1.1 && < 1.3
-    , haskell-src-exts >= 1.15.0 && < 1.16.0
+    , haskell-src-exts >= 1.15.0 && < 1.17
     , hslogger >= 1.1 && < 1.3
     , hxt >= 9.2 && < 9.4
     , json-schema >= 0.6 && < 0.8
@@ -83,7 +83,7 @@
       base >= 4.5 && < 4.8
     , HUnit == 1.2.*
     , fclabels >= 1.0.4 && < 2.1
-    , haskell-src-exts >= 1.15.0 && < 1.16.0
+    , haskell-src-exts >= 1.15.0 && < 1.17
     , rest-core >= 0.31 && < 0.34
     , rest-gen
     , test-framework == 0.8.*
diff --git a/src/Rest/Gen/Haskell.hs b/src/Rest/Gen/Haskell.hs
--- a/src/Rest/Gen/Haskell.hs
+++ b/src/Rest/Gen/Haskell.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE
-    DoAndIfThenElse
+    CPP
+  , DoAndIfThenElse
   , LambdaCase
   , PatternGuards
   , TemplateHaskell
@@ -199,7 +200,10 @@
        rhs = H.UnGuardedRhs $ H.Let binds expr
          where binds = H.BDecls [rHeadersBind, requestBind]
                rHeadersBind =
-                 H.PatBind noLoc (H.PVar rHeaders) Nothing
+                 H.PatBind noLoc (H.PVar rHeaders)
+#if !MIN_VERSION_haskell_src_exts(1,16,0)
+                    Nothing
+#endif
                     (H.UnGuardedRhs $ H.List [H.Tuple H.Boxed [use hAccept     , H.Lit $ H.String $ dataTypesToAcceptHeader JSON $ responseAcceptType responseType],
                                               H.Tuple H.Boxed [use hContentType, H.Lit $ H.String $ maybe "text/plain" inputContentType mInp]])
                               noBinds
@@ -210,7 +214,10 @@
                doRequest    = H.Ident "doRequest"
 
                requestBind =
-                 H.PatBind noLoc (H.PVar request) Nothing
+                 H.PatBind noLoc (H.PVar request)
+#if !MIN_VERSION_haskell_src_exts(1,16,0)
+                    Nothing
+#endif
                     (H.UnGuardedRhs $
                       appLast
                         (H.App
@@ -272,7 +279,11 @@
     ls ->
       let ctor (pth,mi) =
             H.QualConDecl noLoc [] [] (H.ConDecl (H.Ident (dataName pth)) $ maybe [] f mi)
+#if MIN_VERSION_haskell_src_exts(1,16,0)
+              where f ty = [Ident.haskellType ty]
+#else
               where f ty = [H.UnBangedTy $ Ident.haskellType ty]
+#endif
           fun (pth, mi) = [
                            H.FunBind [H.Match noLoc funName fparams Nothing rhs noBinds]]
             where (fparams, rhs) =
diff --git a/src/Rest/Gen/Types.hs b/src/Rest/Gen/Types.hs
--- a/src/Rest/Gen/Types.hs
+++ b/src/Rest/Gen/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module Rest.Gen.Types
   ( unModuleName
   , overModuleName
@@ -29,6 +30,9 @@
   , importQualified = False
   , importModule    = ModuleName name
   , importSrc       = False
+#if MIN_VERSION_haskell_src_exts(1,16,0)
+  , importSafe      = False
+#endif
   , importPkg       = Nothing
   , importAs        = Nothing
   , importSpecs     = Nothing
