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.8
+version:                0.7.0.9
 synopsis:               Bit manipulation
 description:            Please see README.md
 category:               Data, Bit
@@ -30,6 +30,7 @@
 
 common bytestring           { build-depends: bytestring           >= 0.9        && < 0.11   }
 common criterion            { build-depends: criterion            >= 1.2        && < 1.6    }
+common deepseq              { build-depends: deepseq              >= 1.4        && < 1.5    }
 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    }
@@ -48,6 +49,7 @@
   import:               base
                       , common
                       , bytestring
+                      , deepseq
                       , hw-int
                       , hw-prim
                       , hw-string-parse
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
@@ -9,6 +9,7 @@
   , bitShown
   ) where
 
+import Control.DeepSeq
 import Data.Maybe
 import Data.String
 import Data.Word
@@ -21,7 +22,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, Generic)
+newtype BitShown a = BitShown { unBitShown :: a } deriving (Eq, BitRead, BitShow, Generic, NFData)
 
 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,5 @@
+{-# LANGUAGE DeriveAnyClass        #-}
+{-# LANGUAGE DeriveFunctor         #-}
 {-# LANGUAGE DeriveGeneric         #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -15,13 +17,14 @@
   , kBitDiffUnsafe
   ) where
 
+import Control.DeepSeq
 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, Generic)
+newtype Broadword a = Broadword a deriving (Eq, Show, Generic, NFData)
 
 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
@@ -3,9 +3,10 @@
 
 module HaskellWorks.Data.Bits.Types.Broadword where
 
+import Control.DeepSeq
 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, Generic)
+newtype Broadword a = Broadword a deriving (BitWise, Eq, Show, Storable, Generic, NFData)
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
@@ -3,9 +3,10 @@
 
 module HaskellWorks.Data.Bits.Types.Builtin where
 
+import Control.DeepSeq
 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, Generic)
+newtype Builtin a = Builtin a deriving (BitWise, Eq, Show, Storable, Generic, NFData)
