diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2013 Simon Hengel <sol@typeful.net>
+Copyright (c) 2013-2017 Simon Hengel <sol@typeful.net>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/quickcheck-io.cabal b/quickcheck-io.cabal
--- a/quickcheck-io.cabal
+++ b/quickcheck-io.cabal
@@ -1,29 +1,37 @@
+-- This file has been generated from package.yaml by hpack version 0.18.0.
+--
+-- see: https://github.com/sol/hpack
+
 name:             quickcheck-io
-version:          0.1.1
+version:          0.2.0
 synopsis:         Use HUnit assertions as QuickCheck properties
 description:      This package provides an orphan instance that allows you to
                   use HUnit assertions as QuickCheck properties.
 category:         Testing
+homepage:         https://github.com/hspec/quickcheck-io#readme
+bug-reports:      https://github.com/hspec/quickcheck-io/issues
 license:          MIT
 license-file:     LICENSE
-copyright:        (c) 2013 Simon Hengel
+copyright:        (c) 2013-2017 Simon Hengel
 author:           Simon Hengel <sol@typeful.net>
 maintainer:       Simon Hengel <sol@typeful.net>
 build-type:       Simple
-cabal-version:    >= 1.8
+cabal-version:    >= 1.10
 
 source-repository head
   type: git
-  location: https://github.com/sol/quickcheck-io
+  location: https://github.com/hspec/quickcheck-io
 
 library
-  ghc-options:
-      -Wall
   hs-source-dirs:
       src
-  exposed-modules:
-      Test.QuickCheck.IO
+  ghc-options: -Wall
   build-depends:
-      QuickCheck  >= 2.5.1
+      QuickCheck  >= 2.7
     , HUnit       >= 1.2.5
     , base        == 4.*
+  exposed-modules:
+      Test.QuickCheck.IO
+  other-modules:
+      Paths_quickcheck_io
+  default-language: Haskell2010
diff --git a/src/Test/QuickCheck/IO.hs b/src/Test/QuickCheck/IO.hs
--- a/src/Test/QuickCheck/IO.hs
+++ b/src/Test/QuickCheck/IO.hs
@@ -1,19 +1,32 @@
-{-# LANGUAGE CPP, TypeSynonymInstances, FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Test.QuickCheck.IO where
 
 import qualified Control.Exception as E
-import           Test.HUnit.Lang (Assertion, HUnitFailure(..))
+import           Test.HUnit.Lang
 import           Test.QuickCheck.Property
 
 instance Testable Assertion where
   property = propertyIO
+#if !MIN_VERSION_QuickCheck(2,9,0)
   exhaustive _ = True
+#endif
 
 propertyIO :: Assertion -> Property
-#if MIN_VERSION_QuickCheck(2,7,0)
 propertyIO action = ioProperty $ do
+  (action >> return succeeded) `E.catch` \ e ->
+    return failed {theException = Just (E.toException e), reason = formatAssertion e}
+  where
+    formatAssertion e = case e of
+#if MIN_VERSION_HUnit(1,3,0)
+      HUnitFailure _ err ->
 #else
-propertyIO action = morallyDubiousIOProperty $ do
+      HUnitFailure err ->
 #endif
-  (action >> return succeeded) `E.catch` \(HUnitFailure err) -> return failed {reason = err}
+#if MIN_VERSION_HUnit(1,5,0)
+        formatFailureReason err
+#else
+        err
+#endif
