diff --git a/Test/Tasty/QuickCheck.hs b/Test/Tasty/QuickCheck.hs
--- a/Test/Tasty/QuickCheck.hs
+++ b/Test/Tasty/QuickCheck.hs
@@ -3,6 +3,9 @@
 module Test.Tasty.QuickCheck
   ( testProperty
   , QuickCheckTests(..)
+  , QuickCheckReplay(..)
+  , QuickCheckMaxSize(..)
+  , QuickCheckMaxRatio(..)
   , module Test.QuickCheck
   ) where
 
@@ -26,12 +29,15 @@
   )
 import Data.Typeable
 import Data.Proxy
+import Data.List
 import Text.Printf
+import System.Random
+import Control.Applicative
 
 newtype QC = QC QC.Property
   deriving Typeable
 
--- | Create a 'Test' for a SmallCheck 'SC.Testable' property
+-- | Create a 'Test' for a QuickCheck 'QC.Testable' property
 testProperty :: QC.Testable a => TestName -> a -> TestTree
 testProperty name prop = singleTest name $ QC $ QC.property prop
 
@@ -39,27 +45,75 @@
 newtype QuickCheckTests = QuickCheckTests Int
   deriving (Num, Ord, Eq, Real, Enum, Integral, Typeable)
 
+-- | Replay a previous test using a replay token
+newtype QuickCheckReplay = QuickCheckReplay (Maybe (StdGen, Int))
+  deriving (Typeable)
+
+-- | Size of the biggest test cases
+newtype QuickCheckMaxSize = QuickCheckMaxSize Int
+  deriving (Num, Ord, Eq, Real, Enum, Integral, Typeable)
+
+-- | Maximum number of of discarded tests per successful test before giving up.
+newtype QuickCheckMaxRatio = QuickCheckMaxRatio Int
+  deriving (Num, Ord, Eq, Real, Enum, Integral, Typeable)
+
 instance IsOption QuickCheckTests where
   defaultValue = 100
   parseValue = fmap QuickCheckTests . safeRead
   optionName = return "quickcheck-tests"
   optionHelp = return "Number of test cases for QuickCheck to generate"
 
+instance IsOption QuickCheckReplay where
+  defaultValue = QuickCheckReplay Nothing
+  parseValue v = QuickCheckReplay . Just <$> replay
+    -- Reads a replay token in the form "{size} {seed}"
+    where replay = (,) <$> safeRead (intercalate " " seed) <*> safeRead (concat size)
+          (size, seed) = splitAt 1 $ words v
+  optionName = return "quickcheck-replay"
+  optionHelp = return "Replay token to use for replaying a previous test run"
+
+instance IsOption QuickCheckMaxSize where
+  defaultValue = fromIntegral $ QC.maxSize QC.stdArgs
+  parseValue = fmap QuickCheckMaxSize . safeRead
+  optionName = return "quickcheck-max-size"
+  optionHelp = return "Size of the biggest test cases quickcheck generates"
+
+instance IsOption QuickCheckMaxRatio where
+  defaultValue = fromIntegral $ QC.maxDiscardRatio QC.stdArgs
+  parseValue = fmap QuickCheckMaxRatio . safeRead
+  optionName = return "quickcheck-max-ratio"
+  optionHelp = return "Maximum number of discared tests per successful test before giving up"
+
 instance IsTest QC where
-  testOptions = return [Option (Proxy :: Proxy QuickCheckTests)]
+  testOptions = return
+    [ Option (Proxy :: Proxy QuickCheckTests)
+    , Option (Proxy :: Proxy QuickCheckReplay)
+    , Option (Proxy :: Proxy QuickCheckMaxSize)
+    , Option (Proxy :: Proxy QuickCheckMaxRatio)
+    ]
 
   run opts (QC prop) yieldProgress = do
     let
-      QuickCheckTests nTests = lookupOption opts
-      args = QC.stdArgs { QC.chatty = False, QC.maxSuccess = nTests }
+      QuickCheckTests    nTests   = lookupOption opts
+      QuickCheckReplay   replay   = lookupOption opts
+      QuickCheckMaxSize  maxSize  = lookupOption opts
+      QuickCheckMaxRatio maxRatio = lookupOption opts
+      args = QC.stdArgs { QC.chatty = False, QC.maxSuccess = nTests, QC.maxSize = maxSize, QC.replay = replay, QC.maxDiscardRatio = maxRatio}
     -- TODO yield progress
     r <- QC.quickCheckWithResult args prop
-    
+
     return $ case r of
       QC.Success {} ->
         Result
           { resultSuccessful = True
           , resultDescription = printf "%d tests completed" (QC.numTests r)
+          }
+      QC.Failure {} ->
+        Result
+          { resultSuccessful = False
+          , resultDescription =
+              QC.output r ++
+              printf "Use --quickcheck-replay '%d %s' to reproduce." (QC.usedSize r) (show $ QC.usedSeed r)
           }
       _ ->
         Result
diff --git a/tasty-quickcheck.cabal b/tasty-quickcheck.cabal
--- a/tasty-quickcheck.cabal
+++ b/tasty-quickcheck.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                tasty-quickcheck
-version:             0.2
+version:             0.3
 synopsis:            QuickCheck support for the Tasty test framework.
 description:         QuickCheck support for the Tasty test framework.
 license:             MIT
@@ -19,6 +19,6 @@
   exposed-modules:     Test.Tasty.QuickCheck
   -- other-modules:       
   other-extensions:    GeneralizedNewtypeDeriving, DeriveDataTypeable
-  build-depends:       base == 4.*, tasty, QuickCheck == 2.*, tagged
+  build-depends:       base == 4.*, tasty, QuickCheck >= 2.5 && < 3, tagged, random
   -- hs-source-dirs:      
   default-language:    Haskell2010
