diff --git a/QuickCheck.cabal b/QuickCheck.cabal
--- a/QuickCheck.cabal
+++ b/QuickCheck.cabal
@@ -1,5 +1,5 @@
 Name: QuickCheck
-Version: 2.4
+Version: 2.4.0.1
 Cabal-Version: >= 1.2
 Build-type: Simple
 License: BSD3
diff --git a/Test/QuickCheck.hs b/Test/QuickCheck.hs
--- a/Test/QuickCheck.hs
+++ b/Test/QuickCheck.hs
@@ -79,6 +79,7 @@
   , (==>)
   , forAll
   , forAllShrink
+    -- *** Experimental combinators for conjunction and disjunction
   , (.&.)
   , (.&&.)
   , conjoin
diff --git a/Test/QuickCheck/Property.hs b/Test/QuickCheck/Property.hs
--- a/Test/QuickCheck/Property.hs
+++ b/Test/QuickCheck/Property.hs
@@ -352,15 +352,20 @@
     shrinking shrinker x $ \x' ->
       printTestCase (show x') (pf x')
 
+-- | Nondeterministic choice: 'p1' '.&.' 'p2' picks randomly one of
+-- 'p1' and 'p2' to test. If you test the property 100 times it
+-- makes 100 random choices.
 (.&.) :: (Testable prop1, Testable prop2) => prop1 -> prop2 -> Property
 p1 .&. p2 =
   arbitrary >>= \b ->
     printTestCase (if b then "LHS" else "RHS") $
       if b then property p1 else property p2
 
+-- | Conjunction: 'p1' '.&&.' 'p2' passes if both 'p1' and 'p2' pass.
 (.&&.) :: (Testable prop1, Testable prop2) => prop1 -> prop2 -> Property
 p1 .&&. p2 = conjoin [property p1, property p2]
 
+-- | Take the conjunction of several properties.
 conjoin :: Testable prop => [prop] -> Property
 conjoin ps = 
   do roses <- mapM (fmap unProp . property) ps
@@ -385,9 +390,11 @@
             Just False -> rose2
             Nothing -> rose2
 
+-- | Disjunction: 'p1' '.||.' 'p2' passes unless 'p1' and 'p2' simultaneously fail.
 (.||.) :: (Testable prop1, Testable prop2) => prop1 -> prop2 -> Property
 p1 .||. p2 = disjoin [property p1, property p2]
 
+-- | Take the disjunction of several properties.
 disjoin :: Testable prop => [prop] -> Property
 disjoin ps = 
   do roses <- mapM (fmap unProp . property) ps
