diff --git a/src/Test/HUnit/Tools.hs b/src/Test/HUnit/Tools.hs
index 2b66548..a24a510 100644
--- a/src/Test/HUnit/Tools.hs
+++ b/src/Test/HUnit/Tools.hs
@@ -18,9 +18,9 @@ module Test.HUnit.Tools (assertRaises, mapassertEqual,
     where
 import Test.QuickCheck as QC
 import Test.QuickCheck.Text
-import Test.QuickCheck.Test
+import Test.QuickCheck.Test as TQT
 import Test.QuickCheck.Gen
-import Test.QuickCheck.State
+import Test.QuickCheck.State as TQS
 import qualified Test.QuickCheck.Property as P
 import Test.QuickCheck.Property hiding (Result(reason))
 import qualified Control.Exception
@@ -33,6 +33,9 @@ import System.Random (newStdGen, StdGen(..), split)
 #define newStdGen newQCGen
 #define StdGen QCGen
 #endif
+#if MIN_VERSION_QuickCheck(2,8,0)
+import qualified Data.Map as Map
+#endif
 import System.IO
 import Text.Printf
 
@@ -205,6 +208,9 @@ localquickCheckWithResult args p =
                                          Just (_,s) -> \_ _ -> s
                  , numSuccessTests   = 0
                  , numDiscardedTests = 0
+#if MIN_VERSION_QuickCheck(2,8,0)
+                 , TQS.labels        = Map.empty
+#endif
                  , collected         = []
                  , expectedFailure   = False
                  , randomSeed        = rnd
@@ -236,14 +242,14 @@ localquickCheckWithResult args p =
         theOutput <- terminalOutput (terminal st)
 #endif
         if expectedFailure st then
-           return Success{ labels = summary st
+           return Success{ TQT.labels = summary st
 #if MIN_VERSION_QuickCheck(2,3,0)
                          , numTests = numSuccessTests st
                          , output = theOutput 
 #endif
                          }
            else
-           return NoExpectedFailure{ labels = summary st
+           return NoExpectedFailure{ TQT.labels = summary st
 #if MIN_VERSION_QuickCheck(2,3,0)
                                    , numTests = numSuccessTests st
                                    , output = theOutput 
@@ -257,7 +263,7 @@ localquickCheckWithResult args p =
         theOutput <- terminalOutput (terminal st)
 #endif
         return GaveUp{ numTests = numSuccessTests st
-                     , labels   = summary st
+                     , TQT.labels   = summary st
 #if MIN_VERSION_QuickCheck(2,3,0)
                      , output   = theOutput
 #endif
@@ -306,7 +312,7 @@ localquickCheckWithResult args p =
                foundFailure st res ts
 #endif
                if not (expect res) then
-                 return Success{ labels = summary st
+                 return Success{ TQT.labels = summary st
 #if MIN_VERSION_QuickCheck(2,3,0)
                                , numTests = numSuccessTests st+1
                                , output = theOutput
@@ -316,7 +322,7 @@ localquickCheckWithResult args p =
                  return Failure{ usedSeed   = randomSeed st -- correct! (this will be split first)
                                , usedSize   = size
                                , reason     = P.reason res
-                               , labels     = summary st
+                               , TQT.labels     = summary st
 #if MIN_VERSION_QuickCheck(2,3,0)
                                , numTests   = numSuccessTests st + 1
                                , numShrinks = numShrinks
diff --git a/src/Test/QuickCheck/Tools.hs b/src/Test/QuickCheck/Tools.hs
index 712c9bf..506686f 100644
--- a/src/Test/QuickCheck/Tools.hs
+++ b/src/Test/QuickCheck/Tools.hs
@@ -20,34 +20,18 @@ Written by John Goerzen, jgoerzen\@complete.org
 module Test.QuickCheck.Tools (-- * Comparisons
                               (@=?),
                               (@?=)
-                              
                              )
 where
-#if MIN_VERSION_QuickCheck(2,6,0)
-import Test.QuickCheck.Property (Result(..), callbacks, expect, theException, ok, reason, stamp)
-#if MIN_VERSION_QuickCheck(2,7,0)
-#else
-import Test.QuickCheck.Property (Result(..), callbacks, expect, interrupted, ok, reason, stamp)
-#endif
-#else
-import Test.QuickCheck hiding (Result, reason)
-import Test.QuickCheck.Property
-#endif
+
+import qualified Test.QuickCheck.Property as P
 
 {- | Compare two values.  If same, the test passes.  If different, the result indicates
 what was expected and what was received as part of the error. -}
-(@=?) :: (Eq a, Show a) => a -> a -> Result
+(@=?) :: (Eq a, Show a) => a -> a -> P.Result
 expected @=? actual = 
-        MkResult {ok = Just (expected == actual), 
-#if MIN_VERSION_QuickCheck(2,7,0)
-                  expect = True, theException = Nothing,
-#else
-                  expect = True, interrupted = False,
-#endif
-                  reason = "Result: expected " ++ show expected ++ ", got " ++ show actual,
-                  stamp = [], callbacks = []}
-    
+        P.failed { P.ok = Just (expected == actual)
+                 , P.reason = "Result: expected " ++ show expected ++ ", got " ++ show actual
+                 }
 {- | Like '@=?', but with args in a different order. -}
-(@?=) :: (Eq a, Show a) => a -> a -> Result
+(@?=) :: (Eq a, Show a) => a -> a -> P.Result
 (@?=) = flip (@=?)
-
diff --git a/testpack.cabal b/testpack.cabal
index 0873b33..dab77d9 100644
--- a/testpack.cabal
+++ b/testpack.cabal
@@ -46,7 +46,7 @@ Library
 
  Build-Depends: base >= 3 && < 5,
                mtl, HUnit,
-               QuickCheck >= 2.1.0.3 && < 2.8
+               QuickCheck >= 2.1.0.3
 
  If flag(splitBase)
    Build-Depends: base >= 3 && < 5, containers, random