diff --git a/hw-bits.cabal b/hw-bits.cabal
--- a/hw-bits.cabal
+++ b/hw-bits.cabal
@@ -1,5 +1,5 @@
 name:                   hw-bits
-version:                0.7.0.1
+version:                0.7.0.2
 synopsis:               Bit manipulation
 description:            Please see README.md
 homepage:               http://github.com/haskell-works/hw-bits#readme
diff --git a/src/HaskellWorks/Data/Bits/Log2.hs b/src/HaskellWorks/Data/Bits/Log2.hs
--- a/src/HaskellWorks/Data/Bits/Log2.hs
+++ b/src/HaskellWorks/Data/Bits/Log2.hs
@@ -2,10 +2,11 @@
   ( Log2(..)
   ) where
 
+import Data.Word
+import HaskellWorks.Data.AtIndex
+import HaskellWorks.Data.Bits.BitWise
+
 import qualified Data.Vector.Storable as DVS
-import           Data.Word
-import           HaskellWorks.Data.AtIndex
-import           HaskellWorks.Data.Bits.BitWise
 
 class Log2 a where
   -- | Log base of the given value rounded down to the nearest integer
diff --git a/src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs b/src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs
--- a/src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs
+++ b/src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs
@@ -6,16 +6,17 @@
     ( PopCount0(..)
     ) where
 
-import qualified Data.Vector                               as DV
-import qualified Data.Vector.Storable                      as DVS
-import           Data.Word
-import           HaskellWorks.Data.Bits.BitWise
-import           HaskellWorks.Data.Bits.PopCount.PopCount1
-import           HaskellWorks.Data.Bits.Types.Broadword
-import           HaskellWorks.Data.Bits.Types.Builtin
-import           HaskellWorks.Data.Positioning
-import           Prelude                                   as P
+import Data.Word
+import HaskellWorks.Data.Bits.BitWise
+import HaskellWorks.Data.Bits.PopCount.PopCount1
+import HaskellWorks.Data.Bits.Types.Broadword
+import HaskellWorks.Data.Bits.Types.Builtin
+import HaskellWorks.Data.Positioning
+import Prelude                                   as P
 
+import qualified Data.Vector          as DV
+import qualified Data.Vector.Storable as DVS
+
 class PopCount0 v where
   -- | The number of 0-bits in the value.
   popCount0 :: v -> Count
@@ -106,5 +107,73 @@
   {-# INLINE popCount0 #-}
 
 instance PopCount0 (DVS.Vector Word64) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+-- Vector of Builtin instances
+
+instance PopCount0 (DV.Vector (Builtin Word8)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DV.Vector (Builtin Word16)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DV.Vector (Builtin Word32)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DV.Vector (Builtin Word64)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Builtin Word8)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Builtin Word16)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Builtin Word32)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Builtin Word64)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+-- Vector of Broadword instances
+
+instance PopCount0 (DV.Vector (Broadword Word8)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DV.Vector (Broadword Word16)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DV.Vector (Broadword Word32)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DV.Vector (Broadword Word64)) where
+  popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Broadword Word8)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Broadword Word16)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Broadword Word32)) where
+  popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
+  {-# INLINE popCount0 #-}
+
+instance PopCount0 (DVS.Vector (Broadword Word64)) where
   popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0
   {-# INLINE popCount0 #-}
diff --git a/src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs b/src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs
--- a/src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs
+++ b/src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs
@@ -1,20 +1,21 @@
-{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE FlexibleInstances #-}
 
 module HaskellWorks.Data.Bits.PopCount.PopCount1
     ( PopCount1(..)
     ) where
 
-import qualified Data.Bits                              as DB
-import qualified Data.Vector                            as DV
-import qualified Data.Vector.Storable                   as DVS
-import           Data.Word
-import           HaskellWorks.Data.Bits.BitWise
-import           HaskellWorks.Data.Bits.Types.Broadword
-import           HaskellWorks.Data.Bits.Types.Builtin
-import           HaskellWorks.Data.Int.Widen.Widen64
-import           HaskellWorks.Data.Positioning
-import           Prelude                                as P
+import Data.Word
+import HaskellWorks.Data.Bits.BitWise
+import HaskellWorks.Data.Bits.Types.Broadword
+import HaskellWorks.Data.Bits.Types.Builtin
+import HaskellWorks.Data.Int.Widen.Widen64
+import HaskellWorks.Data.Positioning
+import Prelude                                as P
 
+import qualified Data.Bits            as DB
+import qualified Data.Vector          as DV
+import qualified Data.Vector.Storable as DVS
+
 type FastWord a = Builtin a
 
 fastWord :: a -> FastWord a
@@ -127,5 +128,73 @@
   {-# INLINE popCount1 #-}
 
 instance PopCount1 (DVS.Vector Word64) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+-- Vector of Builtin instances
+
+instance PopCount1 (DV.Vector (Builtin Word8)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DV.Vector (Builtin Word16)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DV.Vector (Builtin Word32)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DV.Vector (Builtin Word64)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Builtin Word8)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Builtin Word16)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Builtin Word32)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Builtin Word64)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+-- Vector of Broadword instances
+
+instance PopCount1 (DV.Vector (Broadword Word8)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DV.Vector (Broadword Word16)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DV.Vector (Broadword Word32)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DV.Vector (Broadword Word64)) where
+  popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Broadword Word8)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Broadword Word16)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Broadword Word32)) where
+  popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
+  {-# INLINE popCount1 #-}
+
+instance PopCount1 (DVS.Vector (Broadword Word64)) where
   popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0
   {-# INLINE popCount1 #-}
diff --git a/src/HaskellWorks/Data/Bits/Word.hs b/src/HaskellWorks/Data/Bits/Word.hs
--- a/src/HaskellWorks/Data/Bits/Word.hs
+++ b/src/HaskellWorks/Data/Bits/Word.hs
@@ -3,9 +3,9 @@
 
 module HaskellWorks.Data.Bits.Word where
 
-import           Data.Word
-import           HaskellWorks.Data.Bits.BitLength
-import           HaskellWorks.Data.Bits.BitWise
+import Data.Word
+import HaskellWorks.Data.Bits.BitLength
+import HaskellWorks.Data.Bits.BitWise
 
 class WordConcat a where
   type DoubleWords a
