diff --git a/Data/Vector/Unboxed/Deriving.hs b/Data/Vector/Unboxed/Deriving.hs
--- a/Data/Vector/Unboxed/Deriving.hs
+++ b/Data/Vector/Unboxed/Deriving.hs
@@ -1,8 +1,12 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE RecordWildCards #-}
+#if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE TemplateHaskellQuotes #-}
+#else
 {-# LANGUAGE TemplateHaskell #-}
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
+#endif
+#if __GLASGOW_HASKELL__ >= 702
 {-# LANGUAGE Trustworthy #-}
 #endif
 {-# LANGUAGE TypeFamilies #-}
@@ -113,18 +117,15 @@
         _ -> fail "Expecting a type of the form: cxts => typ -> rep"
 
     s <- VarT <$> newName "s"
-    let newtypeMVector = NewtypeInstD [] ''MVector [s, typ]
 #if MIN_VERSION_template_haskell(2,11,0)
-            Nothing
-#endif
-            (NormalC mvName [(
-#if MIN_VERSION_template_haskell(2,11,0)
-                               Bang NoSourceUnpackedness NoSourceStrictness
+    let bang = Bang NoSourceUnpackedness NoSourceStrictness
+# define MAYBE_KIND Nothing
 #else
-                               NotStrict
+    let bang = NotStrict
+# define MAYBE_KIND
 #endif
-                             , ConT ''MVector `AppT` s `AppT` rep
-                             )]) []
+    let newtypeMVector = NewtypeInstD [] ''MVector [s, typ] MAYBE_KIND
+            (NormalC mvName [(bang, ConT ''MVector `AppT` s `AppT` rep)]) []
     let mvCon = ConE mvName
     let instanceMVector = InstanceD cxts
             (ConT ''M.MVector `AppT` ConT ''MVector `AppT` typ) $ concat
@@ -144,18 +145,8 @@
             , wrap 'M.basicUnsafeMove       [mv, mv']   id
             , wrap 'M.basicUnsafeGrow       [mv, n]     (liftE mvCon) ]
 
-    let newtypeVector = NewtypeInstD [] ''Vector [typ]
-#if MIN_VERSION_template_haskell(2,11,0)
-            Nothing
-#endif
-            (NormalC vName [(
-#if MIN_VERSION_template_haskell(2,11,0)
-                              Bang NoSourceUnpackedness NoSourceStrictness
-#else
-                              NotStrict
-#endif
-                            , ConT ''Vector `AppT` rep
-                            )]) []
+    let newtypeVector = NewtypeInstD [] ''Vector [typ] MAYBE_KIND
+            (NormalC vName [(bang, ConT ''Vector `AppT` rep)]) []
     let vCon  = ConE vName
     let instanceVector = InstanceD cxts
             (ConT ''G.Vector `AppT` ConT ''Vector `AppT` typ) $ concat
diff --git a/vector-th-unbox.cabal b/vector-th-unbox.cabal
--- a/vector-th-unbox.cabal
+++ b/vector-th-unbox.cabal
@@ -1,5 +1,5 @@
 name:           vector-th-unbox
-version:        0.2.1.4
+version:        0.2.1.5
 synopsis:       Deriver for Data.Vector.Unboxed using Template Haskell
 description:
     A Template Haskell deriver for unboxed vectors, given a pair of coercion
@@ -15,6 +15,10 @@
 category:       Data
 build-type:     Simple
 cabal-version:  >= 1.10
+tested-with:
+    GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4,
+    GHC == 7.10.2, GHC == 7.10.3,
+    GHC >= 8.0 && < 8.2
 
 source-repository head
     type:       git
