diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.4.1
+* Fix the `Invariant V1` instance so as to `seq` its argument
+* Allow building with `template-haskell-2.12`
+
 # 0.4
 * Allow TH derivation of `Invariant(2)` instances for datatypes containing
   unboxed tuple types
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2012-2016, University of Kansas
+Copyright (c) 2012-2017, University of Kansas
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/invariant.cabal b/invariant.cabal
--- a/invariant.cabal
+++ b/invariant.cabal
@@ -1,7 +1,11 @@
 name:                invariant
-version:             0.4
-synopsis:            Haskell 98 invariant functors
-description:         Haskell 98 invariant functors
+version:             0.4.1
+synopsis:            Haskell98 invariant functors
+description:         Haskell98 invariant functors (also known as exponential functors).
+                     .
+                     For more information, see Edward Kmett's article \"Rotten Bananas\":
+                     .
+                     <http://comonad.com/reader/2008/rotten-bananas/>
 category:            Control, Data
 license:             BSD3
 license-file:        LICENSE
@@ -18,6 +22,8 @@
                    , GHC == 7.6.3
                    , GHC == 7.8.4
                    , GHC == 7.10.3
+                   , GHC == 8.0.2
+                   , GHC == 8.2.1
 extra-source-files:  CHANGELOG.md, README.md
 
 source-repository head
@@ -42,7 +48,7 @@
                      , StateVar             >= 1.1    && < 2
                      , stm                  >= 2.2    && < 3
                      , tagged               >= 0.7.3  && < 1
-                     , template-haskell     >= 2.4    && < 2.12
+                     , template-haskell     >= 2.4    && < 2.13
                      , transformers         >= 0.2    && < 0.6
                      , transformers-compat  >= 0.3    && < 1
                      , unordered-containers >= 0.2.4  && < 0.3
@@ -54,8 +60,9 @@
   main-is:             Spec.hs
   other-modules:       InvariantSpec
                        THSpec
-  build-depends:       base       >= 4 && < 5
-                     , hspec      >= 1.8
+  build-depends:       base             >= 4   && < 5
+                     , hspec            >= 1.8
                      , invariant
-                     , QuickCheck >= 2 && < 3
+                     , QuickCheck       >= 2   && < 3
+                     , template-haskell >= 2.4 && < 2.13
   ghc-options:         -Wall
diff --git a/src/Data/Functor/Invariant.hs b/src/Data/Functor/Invariant.hs
--- a/src/Data/Functor/Invariant.hs
+++ b/src/Data/Functor/Invariant.hs
@@ -16,7 +16,7 @@
 
 {-|
 Module:      Data.Functor.Invariant
-Copyright:   (C) 2012-2016 Nicolas Frisby, (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2012-2017 Nicolas Frisby, (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Portable
@@ -887,7 +887,7 @@
 -- | from "GHC.Generics"
 instance Invariant V1 where
   -- NSF 25 July 2015: I'd prefer an -XEmptyCase, but Haskell98.
-  invmap _ _ _ = error "Invariant V1"
+  invmap _ _ x = x `seq` error "Invariant V1"
 -- | from "GHC.Generics"
 instance Invariant U1 where invmap _ _ _ = U1
 -- | from "GHC.Generics"
@@ -912,21 +912,27 @@
   invmap f g (Comp1 fgp) = Comp1 $ invmap (invmap f g) (invmap g f) fgp
 
 # if __GLASGOW_HASKELL__ >= 800
+-- | from "GHC.Generics"
 instance Invariant UAddr where
   invmap _ _ (UAddr a) = UAddr a
 
+-- | from "GHC.Generics"
 instance Invariant UChar where
   invmap _ _ (UChar c) = UChar c
 
+-- | from "GHC.Generics"
 instance Invariant UDouble where
   invmap _ _ (UDouble d) = UDouble d
 
+-- | from "GHC.Generics"
 instance Invariant UFloat where
   invmap _ _ (UFloat f) = UFloat f
 
+-- | from "GHC.Generics"
 instance Invariant UInt where
   invmap _ _ (UInt i) = UInt i
 
+-- | from "GHC.Generics"
 instance Invariant UWord where
   invmap _ _ (UWord w) = UWord w
 # endif
diff --git a/src/Data/Functor/Invariant/TH.hs b/src/Data/Functor/Invariant/TH.hs
--- a/src/Data/Functor/Invariant/TH.hs
+++ b/src/Data/Functor/Invariant/TH.hs
@@ -2,7 +2,7 @@
 
 {-|
 Module:      Data.Functor.Invariant.TH
-Copyright:   (C) 2012-2016 Nicolas Frisby, (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2012-2017 Nicolas Frisby, (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
diff --git a/src/Data/Functor/Invariant/TH/Internal.hs b/src/Data/Functor/Invariant/TH/Internal.hs
--- a/src/Data/Functor/Invariant/TH/Internal.hs
+++ b/src/Data/Functor/Invariant/TH/Internal.hs
@@ -2,7 +2,7 @@
 
 {-|
 Module:      Data.Functor.Invariant.TH.Internal
-Copyright:   (C) 2012-2016 Nicolas Frisby, (C) 2015-2016 Ryan Scott
+Copyright:   (C) 2012-2017 Nicolas Frisby, (C) 2015-2017 Ryan Scott
 License:     BSD-style (see the file LICENSE)
 Maintainer:  Ryan Scott
 Portability: Template Haskell
