diff --git a/doctests/DocTest.hs b/doctests/DocTest.hs
new file mode 100644
--- /dev/null
+++ b/doctests/DocTest.hs
@@ -0,0 +1,4 @@
+import Test.DocTest
+
+main :: IO ()
+main = doctest ["-isrc", "src", "-XTypeApplications"]
diff --git a/genvalidity-hspec.cabal b/genvalidity-hspec.cabal
--- a/genvalidity-hspec.cabal
+++ b/genvalidity-hspec.cabal
@@ -1,88 +1,105 @@
-name: genvalidity-hspec
-version: 0.5.0.0
-cabal-version: >=1.10
-build-type: Simple
-license: MIT
-license-file: LICENSE
-copyright: Copyright: (c) 2016 Tom Sydney Kerckhove
-maintainer: syd.kerckhove@gmail.com
-homepage: https://github.com/NorfairKing/validity#readme
-synopsis: Standard spec's for GenValidity instances
-description:
-    Note: There are companion packages for this library:
-    .
-    * <https://hackage.haskell.org/package/genvalidity-hspec-aeson genvalidity-hspec-aeson>
-    .
-    * <https://hackage.haskell.org/package/genvalidity-hspec-binary genvalidity-hspec-binary>
-    .
-    * <https://hackage.haskell.org/package/genvalidity-hspec-cereal genvalidity-hspec-cereal>
-    .
-    * <https://hackage.haskell.org/package/genvalidity-hspec-hashable genvalidity-hspec-hashable>
-category: Testing
-author: Tom Sydney Kerckhove
+-- This file has been generated from package.yaml by hpack version 0.20.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 206c65d35007a70eebf9849fc7608a979a491115cc4f679fa8ed710047c491c3
 
+name:           genvalidity-hspec
+version:        0.6.0.0
+synopsis:       Standard spec's for GenValidity instances
+description:    Note: There are companion packages for this library:
+                .
+                * <https://hackage.haskell.org/package/genvalidity-hspec-aeson genvalidity-hspec-aeson>
+                .
+                * <https://hackage.haskell.org/package/genvalidity-hspec-binary genvalidity-hspec-binary>
+                .
+                * <https://hackage.haskell.org/package/genvalidity-hspec-cereal genvalidity-hspec-cereal>
+                .
+                * <https://hackage.haskell.org/package/genvalidity-hspec-hashable genvalidity-hspec-hashable>
+category:       Testing
+homepage:       https://github.com/NorfairKing/validity#readme
+bug-reports:    https://github.com/NorfairKing/validity/issues
+author:         Tom Sydney Kerckhove
+maintainer:     syd.kerckhove@gmail.com
+copyright:      Copyright: (c) 2016-2018 Tom Sydney Kerckhove
+license:        MIT
+license-file:   LICENSE
+build-type:     Simple
+cabal-version:  >= 1.10
+
 source-repository head
-    type: git
-    location: https://github.com/NorfairKing/validity
+  type: git
+  location: https://github.com/NorfairKing/validity
 
 library
-    exposed-modules:
-        Test.Validity
-        Test.Validity.Applicative
-        Test.Validity.Arbitrary
-        Test.Validity.Eq
-        Test.Validity.Functor
-        Test.Validity.GenRelativeValidity
-        Test.Validity.GenValidity
-        Test.Validity.Monad
-        Test.Validity.Monoid
-        Test.Validity.Ord
-        Test.Validity.RelativeValidity
-        Test.Validity.Shrinking
-        Test.Validity.Utils
-    build-depends:
-        base >=4.9 && <5,
-        QuickCheck -any,
-        genvalidity >=0.4 && <0.5,
-        genvalidity-property >=0.1 && <0.2,
-        hspec >=2.2 && <2.5,
-        hspec-core -any,
-        validity >=0.4 && <0.5
-    default-language: Haskell2010
-    hs-source-dirs: src
+  hs-source-dirs:
+      src
+  build-depends:
+      QuickCheck
+    , base >=4.9 && <5
+    , genvalidity >=0.5 && <0.6
+    , genvalidity-property >=0.2 && <0.3
+    , hspec
+    , hspec-core
+    , validity >=0.5 && <0.6
+  exposed-modules:
+      Test.Validity
+      Test.Validity.Applicative
+      Test.Validity.Arbitrary
+      Test.Validity.Eq
+      Test.Validity.Functor
+      Test.Validity.GenRelativeValidity
+      Test.Validity.GenValidity
+      Test.Validity.Monad
+      Test.Validity.Monoid
+      Test.Validity.Ord
+      Test.Validity.RelativeValidity
+      Test.Validity.Shrinking
+      Test.Validity.Utils
+  other-modules:
+      Paths_genvalidity_hspec
+  default-language: Haskell2010
 
 test-suite genvalidity-hspec-doctests
