diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -13,8 +13,8 @@
 *.hi
 *.dyn_hi
 *.dyn_o
-tests/test
-tests/should
+test/test
+test/should
 doc/*.html
 doc/*.css
 doc/*.js
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,8 @@
 # License:     3-Clause BSD  (see the file LICENSE)
 # Maintainer:  Rudy Matela <rudy@matela.com.br>
 TESTS = \
-  tests/should \
-  tests/test
+  test/should \
+  test/test
 EGS = \
   eg/minimal \
   eg/should
@@ -19,9 +19,9 @@
 
 all-all: mk/All.o $(TESTS) $(EGS)
 
-test: $(patsubst %,%.test,$(TESTS))
+test: $(patsubst %,%.run,$(TESTS)) test-sdist
 
-%.test: %
+%.run: %
 	./$<
 
 eg: $(EGS)
@@ -35,7 +35,7 @@
 	@echo "use \`cabal install' instead"
 
 test-sdist:
-	./tests/test-sdist
+	./test/sdist
 
 test-via-cabal:
 	cabal test
@@ -76,7 +76,7 @@
 
 # NOTE: (very hacky!) the following target allows parallel compilation (-jN) of
 # eg and tests programs so long as they don't share dependencies _not_ stored
-# in src/ and tests/.  Runnable binaries should depend on mk/toplibs instead of
+# in src/ and test/.  Runnable binaries should depend on mk/toplibs instead of
 # actual Haskell source files
 mk/toplibs: mk/Toplibs.o
 	touch mk/toplibs
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,25 @@
+Changelog for hspec-leancheck
+=============================
+
+
+0.0.3
+-----
+
+* export the `prop` function;
+* export the `Property` type;
+* improvements in Haddock documentation;
+* improve tests of `hspec-leancheck` itself;
+* add this changelog.
+
+
+0.0.2
+-----
+
+* `propertyWith` -> `propertyFor`;
+* improvements in documentation.
+
+
+0.0.1
+-----
+
+1st release on Hackage
diff --git a/hspec-leancheck.cabal b/hspec-leancheck.cabal
--- a/hspec-leancheck.cabal
+++ b/hspec-leancheck.cabal
@@ -1,6 +1,6 @@
 -- Cabal file for hspec-leancheck
 name:                hspec-leancheck
-version:             0.0.2
+version:             0.0.3
 synopsis:            LeanCheck support for the Hspec test framework.
 description:
   LeanCheck support for the Hspec test framework.
@@ -21,6 +21,7 @@
 
 extra-doc-files: README.md
                , TODO.md
+               , changelog.md
 extra-source-files: .gitignore
                   , eg/minimal.hs
                   , eg/should.hs
@@ -33,7 +34,7 @@
                   , mk/Toplibs.hs
                   , stack.yaml
                   , stack-lts-11.yaml
-                  , tests/test-sdist
+                  , test/sdist
                   , .travis.yml
 tested-with: GHC==8.4
            , GHC==8.2
@@ -48,7 +49,7 @@
 source-repository this
   type:           git
   location:       https://github.com/rudymatela/hspec-leancheck
-  tag:            v0.0.2
+  tag:            v0.0.3
 
 library
   exposed-modules:     Test.Hspec.LeanCheck
@@ -59,13 +60,13 @@
 test-suite test
   type:                exitcode-stdio-1.0
   main-is:             test.hs
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, hspec, leancheck, hspec-leancheck
   default-language:    Haskell2010
 
 test-suite should
   type:                exitcode-stdio-1.0
   main-is:             should.hs
-  hs-source-dirs:      tests
+  hs-source-dirs:      test
   build-depends:       base >= 4 && < 5, hspec, leancheck, hspec-leancheck
   default-language:    Haskell2010
diff --git a/mk/depend.mk b/mk/depend.mk
--- a/mk/depend.mk
+++ b/mk/depend.mk
@@ -25,15 +25,15 @@
   mk/toplibs
 src/Test/Hspec/LeanCheck.o: \
   src/Test/Hspec/LeanCheck.hs
-tests/should.o: \
-  tests/should.hs \
+test/should.o: \
+  test/should.hs \
   src/Test/Hspec/LeanCheck.hs
-tests/should: \
-  tests/should.hs \
+test/should: \
+  test/should.hs \
   mk/toplibs
-tests/test.o: \
-  tests/test.hs \
+test/test.o: \
+  test/test.hs \
   src/Test/Hspec/LeanCheck.hs
-tests/test: \
-  tests/test.hs \
+test/test: \
+  test/test.hs \
   mk/toplibs
diff --git a/src/Test/Hspec/LeanCheck.hs b/src/Test/Hspec/LeanCheck.hs
--- a/src/Test/Hspec/LeanCheck.hs
+++ b/src/Test/Hspec/LeanCheck.hs
@@ -48,6 +48,8 @@
 module Test.Hspec.LeanCheck
   ( property
   , propertyFor
+  , prop
+  , Property
   , module Test.LeanCheck
   )
 where
@@ -60,10 +62,19 @@
 import qualified Test.HUnit.Lang as HUnit
 import Data.Maybe (fromMaybe)
 
+-- | A LeanCheck property.  See 'property', 'propertyFor' and 'prop'.
 data Property = Ok
               | Failed String
 
 -- | Like 'property' but allows setting the maximum number of tests.
+--
+-- > spec :: Spec
+-- > spec = do
+-- >   describe "thing" $ do
+-- >    it "is so and so" $ propertyFor 100 $ \... -> ...
+-- >    it "is like this" $ propertyFor 200 $ \... -> ...
+-- >    it "does a thing" $ propertyFor 300 $ \... -> ...
+-- >    ...
 propertyFor :: Testable a => Int -> a -> Property
 propertyFor m p = case counterExample m p of
   Nothing -> Ok
@@ -81,6 +92,23 @@
 -- >    ...
 property :: Testable a => a -> Property
 property = propertyFor 200
+
+-- | Allows a named LeanCheck 'Testable' property to appear in a Spec.
+--
+-- > prop "does so and so" $ ...
+--
+-- is a shortcut for
+--
+-- > it "does so an so" $ property $ ...
+--
+-- > spec :: Spec
+-- > spec = do
+-- >   describe "thing" $ do
+-- >    prop "is so and so" $ \x... -> ...
+-- >    prop "is like this" $ \y... -> ...
+-- >    ...
+prop :: Testable a => String -> a -> Spec
+prop s = it s . property
 
 instance Example Property where
   evaluateExample p _ _ _ = return . Result ""
diff --git a/test/sdist b/test/sdist
new file mode 100644
--- /dev/null
+++ b/test/sdist
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+# test/sdist: tests the package generated by "cabal sdist".
+#
+# Copyright (c) 2015-2018 Rudy Matela.
+# Distributed under the 3-Clause BSD licence.
+pkgver=` cat *.cabal | grep "^version:" | sed -e "s/version: *//"`
+pkgname=`cat *.cabal | grep "^name:"    | sed -e "s/name: *//"`
+pkg=$pkgname-$pkgver
+set -x
+cabal sdist &&
+cd dist &&
+if [ -d ../.git ]
+then
+	# on git repo, test if files are the same
+	git -C .. ls-files                                      | sort > ls-git   &&
+	tar -tf $pkg.tar.gz | grep -v "/$" | sed -e "s,$pkg/,," | sort > ls-cabal &&
+	diff -rud ls-git ls-cabal &&
+	rm -f ls-git ls-cabal
+else
+	# outside of git repo, test build
+	rm -rf $pkg/ &&
+	tar -xzf $pkg.tar.gz &&
+	cd $pkg/ &&
+	cabal configure --enable-tests --enable-benchmarks &&
+	cabal build &&
+	cabal test
+fi
diff --git a/test/should.hs b/test/should.hs
new file mode 100644
--- /dev/null
+++ b/test/should.hs
@@ -0,0 +1,20 @@
+-- Copyright (c) 2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+{-# LANGUAGE CPP #-}
+import Test.Hspec
+import Test.Hspec.LeanCheck as LC
+
+import Data.List (sort)
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = do
+  describe "sort" $ do
+    it "is idempotent" $
+      LC.property $ \xs -> sort (sort xs :: [Int]) `shouldBe` sort xs
+    it "preserves length" $
+      LC.property $ \xs -> length (sort xs :: [Int]) `shouldBe` length xs
+    it "preserves membership" $
+      LC.property $ \x xs -> (x `elem` (sort xs :: [Int])) `shouldBe` (x `elem` xs)
diff --git a/test/test.hs b/test/test.hs
new file mode 100644
--- /dev/null
+++ b/test/test.hs
@@ -0,0 +1,33 @@
+-- Copyright (c) 2018 Rudy Matela.
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+{-# LANGUAGE CPP #-}
+import Test.Hspec
+import Test.Hspec.LeanCheck as LC
+
+import Data.List (sort)
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = do
+  describe "sort" $ do
+    it "is idempotent" $
+      LC.property $ \xs -> sort (sort xs :: [Int]) == sort xs
+    it "preserves length" $
+      LC.property $ \xs -> length (sort xs :: [Int]) == length xs
+    it "preserves membership" $
+      LC.property $ \x xs -> (x `elem` (sort xs :: [Int])) == (x `elem` xs)
+
+  describe "sort (tested by propertyFor)" $ do
+    it "is idempotent" $
+      LC.propertyFor 2000 $ \xs -> sort (sort xs :: [Int]) == sort xs
+    it "preserves length" $
+      LC.propertyFor 2000 $ \xs -> length (sort xs :: [Int]) == length xs
+    it "preserves membership" $
+      LC.propertyFor 2000 $ \x xs -> (x `elem` (sort xs :: [Int])) == (x `elem` xs)
+
+  describe "sort (tested by prop)" $ do
+    prop "idempotent" $ \xs   ->       sort (sort xs :: [Int]) == sort xs
+    prop "== length"  $ \xs   ->     length (sort xs :: [Int]) == length xs
+    prop "== `elem`"  $ \x xs -> (x `elem` (sort xs :: [Int])) == (x `elem` xs)
diff --git a/tests/should.hs b/tests/should.hs
deleted file mode 100644
--- a/tests/should.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- Copyright (c) 2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-{-# LANGUAGE CPP #-}
-import Test.Hspec
-import Test.Hspec.LeanCheck as LC
-
-import Data.List (sort)
-
-main :: IO ()
-main = hspec spec
-
-spec :: Spec
-spec = do
-  describe "sort" $ do
-    it "is idempotent" $
-      LC.property $ \xs -> sort (sort xs :: [Int]) `shouldBe` sort xs
-    it "preserves length" $
-      LC.property $ \xs -> length (sort xs :: [Int]) `shouldBe` length xs
-    it "preserves membership" $
-      LC.property $ \x xs -> (x `elem` (sort xs :: [Int])) `shouldBe` (x `elem` xs)
diff --git a/tests/test-sdist b/tests/test-sdist
deleted file mode 100644
--- a/tests/test-sdist
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-#
-# test-sdist: tests the package generated by "cabal sdist".
-#
-# Copyright (c) 2015-2018 Rudy Matela.
-# Distributed under the 3-Clause BSD licence.
-pkgver=` cat *.cabal | grep "^version:" | sed -e "s/version: *//"`
-pkgname=`cat *.cabal | grep "^name:"    | sed -e "s/name: *//"`
-pkg=$pkgname-$pkgver
-set -x
-cabal sdist &&
-cd dist &&
-if [ -d ../.git ]
-then
-	# on git repo, test if files are the same
-	git -C .. ls-files                                      | sort > ls-git   &&
-	tar -tf $pkg.tar.gz | grep -v "/$" | sed -e "s,$pkg/,," | sort > ls-cabal &&
-	diff -rud ls-git ls-cabal &&
-	rm -f ls-git ls-cabal
-else
-	# outside of git repo, test build
-	rm -rf $pkg/ &&
-	tar -xzf $pkg.tar.gz &&
-	cd $pkg/ &&
-	cabal configure --enable-tests --enable-benchmarks &&
-	cabal build &&
-	cabal test
-fi
diff --git a/tests/test.hs b/tests/test.hs
deleted file mode 100644
--- a/tests/test.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- Copyright (c) 2018 Rudy Matela.
--- Distributed under the 3-Clause BSD licence (see the file LICENSE).
-{-# LANGUAGE CPP #-}
-import Test.Hspec
-import Test.Hspec.LeanCheck as LC
-
-import Data.List (sort)
-
-main :: IO ()
-main = hspec spec
-
-spec :: Spec
-spec = do
-  describe "sort" $ do
-    it "is idempotent" $
-      LC.property $ \xs -> sort (sort xs :: [Int]) == sort xs
-    it "preserves length" $
-      LC.property $ \xs -> length (sort xs :: [Int]) == length xs
-    it "preserves membership" $
-      LC.property $ \x xs -> (x `elem` (sort xs :: [Int])) == (x `elem` xs)
