diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for constraints-extras
 
+## 0.3.0.2 - 2019-09-30
+
+* Update version bounds for GHC 8.8
+
 ## 0.3.0.1 - 2019-05-17
 
 * Drop markdown-unlit in favor of using regular "Bird"-style LHS to avoid some cross-compilation problems
diff --git a/README.lhs b/README.lhs
--- a/README.lhs
+++ b/README.lhs
@@ -1,4 +1,4 @@
-constraints-extras
+constraints-extras [![travis-ci](https://api.travis-ci.org/obsidiansystems/constraints-extras.svg?branch=develop)](https://travis-ci.org/obsidiansystems/constraints-extras)
 ==================
 
 Example usage:
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-constraints-extras
+constraints-extras [![travis-ci](https://api.travis-ci.org/obsidiansystems/constraints-extras.svg?branch=develop)](https://travis-ci.org/obsidiansystems/constraints-extras)
 ==================
 
 Example usage:
diff --git a/constraints-extras.cabal b/constraints-extras.cabal
--- a/constraints-extras.cabal
+++ b/constraints-extras.cabal
@@ -1,5 +1,5 @@
 name: constraints-extras
-version: 0.3.0.1
+version: 0.3.0.2
 synopsis: Utility package for constraints
 description: Convenience functions and TH for working with constraints. See <https://github.com/obsidiansystems/constraints-extras/blob/develop/README.md README.md> for example usage.
 category: Constraints
@@ -7,12 +7,19 @@
 license-file: LICENSE
 author: Cale Gibbard, Ali Abrar
 maintainer: maintainer@obsidian.systems
+homepage: https://github.com/obsidiansystems/constraints-extras
+bug-reports: https://github.com/obsidiansystems/constraints-extras/issues
 copyright: Obsidian Systems LLC
 build-type: Simple
-cabal-version: >=2.0
+cabal-version: 2.0
+tested-with:
+  GHC  ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1
 extra-source-files: README.md
                     ChangeLog.md
 
+flag build-readme
+  default: True
+
 library
   exposed-modules: Data.Constraint.Extras
                  , Data.Constraint.Extras.TH
@@ -25,16 +32,18 @@
                   , TypeOperators
                   , ConstraintKinds
                   , TemplateHaskell
-  build-depends: base >=4.9 && <4.13
-               , constraints >= 0.9 && < 0.11
-               , template-haskell >=2.11 && <2.15
+  build-depends: base >=4.9 && <4.14
+               , constraints >= 0.9 && < 0.12
+               , template-haskell >=2.11 && <2.16
   hs-source-dirs:  src
   default-language: Haskell2010
 
 executable readme
-  build-depends: base >=4.9 && <4.13
+  if !flag(build-readme)
+    buildable: False
+  build-depends: base >=4.9 && <4.14
                , aeson
-               , constraints >= 0.9 && < 0.11
+               , constraints >= 0.9 && < 0.12
                , constraints-extras
   main-is: README.lhs
   ghc-options: -Wall -optL -q
diff --git a/src/Data/Constraint/Extras/TH.hs b/src/Data/Constraint/Extras/TH.hs
--- a/src/Data/Constraint/Extras/TH.hs
+++ b/src/Data/Constraint/Extras/TH.hs
@@ -1,11 +1,11 @@
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE TemplateHaskell #-}
+
 module Data.Constraint.Extras.TH (deriveArgDict, deriveArgDictV, gadtIndices) where
 
-import Data.Constraint.Extras
 import Data.Constraint
-import Data.Either
+import Data.Constraint.Extras
 import Data.Maybe
 import Control.Monad
 import Language.Haskell.TH
@@ -28,13 +28,14 @@
     |]
 
 {-# DEPRECATED deriveArgDictV "Just use 'deriveArgDict'" #-}
+deriveArgDictV :: Name -> Q [Dec]
 deriveArgDictV = deriveArgDict
 
 matches :: Name -> Name -> Name -> Q [Match]
 matches c n argDictName = do
   x <- newName "x"
   reify n >>= \case
-    TyConI (DataD _ _ _ _ cons _) -> fmap concat $ forM cons $ \case
+    TyConI (DataD _ _ _ _ constrs _) -> fmap concat $ forM constrs $ \case
       GadtC [name] _ _ -> return $
         [Match (RecP name []) (NormalB $ ConE 'Dict) []]
       ForallC _ _ (GadtC [name] bts (AppT _ (VarT b))) -> do
@@ -75,7 +76,7 @@
 
 gadtIndices :: Name -> Name -> Q [Either Type Type]
 gadtIndices c n = reify n >>= \case
-  TyConI (DataD _ _ _ _ cons _) -> fmap concat $ forM cons $ \case
+  TyConI (DataD _ _ _ _ constrs _) -> fmap concat $ forM constrs $ \case
     GadtC _ _ (AppT _ typ) -> return [Right typ]
     ForallC _ _ (GadtC _ bts (AppT _ (VarT _))) -> fmap concat $ forM bts $ \case
       (_, AppT t (VarT _)) -> do