-    type: exitcode-stdio-1.0
-    main-is: DocTest.hs
-    build-depends:
-        base -any,
-        doctest >=0.11 && <0.12,
-        genvalidity-hspec -any
-    default-language: Haskell2010
-    hs-source-dirs: test
-    ghc-options: -threaded
+  type: exitcode-stdio-1.0
+  main-is: DocTest.hs
+  hs-source-dirs:
+      doctests
+  ghc-options: -threaded
+  build-depends:
+      QuickCheck
+    , base
+    , doctest
+    , genvalidity-hspec
+    , hspec-core
+  other-modules:
+      Paths_genvalidity_hspec
+  default-language: Haskell2010
+
 test-suite genvalidity-hspec-test
-    type: exitcode-stdio-1.0
-    main-is: Spec.hs
-    build-depends:
-        base -any,
-        genvalidity -any,
-        genvalidity-hspec -any,
-        hspec -any,
-        hspec-core -any,
-        QuickCheck -any
-    default-language: Haskell2010
-    hs-source-dirs: test/
-    other-modules:
-        Test.Validity.ApplicativeSpec
-        Test.Validity.ArbitrarySpec
-        Test.Validity.EqSpec
-        Test.Validity.FunctorSpec
-        Test.Validity.GenRelativeValiditySpec
-        Test.Validity.GenValiditySpec
-        Test.Validity.MonadSpec
-        Test.Validity.MonoidSpec
-        Test.Validity.OrdSpec
-        Test.Validity.RelativeValiditySpec
-        Test.Validity.ShrinkingSpec
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  hs-source-dirs:
+      test/
+  ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  build-depends:
+      QuickCheck
+    , base
+    , genvalidity
+    , genvalidity-hspec
+    , hspec
+    , hspec-core
+  other-modules:
+      Test.Validity.ApplicativeSpec
+      Test.Validity.ArbitrarySpec
+      Test.Validity.EqSpec
+      Test.Validity.FunctorSpec
+      Test.Validity.GenRelativeValiditySpec
+      Test.Validity.GenValiditySpec
+      Test.Validity.MonadSpec
+      Test.Validity.MonoidSpec
+      Test.Validity.OrdSpec
+      Test.Validity.RelativeValiditySpec
+      Test.Validity.ShrinkingSpec
+      Paths_genvalidity_hspec
+  default-language: Haskell2010
diff --git a/src/Test/Validity.hs b/src/Test/Validity.hs
--- a/src/Test/Validity.hs
+++ b/src/Test/Validity.hs
@@ -263,7 +263,6 @@
 import Test.Validity.Operations
 import Test.Validity.Ord
 import Test.Validity.Property
-import Test.Validity.Shrinking
 import Test.Validity.RelativeValidity
+import Test.Validity.Shrinking
 import Test.Validity.Utils
-
diff --git a/src/Test/Validity/Applicative.hs b/src/Test/Validity/Applicative.hs
--- a/src/Test/Validity/Applicative.hs
+++ b/src/Test/Validity/Applicative.hs
@@ -218,7 +218,8 @@
                          pure (.) <*> (u :: f (b -> c)) <*> (v :: f (a -> b)) <*>
                          (w :: f a) :: f c)
                     (\(Anon u) (Anon v) w -> u <*> (v <*> w) :: f c)
