diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,11 @@
 Changes
 =======
 
+Version 0.6.2
+-----------
+* Derive Typeable Property instance
+* Add smallCheckPure
+
 Version 0.6.1
 -----------
 
diff --git a/Test/SmallCheck/Drivers.hs b/Test/SmallCheck/Drivers.hs
--- a/Test/SmallCheck/Drivers.hs
+++ b/Test/SmallCheck/Drivers.hs
@@ -8,7 +8,7 @@
 -- Functions to run SmallCheck tests.
 --------------------------------------------------------------------
 module Test.SmallCheck.Drivers (
-  smallCheck, smallCheckI, depthCheck
+  smallCheck, smallCheckI, depthCheck, smallCheckPure
   ) where
 
 import System.IO (stdout, hFlush)
@@ -89,3 +89,19 @@
              hFlush stdout )
   where
   n' = show n
+
+-- | A pure analog of 'smallCheck'.
+--
+-- If a counterexample is found, it is returned.
+--
+-- Otherwise, a tuple of two numbers is returned, where the first number is the
+-- number of all test cases, and the second number is the number of test cases
+-- that did not satisfy the precondition.
+smallCheckPure :: Testable a => Depth -> a -> Either [String] (Integer, Integer)
+smallCheckPure d a = (foldr step Right $ concatMap (test a) [0..d]) (0,0)
+  where
+    step testRes rest (n, x) = n `seq` x `seq`
+      case result testRes of
+        Fail -> Left $ arguments testRes
+        Pass ->          rest (n+1, x)
+        Inappropriate -> rest (n+1, x+1)
diff --git a/Test/SmallCheck/Property.hs b/Test/SmallCheck/Property.hs
--- a/Test/SmallCheck/Property.hs
+++ b/Test/SmallCheck/Property.hs
@@ -7,6 +7,7 @@
 --
 -- Properties and tools to construct them.
 --------------------------------------------------------------------
+{-# LANGUAGE DeriveDataTypeable #-}
 module Test.SmallCheck.Property (
   -- * Basic definitions
   TestCase(..),
@@ -29,6 +30,7 @@
   ) where
 
 import Test.SmallCheck.Series
+import Data.Typeable
 
 data TestResult
     = Pass
@@ -40,6 +42,7 @@
 
 -- | Wrapper type for 'Testable's
 newtype Property = Property (Depth -> [TestCase])
+  deriving Typeable
 
 -- | Wrap a 'Testable' into a 'Property'
 property :: Testable a => a -> Property
diff --git a/smallcheck.cabal b/smallcheck.cabal
--- a/smallcheck.cabal
+++ b/smallcheck.cabal
@@ -1,5 +1,5 @@
 Name:          smallcheck
-Version:       0.6.1
+Version:       0.6.2
 Cabal-Version: >= 1.6
 License:       BSD3
 License-File:  LICENSE
@@ -39,7 +39,7 @@
 Source-repository this
   type:     git
   location: git://github.com/feuerbach/smallcheck.git
-  tag:      v0.6.1
+  tag:      v0.6.2
 
 Library
 
