diff --git a/BitSyntax.cabal b/BitSyntax.cabal
--- a/BitSyntax.cabal
+++ b/BitSyntax.cabal
@@ -1,5 +1,5 @@
 Name:            BitSyntax
-Version:         0.3.2.1
+Version:         0.3.2.2
 License:         BSD3
 license-file:    LICENSE
 Author:          Adam Langley
@@ -7,7 +7,7 @@
 category:        Serialization
 Homepage:        https://github.com/joecrayne/hs-bitsyntax
 Stability:       experimental
-cabal-version:   >= 1.6
+cabal-version:   >= 1.10
 Synopsis:        A module to aid in the (de)serialisation of binary data
 Build-Type:      Simple
 
@@ -15,9 +15,10 @@
   Exposed-modules:     Data.BitSyntax
   Build-Depends:       base < 5, QuickCheck, template-haskell, bytestring
   ghc-options:         -Wall
-  Extensions:          ForeignFunctionInterface, CPP, TemplateHaskell
+  default-extensions:  ForeignFunctionInterface, CPP, TemplateHaskell
+  default-language:    Haskell98
 
 source-repository this
   type: git
   location: git@github.com:joecrayne/hs-bitsyntax.git
-  tag: 0.3.2.1
+  tag: 0.3.2.2
diff --git a/Data/BitSyntax.hs b/Data/BitSyntax.hs
--- a/Data/BitSyntax.hs
+++ b/Data/BitSyntax.hs
@@ -282,8 +282,11 @@
   let stmt = BindS (TupP [VarP valname, VarP restname])
                    (AppE (AppE (VarE funcname)
                                (VarE inputname))
+#if MIN_VERSION_template_haskell(2,16,0)
+                         (TupE $ map (Just . VarE) $ reverse tuplenames))
+#else
                          (TupE $ map VarE $ reverse tuplenames))
-
+#endif
   return (stmt : stmts, restname, valname : tuplenames)
 
 readElement (stmts, inputname, tuplenames) (Fixed n) = do
