diff --git a/genvalidity.cabal b/genvalidity.cabal
--- a/genvalidity.cabal
+++ b/genvalidity.cabal
@@ -1,5 +1,5 @@
 name: genvalidity
-version: 0.3.1.0
+version: 0.3.2.0
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -30,11 +30,13 @@
         Data.GenValidity
         Data.GenRelativeValidity
     build-depends:
-        base <5,
+        base >= 4.7 && <5,
         validity >=0.3 && <0.4,
-        QuickCheck >=2.8 && <2.10
+        QuickCheck >=2.7 && <2.10
     default-language: Haskell2010
     hs-source-dirs: src
+    if impl(ghc >= 8.0.0)
+        ghc-options: -Wno-redundant-constraints
 
 test-suite genvalidity-test
     type: exitcode-stdio-1.0
diff --git a/src/Data/GenValidity.hs b/src/Data/GenValidity.hs
--- a/src/Data/GenValidity.hs
+++ b/src/Data/GenValidity.hs
@@ -46,7 +46,6 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE DefaultSignatures #-}
-{-# OPTIONS_GHC -Wno-redundant-constraints #-}
 
 module Data.GenValidity
     ( module Data.Validity
@@ -56,11 +55,13 @@
 import Data.Validity
 
 import Data.Fixed (Fixed(..), HasResolution)
+import Data.Word (Word, Word8, Word16)
 import GHC.Generics
 import GHC.Real (Ratio(..))
 
 import Test.QuickCheck hiding (Fixed)
 
+import Control.Applicative ((<$>), pure)
 import Control.Monad (forM)
 
 -- | A class of types for which truly arbitrary values can be generated.
@@ -252,6 +253,16 @@
     genUnchecked = arbitrary
 
 instance GenValid Word
+
+instance GenUnchecked Word8 where
+    genUnchecked = arbitrary
+
+instance GenValid Word8
+
+instance GenUnchecked Word16 where
+    genUnchecked = arbitrary
+
+instance GenValid Word16
 
 instance GenUnchecked Float where
     genUnchecked = arbitrary