-                    ((,,) <$> (Anon <$> genffb) <*> (Anon <$> genffa) <*> gen) shrinkNothing
+                    ((,,) <$> (Anon <$> genffb) <*> (Anon <$> genffa) <*> gen)
+                    shrinkNothing
             it
                 (unwords
                      [ "satisfy the homomorphism law: 'pure f <*> pure x = pure (f x)' for"
@@ -229,7 +230,8 @@
                 equivalentOnGens2
                     (\(Anon f) x -> pure f <*> pure x :: f b)
                     (\(Anon f) x -> pure $ f x :: f b)
-                    ((,) <$> (Anon <$> genfa) <*> gena) shrinkNothing
+                    ((,) <$> (Anon <$> genfa) <*> gena)
+                    shrinkNothing
             it
                 (unwords
                      [ "satisfy the interchange law: 'u <*> pure y = pure ($ y) <*> u' for"
@@ -240,7 +242,8 @@
                 equivalentOnGens2
                     (\(Anon u) y -> u <*> pure y :: f b)
                     (\(Anon u) y -> pure ($ y) <*> u :: f b)
-                    ((,) <$> (Anon <$> genffa) <*> gena) shrinkNothing
+                    ((,) <$> (Anon <$> genffa) <*> gena)
+                    shrinkNothing
             it
                 (unwords
                      [ "satisfy the law about the functor instance: fmap f x = pure f <*> x for"
@@ -251,7 +254,8 @@
                 equivalentOnGens2
                     (\(Anon f) x -> fmap f x)
                     (\(Anon f) x -> pure f <*> x)
-                    ((,) <$> (Anon <$> genfa) <*> gen) shrinkNothing
+                    ((,) <$> (Anon <$> genfa) <*> gen)
+                    shrinkNothing
         describe (seqrTypeStr @f) $
             it
                 (unwords
@@ -260,10 +264,11 @@
                      , "in front of"
                      , genDescr @b genbname
                      ]) $
-                equivalentOnGens2
-                    (\u v -> u *> v)
-                    (\u v -> pure (const id) <*> u <*> v)
-                    ((,) <$> gen <*> genb) shrinkNothing
+            equivalentOnGens2
+                (\u v -> u *> v)
+                (\u v -> pure (const id) <*> u <*> v)
+                ((,) <$> gen <*> genb)
+                shrinkNothing
         describe (seqlTypeStr @f) $
             it
                 (unwords
@@ -272,7 +277,8 @@
                      , "behind"
                      , genDescr @(f a) genname
                      ]) $
-                equivalentOnGens2
-                    (\u v -> u <* v)
-                    (\u v -> pure const <*> u <*> v)
-                    ((,) <$> gen <*> genb) shrinkNothing
+            equivalentOnGens2
+                (\u v -> u <* v)
+                (\u v -> pure const <*> u <*> v)
+                ((,) <$> gen <*> genb)
+                shrinkNothing
diff --git a/src/Test/Validity/Arbitrary.hs b/src/Test/Validity/Arbitrary.hs
--- a/src/Test/Validity/Arbitrary.hs
+++ b/src/Test/Validity/Arbitrary.hs
@@ -27,9 +27,8 @@
 -- Example usage:
 --
 -- > arbitrarySpec @Int
-arbitrarySpec
-    :: forall a.
-       (Typeable a, Show a, Validity a, Arbitrary a)
+arbitrarySpec ::
+       forall a. (Typeable a, Show a, Validity a, Arbitrary a)
     => Spec
 arbitrarySpec = do
     let name = nameOf @a
@@ -40,8 +39,7 @@
 -- | @arbitrary@ only generates valid data
 --
 -- prop> arbitraryGeneratesOnlyValid @Int
-arbitraryGeneratesOnlyValid
-    :: forall a.
-       (Show a, Validity a, Arbitrary a)
+arbitraryGeneratesOnlyValid ::
+       forall a. (Show a, Validity a, Arbitrary a)
     => Property
 arbitraryGeneratesOnlyValid = genGeneratesValid @a arbitrary shrink
diff --git a/src/Test/Validity/Monoid.hs b/src/Test/Validity/Monoid.hs
--- a/src/Test/Validity/Monoid.hs
+++ b/src/Test/Validity/Monoid.hs
@@ -24,23 +24,20 @@
 import Test.Validity.Operations
 import Test.Validity.Utils
 
-memptyTypeStr
-    :: forall a.
-       Typeable a
+memptyTypeStr ::
+       forall a. Typeable a
     => String
 memptyTypeStr = unwords ["mempty", "::", nameOf @a]
 
-mappendTypeStr
-    :: forall a.
-       Typeable a
+mappendTypeStr ::
+       forall a. Typeable a
     => String
 mappendTypeStr = unwords ["mappend", "::", an, "->", an, "->", an]
   where
     an = nameOf @a
 
-mconcatTypeStr
-    :: forall a.
-       Typeable a
+mconcatTypeStr ::
+       forall a. Typeable a
     => String
 mconcatTypeStr = unwords ["mconcat", "::", "[" ++ an ++ "]", "->", an]
   where
@@ -51,9 +48,8 @@
 -- Example usage:
 --
 -- > monoidSpecOnValid @[Double]
-monoidSpecOnValid
-    :: forall a.
-       (Show a, Eq a, Monoid a, Typeable a, GenValid a)
+monoidSpecOnValid ::
+       forall a. (Show a, Eq a, Monoid a, Typeable a, GenValid a)
     => Spec
 monoidSpecOnValid = monoidSpecOnGen @a genValid "valid" shrinkValid
 
@@ -62,9 +58,8 @@
 -- Example usage:
 --
 -- > monoidSpec @[Int]
-monoidSpec
-    :: forall a.
-       (Show a, Eq a, Monoid a, Typeable a, GenUnchecked a)
+monoidSpec ::
+       forall a. (Show a, Eq a, Monoid a, Typeable a, GenUnchecked a)
     => Spec
 monoidSpec = monoidSpecOnGen @a genUnchecked "unchecked" shrinkUnchecked
 
@@ -73,9 +68,8 @@
 -- Example usage:
 --
 -- > monoidSpecOnArbitrary @[Int]
-monoidSpecOnArbitrary
-    :: forall a.
-       (Show a, Eq a, Monoid a, Typeable a, Arbitrary a)
+monoidSpecOnArbitrary ::
+       forall a. (Show a, Eq a, Monoid a, Typeable a, Arbitrary a)
     => Spec
 monoidSpecOnArbitrary = monoidSpecOnGen @a arbitrary "arbitrary" shrink
 
@@ -84,10 +78,12 @@
 -- Example usage:
 --
 -- > monoidSpecOnGen (pure "a") "singleton list of 'a'"
-monoidSpecOnGen
-    :: forall a.
-       (Show a, Eq a, Monoid a, Typeable a)
-    => Gen a -> String -> (a -> [a])-> Spec
+monoidSpecOnGen ::
+       forall a. (Show a, Eq a, Monoid a, Typeable a)
+    => Gen a
+    -> String
+    -> (a -> [a])
+    -> Spec
 monoidSpecOnGen gen genname s =
     parallel $ do
         let name = nameOf @a
@@ -95,7 +91,7 @@
             mappendstr = mappendTypeStr @a
             mconcatstr = mconcatTypeStr @a
             gen3 = (,,) <$> gen <*> gen <*> gen
-            s3 (a,b,c) = (,,) <$> s a <*> s b <*> s c
+            s3 (a, b, c) = (,,) <$> s a <*> s b <*> s c
             genl = genListOf gen
             sl = shrinkList s
         describe ("Monoid " ++ name) $ do
diff --git a/src/Test/Validity/Utils.hs b/src/Test/Validity/Utils.hs
--- a/src/Test/Validity/Utils.hs
+++ b/src/Test/Validity/Utils.hs
@@ -69,24 +69,40 @@
     go sp =
         Leaf
             Item
-            { itemRequirement = s
-            , itemLocation = Nothing
-            , itemIsParallelizable = False
-            , itemExample =
-                  \_ _ _ -> do
-                      let conf = defaultConfig {configFormatter = Just silent}
-                      r <- hspecWithResult conf $ fromSpecList [sp]
-                      let succesful =
-                              summaryExamples r > 0 && summaryFailures r > 0
-                      pure $ produceResult succesful
-            }
+                { itemRequirement = s
+                , itemLocation = Nothing
+#if MIN_VERSION_hspec_core(2,5,0)
+                , itemIsParallelizable = Nothing
+#else
+                , itemIsParallelizable = False
+#endif
+                , itemExample =
+                      \_ _ _ -> do
+                          let conf =
+                                  defaultConfig {configFormatter = Just silent}
+                          r <- hspecWithResult conf $ fromSpecList [sp]
+                          let succesful =
+                                  summaryExamples r > 0 && summaryFailures r > 0
+                          pure $ produceResult succesful
+                }
 #if MIN_VERSION_hspec_core(2,4,0)
+#if MIN_VERSION_hspec_core(2,5,0)
+produceResult :: Bool -> Test.Hspec.Core.Spec.Result
+produceResult succesful = Result
+  { resultInfo = ""
+  , resultStatus =
+    if succesful
+        then Success
+        else Failure Nothing $ Reason "Should have failed but didn't."
+  }
+#else
 produceResult :: Bool -> Either a Test.Hspec.Core.Spec.Result
 produceResult succesful =
     Right $
     if succesful
         then Success
         else Failure Nothing $ Reason "Should have failed but didn't."
+#endif
 #else
 produceResult :: Bool -> Test.Hspec.Core.Spec.Result
 produceResult succesful =
@@ -98,9 +114,9 @@
 shouldFail =
     mapResult $ \res ->
         res
-        { reason = unwords ["Should have failed:", reason res]
-        , expect = not $ expect res
-        }
+            { reason = unwords ["Should have failed:", reason res]
+            , expect = not $ expect res
+            }
 
 shouldBeValid :: (Show a, Validity a) => a -> Expectation
 shouldBeValid a = do
diff --git a/test/DocTest.hs b/test/DocTest.hs
deleted file mode 100644
--- a/test/DocTest.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-import Test.DocTest
-
-main :: IO ()
-main = doctest ["-isrc", "src", "-XTypeApplications"]
