diff --git a/composite-aeson.cabal b/composite-aeson.cabal
--- a/composite-aeson.cabal
+++ b/composite-aeson.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 7d5fd2a78928c12027d23895f74b3c815ebc88753dd2fb7f074caba91804d774
+-- hash: 732f90c13a3229400138195b439fa0d4a36ab8a8240dcff826eec5fcdeb45d76
 
 name:           composite-aeson
-version:        0.7.2.0
+version:        0.7.3.0
 synopsis:       JSON for Vinyl records
 description:    Integration between Aeson and Vinyl records allowing records to be easily converted to JSON using automatic derivation, explicit formats, or a mix of both.
 category:       Records
diff --git a/src/Composite/Aeson/Formats/DateTime.hs b/src/Composite/Aeson/Formats/DateTime.hs
--- a/src/Composite/Aeson/Formats/DateTime.hs
+++ b/src/Composite/Aeson/Formats/DateTime.hs
@@ -11,7 +11,6 @@
 import Control.Monad.Error.Class (throwError)
 import qualified Data.Aeson.BetterErrors as ABE
 import Data.Either (partitionEithers)
-import Data.Monoid ((<>))
 import Data.List (intercalate)
 import Data.List.NonEmpty (NonEmpty((:|)))
 import qualified Data.List.NonEmpty as NEL
@@ -110,5 +109,8 @@
 #endif
 successOrFail _ f (Success a) = f a
 successOrFail f _ (Fail    s) = f s
+#if __GLASGOW_HASKELL__ >= 810
+successOrFail f _ _           = f "pattern matching should have been exhaustive, but GHC disagreed"
+#endif
 
 
diff --git a/src/Composite/Aeson/Formats/Generic.hs b/src/Composite/Aeson/Formats/Generic.hs
--- a/src/Composite/Aeson/Formats/Generic.hs
+++ b/src/Composite/Aeson/Formats/Generic.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module Composite.Aeson.Formats.Generic
   ( abeJsonFormat, aesonJsonFormat, jsonArrayFormat, jsonObjectFormat
   , SumStyle(..), sumFromJson, sumToJson, jsonSumFormat
@@ -13,10 +14,14 @@
 import qualified Data.HashMap.Strict as StrictHashMap
 import Data.List.NonEmpty (NonEmpty((:|)))
 import qualified Data.List.NonEmpty as NEL
-import Data.Monoid ((<>))
 import Data.Text (Text, intercalate, unpack)
 import qualified Data.Vector as Vector
-import Language.Haskell.TH.Syntax (Lift, lift, liftString)
+import Language.Haskell.TH.Syntax
+  ( Lift, lift, liftString
+#if MIN_VERSION_template_haskell(2,16,0)
+  , liftTyped, TExp(TExp)
+#endif
+  )
 
 -- |Produce an explicit 'JsonFormat' by using the implicit Aeson 'ToJSON' instance and an explicit @aeson-better-errors@ 'ABE.Parse'.
 abeJsonFormat :: ToJSON a => ABE.Parse e a -> JsonFormat e a
@@ -148,6 +153,10 @@
     SumStyleFieldName     -> [| SumStyleFieldName |]
     SumStyleTypeValue a b -> [| SumStyleTypeValue $(liftString $ unpack a) $(liftString $ unpack b) |]
     SumStyleMergeType a   -> [| SumStyleMergeType $(liftString $ unpack a) |]
+#if MIN_VERSION_template_haskell(2,16,0)
+  liftTyped = fmap TExp . lift
+#endif
+
 
 -- |Helper used by the various sum format functions which takes a list of input format pairs and makes an oxford comma list of them.
 expectedFieldsForInputs :: NonEmpty (Text, x) -> String
diff --git a/src/Composite/Aeson/Formats/InternalTH.hs b/src/Composite/Aeson/Formats/InternalTH.hs
--- a/src/Composite/Aeson/Formats/InternalTH.hs
+++ b/src/Composite/Aeson/Formats/InternalTH.hs
@@ -8,7 +8,6 @@
 import qualified Data.Aeson.BetterErrors as ABE
 import qualified Data.HashMap.Lazy as HM
 import Data.List (foldl')
-import Data.Monoid ((<>))
 import Data.Text (Text)
 import qualified Data.Vector as V
 import Language.Haskell.TH
diff --git a/src/Composite/Aeson/TH.hs b/src/Composite/Aeson/TH.hs
--- a/src/Composite/Aeson/TH.hs
+++ b/src/Composite/Aeson/TH.hs
@@ -14,7 +14,6 @@
 import Control.Lens (_head, over)
 import Data.Aeson (FromJSON(parseJSON), ToJSON(toJSON))
 import Data.Char (toLower)
-import Data.Monoid ((<>))
 import Language.Haskell.TH
   ( Q, clause, cxt
   , normalB
