diff --git a/Test/Framework/Providers/QuickCheck2.hs b/Test/Framework/Providers/QuickCheck2.hs
--- a/Test/Framework/Providers/QuickCheck2.hs
+++ b/Test/Framework/Providers/QuickCheck2.hs
@@ -13,14 +13,12 @@
 
 import Test.QuickCheck.Gen
 import Test.QuickCheck.Property hiding ( Property )
-import Test.QuickCheck.Test ( run, maxSize, stdArgs, callbackPostTest, callbackPostFinalFailure )
+import Test.QuickCheck.Test ( maxSize, stdArgs, callbackPostTest, callbackPostFinalFailure )
 import Test.QuickCheck.Text
 import Test.QuickCheck.State
 
 import qualified Control.Exception.Extensible as E
 
-import Data.List
-
 import System.Random
 
 
@@ -132,10 +130,12 @@
 myRunATest :: State -> (StdGen -> Int -> Prop) -> ImprovingIO PropertyTestCount f (PropertyStatus, PropertyTestCount)
 myRunATest st f = do
     let size = computeSize st (numSuccessTests st) (numDiscardedTests st)
-        (rnd1, rnd2) = split (randomSeed st)
     -- Careful to catch exceptions, or else they might bring down the whole test framework
-    ei_st_res <- liftIO $ E.catch (fmap Right $ run (unProp (f rnd1 size)))
-                                  (\e -> return $ Left $ show (e :: E.SomeException))
+    ei_st_res <- liftIO $ flip E.catch (\e -> return $ Left $ show (e :: E.SomeException)) $ do
+                                  MkRose mres ts <- protectRose (unProp (f rnd1 size))
+                                  res <- mres
+                                  return (Right (res, ts))
+                                  
     case ei_st_res of
        Left text -> return (PropertyException text, numSuccessTests st + 1)
        Right (res, ts) -> do
@@ -161,6 +161,8 @@
                           -- Could terminate immediately without any shrinking by doing this instead:
                           -- return (PropertyFalsifiable (reason res), numSuccessTests st + 1)
                      else return (PropertyOK, numSuccessTests st + 1)
+  where
+   (rnd1,rnd2) = split (randomSeed st)
 
 
 -- | This function eventually reports a failure but attempts to shrink the counterexample before it does so
@@ -174,7 +176,8 @@
     return (PropertyFalsifiable (reason res), numSuccessTests st + 1)
 
 myLocalMin st res (t : ts) =
-  do (res', ts') <- run t
+  do MkRose mres' ts' <- protectRose t
+     res' <- mres'
      callbackPostTest st res'
      
      -- NB: both (numSuccessShrinks st) (numTryShrinks st) contain interesting information here.
diff --git a/test-framework-quickcheck2.cabal b/test-framework-quickcheck2.cabal
--- a/test-framework-quickcheck2.cabal
+++ b/test-framework-quickcheck2.cabal
@@ -1,5 +1,5 @@
 Name:                test-framework-quickcheck2
-Version:             0.2.4
+Version:             0.2.5
 Cabal-Version:       >= 1.2.3
 Category:            Testing
 Synopsis:            QuickCheck2 support for the test-framework package.
@@ -22,7 +22,7 @@
 Library
         Exposed-Modules:        Test.Framework.Providers.QuickCheck2
         
-        Build-Depends:          test-framework >= 0.2.0, QuickCheck >= 2.1.0.0, extensible-exceptions >= 0.1.1
+        Build-Depends:          test-framework >= 0.2.0 && < 0.3.0, QuickCheck >= 2.1.0.3 && < 2.2.0.0, extensible-exceptions >= 0.1.1 && < 0.2.0
         if flag(base3)
                 Build-Depends:          base >= 3 && < 4, random >= 1
         else
