diff --git a/hw-bits.cabal b/hw-bits.cabal
--- a/hw-bits.cabal
+++ b/hw-bits.cabal
@@ -1,7 +1,7 @@
 cabal-version:  2.2
 
 name:           hw-bits
-version:        0.7.0.6
+version:        0.7.0.7
 synopsis:       Bit manipulation
 description:    Please see README.md
 category:       Data, Bit
@@ -10,10 +10,10 @@
 bug-reports:    https://github.com/haskell-works/hw-bits/issues
 author:         John Ky
 maintainer:     newhoggy@gmail.com
-copyright:      2016-2018 John Ky
+copyright:      2016-2019 John Ky
 license:        BSD-3-Clause
 license-file:   LICENSE
-tested-with:    GHC == 8.6.3, GHC == 8.4.2, GHC == 8.2.2, GHC == 8.0.2
+tested-with:    GHC == 8.6.5, GHC == 8.4.4, GHC == 8.2.2
 build-type:     Simple
 extra-source-files:
     README.md
@@ -29,17 +29,16 @@
 
 common base                 { build-depends: base                 >= 4          && < 5      }
 
-common QuickCheck           { build-depends: QuickCheck           >= 2.10       && < 2.12   }
+common QuickCheck           { build-depends: QuickCheck           >= 2.10       && < 2.14   }
 common bytestring           { build-depends: bytestring           >= 0.9        && < 0.11   }
 common criterion            { build-depends: criterion            >= 1.2        && < 1.6    }
-common hedgehog             { build-depends: hedgehog             >= 0.5        && < 0.7    }
+common hedgehog             { build-depends: hedgehog             >= 0.6        && < 1.1    }
 common hspec                { build-depends: hspec                >= 2.4        && < 3      }
 common hw-hspec-hedgehog    { build-depends: hw-hspec-hedgehog    >= 0.1.0.4    && < 0.2    }
 common hw-int               { build-depends: hw-int               >= 0.0.0.1    && < 0.1    }
 common hw-prim              { build-depends: hw-prim              >= 0.4.0.3    && < 0.7    }
 common hw-string-parse      { build-depends: hw-string-parse      >= 0.0.0.1    && < 0.1    }
 common vector               { build-depends: vector               >= 0.12       && < 0.13   }
-common safe                 { build-depends: safe                 >= 0.3        && < 0.4    }
 
 common common
   default-language:   Haskell2010
@@ -54,7 +53,6 @@
           , hw-int
           , hw-prim
           , hw-string-parse
-          , safe
           , vector
   exposed-modules:
       HaskellWorks.Data.Bits
diff --git a/src/HaskellWorks/Data/Bits/BitShown.hs b/src/HaskellWorks/Data/Bits/BitShown.hs
--- a/src/HaskellWorks/Data/Bits/BitShown.hs
+++ b/src/HaskellWorks/Data/Bits/BitShown.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DeriveFunctor              #-}
+{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE StandaloneDeriving         #-}
@@ -11,6 +12,7 @@
 import Data.Maybe
 import Data.String
 import Data.Word
+import GHC.Generics
 import HaskellWorks.Data.Bits.BitRead
 import HaskellWorks.Data.Bits.BitShow
 import HaskellWorks.Data.Bits.BitWise
@@ -19,7 +21,7 @@
 import qualified Data.ByteString as BS
 
 -- | Tag for a value describe the value as being able to be shown as a bit string
-newtype BitShown a = BitShown { unBitShown :: a } deriving (Eq, BitRead, BitShow)
+newtype BitShown a = BitShown { unBitShown :: a } deriving (Eq, BitRead, BitShow, Generic)
 
 deriving instance Functor BitShown
 
diff --git a/src/HaskellWorks/Data/Bits/Broadword.hs b/src/HaskellWorks/Data/Bits/Broadword.hs
--- a/src/HaskellWorks/Data/Bits/Broadword.hs
+++ b/src/HaskellWorks/Data/Bits/Broadword.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveGeneric         #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
@@ -15,11 +16,12 @@
   ) where
 
 import Data.Word
+import GHC.Generics
 import HaskellWorks.Data.Bits.BitWise
 
 import qualified Data.Bits as DB
 
-newtype Broadword a = Broadword a deriving (Eq, Show)
+newtype Broadword a = Broadword a deriving (Eq, Show, Generic)
 
 broadword :: Broadword Word64 -> Word64
 broadword (Broadword a) = a
diff --git a/src/HaskellWorks/Data/Bits/Types/Broadword.hs b/src/HaskellWorks/Data/Bits/Types/Broadword.hs
--- a/src/HaskellWorks/Data/Bits/Types/Broadword.hs
+++ b/src/HaskellWorks/Data/Bits/Types/Broadword.hs
@@ -1,9 +1,11 @@
+{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 module HaskellWorks.Data.Bits.Types.Broadword where
 
 import Data.Vector.Storable
+import GHC.Generics
 import HaskellWorks.Data.Bits.BitWise
 
 -- | Type wrapper to prefer broadword operations.
-newtype Broadword a = Broadword a deriving (BitWise, Eq, Show, Storable)
+newtype Broadword a = Broadword a deriving (BitWise, Eq, Show, Storable, Generic)
diff --git a/src/HaskellWorks/Data/Bits/Types/Builtin.hs b/src/HaskellWorks/Data/Bits/Types/Builtin.hs
--- a/src/HaskellWorks/Data/Bits/Types/Builtin.hs
+++ b/src/HaskellWorks/Data/Bits/Types/Builtin.hs
@@ -1,9 +1,11 @@
+{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 module HaskellWorks.Data.Bits.Types.Builtin where
 
 import Data.Vector.Storable
+import GHC.Generics
 import HaskellWorks.Data.Bits.BitWise
 
 -- | Type wrapper to prefer builting operations.
-newtype Builtin a = Builtin a deriving (BitWise, Eq, Show, Storable)
+newtype Builtin a = Builtin a deriving (BitWise, Eq, Show, Storable, Generic)
