diff --git a/Data/Conduit.hs b/Data/Conduit.hs
--- a/Data/Conduit.hs
+++ b/Data/Conduit.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE Safe #-}
 -- | If this is your first time with conduit, you should probably start with
 -- the tutorial:
 -- <https://haskell.fpcomplete.com/user/snoyberg/library-documentation/conduit-overview>.
diff --git a/Data/Conduit/Internal.hs b/Data/Conduit/Internal.hs
--- a/Data/Conduit/Internal.hs
+++ b/Data/Conduit/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE Safe #-}
 {-# OPTIONS_HADDOCK not-home #-}
 module Data.Conduit.Internal
     ( -- * Pipe
diff --git a/Data/Conduit/Internal/Conduit.hs b/Data/Conduit/Internal/Conduit.hs
--- a/Data/Conduit/Internal/Conduit.hs
+++ b/Data/Conduit/Internal/Conduit.hs
@@ -1,4 +1,5 @@
 {-# OPTIONS_HADDOCK not-home #-}
+{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE CPP #-}
@@ -6,8 +7,7 @@
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE TupleSections #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE ImpredicativeTypes #-}
+{-# LANGUAGE Trustworthy #-}
 module Data.Conduit.Internal.Conduit
     ( -- ** Types
       ConduitM (..)
diff --git a/Data/Conduit/Internal/Fusion.hs b/Data/Conduit/Internal/Fusion.hs
--- a/Data/Conduit/Internal/Fusion.hs
+++ b/Data/Conduit/Internal/Fusion.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE Trustworthy #-}
 module Data.Conduit.Internal.Fusion
     ( -- ** Types
       Step (..)
diff --git a/Data/Conduit/Internal/List/Stream.hs b/Data/Conduit/Internal/List/Stream.hs
--- a/Data/Conduit/Internal/List/Stream.hs
+++ b/Data/Conduit/Internal/List/Stream.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE TupleSections #-}
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE Trustworthy #-}
 module Data.Conduit.Internal.List.Stream where
 
 import           Control.Monad (liftM)
diff --git a/Data/Conduit/Internal/Pipe.hs b/Data/Conduit/Internal/Pipe.hs
--- a/Data/Conduit/Internal/Pipe.hs
+++ b/Data/Conduit/Internal/Pipe.hs
@@ -6,8 +6,8 @@
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE TupleSections #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE ImpredicativeTypes #-}
+{-# LANGUAGE Trustworthy #-}
 module Data.Conduit.Internal.Pipe
     ( -- ** Types
       Pipe (..)
diff --git a/Data/Conduit/Lift.hs b/Data/Conduit/Lift.hs
--- a/Data/Conduit/Lift.hs
+++ b/Data/Conduit/Lift.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE Safe #-}
 -- | Allow monad transformers to be run\/eval\/exec in a section of conduit
 -- rather then needing to run across the whole conduit.  The circumvents many
 -- of the problems with breaking the monad transformer laws.  For more
diff --git a/Data/Conduit/List.hs b/Data/Conduit/List.hs
--- a/Data/Conduit/List.hs
+++ b/Data/Conduit/List.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE Trustworthy #-}
 -- | Higher-level functions to interact with the elements of a stream. Most of
 -- these are based on list functions.
 --
diff --git a/conduit.cabal b/conduit.cabal
--- a/conduit.cabal
+++ b/conduit.cabal
@@ -1,5 +1,5 @@
 Name:                conduit
-Version:             1.2.5
+Version:             1.2.5.1
 Synopsis:            Streaming data processing library.
 description:
     Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/conduit>.
@@ -50,14 +50,15 @@
     build-depends:   conduit
                    , base
                    , hspec >= 1.3
-                   , QuickCheck >= 2.5
+                   , QuickCheck >= 2.7
                    , transformers
                    , mtl
                    , resourcet
-                   , void
                    , containers
                    , exceptions >= 0.6
                    , safe
+    if !impl(ghc>=7.9)
+        build-depends: void
     ghc-options:     -Wall
 
 --test-suite doctests
diff --git a/test/Data/Conduit/StreamSpec.hs b/test/Data/Conduit/StreamSpec.hs
--- a/test/Data/Conduit/StreamSpec.hs
+++ b/test/Data/Conduit/StreamSpec.hs
@@ -574,28 +574,6 @@
         liftM (\(l, o) -> (r:l, o)) $ go s' xs
 
 --------------------------------------------------------------------------------
--- Utilities from QuickCheck-2.7 (absent in earlier versions)
-
-#if !MIN_VERSION_QuickCheck(2,7,0)
-getBlind :: Blind a -> a
-getBlind (Blind x) = x
-
--- | @Small x@: generates values of @x@ drawn from a small range.
--- The opposite of 'Large'.
-newtype Small a = Small {getSmall :: a}
-    deriving (Prelude.Ord, Prelude.Eq, Prelude.Enum, Prelude.Show)
-
-instance Prelude.Integral a => Arbitrary (Small a) where
-    arbitrary = Prelude.fmap Small arbitrarySizedIntegral
-    shrink (Small x) = Prelude.map Small (shrinkIntegral x)
-
-(===) :: (Show a, Eq a) => a -> a -> Property
-x === y = whenFail
-    (Prelude.fail $ Prelude.show x Prelude.++ " should match " Prelude.++ Prelude.show y)
-    (x == y)
-#endif
-
---------------------------------------------------------------------------------
 -- Utilities taken from monad-loops package
 
 -- http://hackage.haskell.org/package/monad-loops
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -35,14 +35,6 @@
 import qualified Data.Map as Map
 import qualified Data.Conduit.Extra.ZipConduitSpec as ZipConduit
 import qualified Data.Conduit.StreamSpec as Stream
-#if !MIN_VERSION_QuickCheck(2,6,0)
-import Test.QuickCheck (Testable(..))
-import Test.QuickCheck.Property (morallyDubiousIOProperty)
-
-instance Testable (IO ()) where
-    property = morallyDubiousIOProperty . (>> return True)
-    exhaustive _ = True
-#endif
 
 (@=?) :: (Eq a, Show a) => a -> a -> IO ()
 (@=?) = flip shouldBe
