diff --git a/genvalidity-hspec-binary.cabal b/genvalidity-hspec-binary.cabal
--- a/genvalidity-hspec-binary.cabal
+++ b/genvalidity-hspec-binary.cabal
@@ -1,29 +1,35 @@
-name:                genvalidity-hspec-binary
-version:             0.0.0.0
-synopsis:            Standard spec's for binary-related Instances
-description:         Standard spec's for cereal-related Instances, see https://hackage.haskell.org/package/binary.
-homepage:            https://github.com/NorfairKing/validity#readme
-license:             MIT
-license-file:        LICENSE
-author:              Nick Van den Broeck
-maintainer:          syd.kerckhove@gmail.com
-copyright:           2017 Tom Sydney Kerckhove
-category:            Testing
-build-type:          Simple
-extra-source-files:  README.md
-cabal-version:       >=1.10
+name: genvalidity-hspec-binary
+version: 0.1.0.0
+cabal-version: >=1.10
+build-type: Simple
+license: MIT
+license-file: LICENSE
+copyright: 2017 Tom Sydney Kerckhove
+maintainer: syd.kerckhove@gmail.com
+homepage: https://github.com/NorfairKing/validity#readme
+synopsis: Standard spec's for binary-related Instances
+description:
+    Standard spec's for cereal-related Instances, see https://hackage.haskell.org/package/binary.
+category: Testing
+author: Nick Van den Broeck
+extra-source-files:
+    README.md
 
+source-repository head
+    type: git
+    location: https://github.com/NorfairKing/validity
+
 library
     exposed-modules:
         Test.Validity.Binary
     build-depends:
         base >=4.9 && <=5,
-        genvalidity-hspec >=0.3 && <0.5,
-        genvalidity >=0.3 && <0.4,
-        hspec,
+        QuickCheck -any,
         binary >=0.5 && <0.9,
-        QuickCheck,
-        deepseq >=1.4 && <1.5
+        deepseq >=1.4 && <1.5,
+        genvalidity >=0.4 && <0.5,
+        genvalidity-hspec >=0.5 && <0.6,
+        hspec -any
     default-language: Haskell2010
     hs-source-dirs: src/
     ghc-options: -Wall
@@ -38,21 +44,16 @@
     default-language: Haskell2010
     hs-source-dirs: test
     ghc-options: -threaded
-
 test-suite genvalidity-hspec-binary-test
     type: exitcode-stdio-1.0
     main-is: Spec.hs
     build-depends:
         base -any,
-        genvalidity >=0.3 && <0.4,
+        genvalidity -any,
         genvalidity-hspec-binary -any,
-        hspec
+        hspec -any
     default-language: Haskell2010
     hs-source-dirs: test/
     other-modules:
         Test.Validity.BinarySpec
     ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
-
-source-repository head
-  type:     git
-  location: https://github.com/NorfairKing/validity
diff --git a/src/Test/Validity/Binary.hs b/src/Test/Validity/Binary.hs
--- a/src/Test/Validity/Binary.hs
+++ b/src/Test/Validity/Binary.hs
@@ -33,7 +33,7 @@
 binarySpecOnValid ::
        forall a. (Show a, Eq a, Typeable a, GenValid a, Binary a)
     => Spec
-binarySpecOnValid = binarySpecOnGen (genValid @a) "valid"
+binarySpecOnValid = binarySpecOnGen (genValid @a) "valid" shrinkValid
 
 -- | Standard test spec for properties of 'Binary'-related functions for unchecked values
 --
@@ -43,7 +43,7 @@
 binarySpec ::
        forall a. (Show a, Eq a, Typeable a, GenUnchecked a, Binary a)
     => Spec
-binarySpec = binarySpecOnGen (genUnchecked @a) "unchecked"
+binarySpec = binarySpecOnGen (genUnchecked @a) "unchecked" shrinkUnchecked
 
 -- | Standard test spec for properties of 'Binary'-related functions for arbitrary values
 --
@@ -53,19 +53,20 @@
 binarySpecOnArbitrary ::
        forall a. (Show a, Eq a, Typeable a, Arbitrary a, Binary a)
     => Spec
-binarySpecOnArbitrary = binarySpecOnGen (arbitrary @a) "arbitrary"
+binarySpecOnArbitrary = binarySpecOnGen (arbitrary @a) "arbitrary" shrink
 
 -- | Standard test spec for properties of 'Binary'-related functions for a given generator (and a name for that generator).
 --
 -- Example usage:
 --
--- > binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's"
+-- > binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's" (const [])
 binarySpecOnGen ::
        forall a. (Show a, Eq a, Typeable a, Binary a)
     => Gen a
     -> String
+    -> (a -> [a])
     -> Spec
