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
@@ -116,18 +116,20 @@
         ArrowT `AppT` typ `AppT` rep -> return ([], typ, rep)
         _ -> fail "Expecting a type of the form: cxts => typ -> rep"
 
-    s <- VarT <$> newName "s"
+    let s = VarT (mkName "s")
 #if MIN_VERSION_template_haskell(2,11,0)
-    let bang = Bang NoSourceUnpackedness NoSourceStrictness
+    let lazy = Bang NoSourceUnpackedness NoSourceStrictness
 # define MAYBE_KIND Nothing
+# define MAYBE_OVERLAP Nothing
 #else
-    let bang = NotStrict
+    let lazy = NotStrict
 # define MAYBE_KIND
+# define MAYBE_OVERLAP
 #endif
     let newtypeMVector = NewtypeInstD [] ''MVector [s, typ] MAYBE_KIND
-            (NormalC mvName [(bang, ConT ''MVector `AppT` s `AppT` rep)]) []
+            (NormalC mvName [(lazy, ConT ''MVector `AppT` s `AppT` rep)]) []
     let mvCon = ConE mvName
-    let instanceMVector = InstanceD cxts
+    let instanceMVector = InstanceD MAYBE_OVERLAP cxts
             (ConT ''M.MVector `AppT` ConT ''MVector `AppT` typ) $ concat
             [ wrap 'M.basicLength           [mv]        id
             , wrap 'M.basicUnsafeSlice      [i, n, mv]  (AppE mvCon)
@@ -146,9 +148,9 @@
             , wrap 'M.basicUnsafeGrow       [mv, n]     (liftE mvCon) ]
 
     let newtypeVector = NewtypeInstD [] ''Vector [typ] MAYBE_KIND
-            (NormalC vName [(bang, ConT ''Vector `AppT` rep)]) []
+            (NormalC vName [(lazy, ConT ''Vector `AppT` rep)]) []
     let vCon  = ConE vName
-    let instanceVector = InstanceD cxts
+    let instanceVector = InstanceD MAYBE_OVERLAP cxts
             (ConT ''G.Vector `AppT` ConT ''Vector `AppT` typ) $ concat
             [ wrap 'G.basicUnsafeFreeze     [mv]        (liftE vCon)
             , wrap 'G.basicUnsafeThaw       [v]         (liftE mvCon)
@@ -158,7 +160,7 @@
             , wrap 'G.basicUnsafeCopy       [mv, v]     id
             , wrap 'G.elemseq               [v, a]      id ]
 
-    return [ InstanceD cxts (ConT ''Unbox `AppT` typ) []
+    return [ InstanceD MAYBE_OVERLAP cxts (ConT ''Unbox `AppT` typ) []
         , newtypeMVector, instanceMVector
         , newtypeVector, instanceVector ]
 
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.5
+version:        0.2.1.6
 synopsis:       Deriver for Data.Vector.Unboxed using Template Haskell
 description:
     A Template Haskell deriver for unboxed vectors, given a pair of coercion