-binarySpecOnGen gen genname =
+binarySpecOnGen gen genname s =
     parallel $ do
         let name = nameOf @a
         describe ("Binary " ++ name ++ " (" ++ genname ++ ")") $ do
@@ -77,7 +78,7 @@
                          , "\"" ++ genname
                          , name ++ "\""
                          ]) $
-                neverFailsToEncodeOnGen gen
+                neverFailsToEncodeOnGen gen s
             describe
                 ("decode :: " ++ name ++ " -> Data.ByteString.Lazy.ByteString") $
                 it
@@ -86,34 +87,35 @@
                          , "\"" ++ genname
                          , name ++ "\"" ++ "'s"
                          ]) $
-                encodeAndDecodeAreInversesOnGen gen
+                encodeAndDecodeAreInversesOnGen gen s
 
 -- |
 --
--- prop> neverFailsToEncodeOnGen @Bool arbitrary
--- prop> neverFailsToEncodeOnGen @Bool genUnchecked
--- prop> neverFailsToEncodeOnGen @Bool genValid
--- prop> neverFailsToEncodeOnGen @Int arbitrary
--- prop> neverFailsToEncodeOnGen @Int genUnchecked
--- prop> neverFailsToEncodeOnGen @Int genValid
-neverFailsToEncodeOnGen :: (Show a, Binary a) => Gen a -> Property
-neverFailsToEncodeOnGen gen =
-    forAll gen $ \(a :: a) ->
+-- prop> neverFailsToEncodeOnGen @Bool arbitrary shrink
+-- prop> neverFailsToEncodeOnGen @Bool genUnchecked shrinkUnchecked
+-- prop> neverFailsToEncodeOnGen @Bool genValid shrinkValid
+-- prop> neverFailsToEncodeOnGen @Int arbitrary shrink
+-- prop> neverFailsToEncodeOnGen @Int genUnchecked shrinkUnchecked
+-- prop> neverFailsToEncodeOnGen @Int genValid shrinkValid
+neverFailsToEncodeOnGen :: (Show a, Binary a) => Gen a -> (a -> [a]) -> Property
+neverFailsToEncodeOnGen gen s =
+    forAllShrink gen s $ \(a :: a) ->
         evaluate (deepseq (Binary.encode a) ()) `shouldReturn` ()
 
 -- |
 --
--- prop> encodeAndDecodeAreInversesOnGen @Bool arbitrary
--- prop> encodeAndDecodeAreInversesOnGen @Bool genUnchecked
--- prop> encodeAndDecodeAreInversesOnGen @Bool genValid
--- prop> encodeAndDecodeAreInversesOnGen @Int arbitrary
--- prop> encodeAndDecodeAreInversesOnGen @Int genUnchecked
--- prop> encodeAndDecodeAreInversesOnGen @Int genValid
-encodeAndDecodeAreInversesOnGen :: (Show a, Eq a, Binary a) => Gen a -> Property
-encodeAndDecodeAreInversesOnGen gen =
-    forAll gen $ \(a :: a) ->
+-- prop> encodeAndDecodeAreInversesOnGen @Bool arbitrary shrinkValid
+-- prop> encodeAndDecodeAreInversesOnGen @Bool genUnchecked shrinkUnchecked
+-- prop> encodeAndDecodeAreInversesOnGen @Bool genValid shrinkValid
+-- prop> encodeAndDecodeAreInversesOnGen @Int arbitrary shrink
+-- prop> encodeAndDecodeAreInversesOnGen @Int genUnchecked shrinkUnchecked
+-- prop> encodeAndDecodeAreInversesOnGen @Int genValid shrinkValid
+encodeAndDecodeAreInversesOnGen ::
+       (Show a, Eq a, Binary a) => Gen a -> (a -> [a]) -> Property
+encodeAndDecodeAreInversesOnGen gen s =
+    forAllShrink gen s $ \(a :: a) ->
         case Binary.decodeOrFail (Binary.encode a) of
             Right (_, _, b) -> a `shouldBe` b
-            Left (_, _, s) ->
+            Left (_, _, s_) ->
                 expectationFailure $
-                unwords ["decode of encode is not identity:", s]
+                unwords ["decode of encode is not identity:", s_]
diff --git a/test/Test/Validity/BinarySpec.hs b/test/Test/Validity/BinarySpec.hs
--- a/test/Test/Validity/BinarySpec.hs
+++ b/test/Test/Validity/BinarySpec.hs
@@ -9,7 +9,7 @@
 
 spec :: Spec
 spec = do
-    binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's"
+    binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's" (const [])
     binarySpecOnValid @Double
     binarySpec @Int
     binarySpecOnArbitrary @Int
