diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,86 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog] and this project adheres to
+[Semantic Versioning].
+
+[Keep a Changelog]: http://keepachangelog.com/
+[Semantic Versioning]: http://semver.org/
+
+# 2.0.2 [2017-04-13]
+
+### Added
+- Change log is in `extra-source-files` now.
+- [#96]: README is in `extra-source-files` now.
+
+### Fixed
+- [#88]: stylish-haskell automated checking.
+
+[#88]: https://github.com/lwm/tasty-discover/pull/88
+[#96]: https://github.com/lwm/tasty-discover/pull/96
+
+## 2.0.1 [2017-03-18]
+
+### Fixed
+- [#86]: Flaky test comparison.
+
+[#86]: https://github.com/lwm/tasty-discover/pull/86
+
+### Removed
+- [#83]: The `Test.Tasty.Type` module.
+
+[#83]: https://github.com/lwm/tasty-discover/pull/83
+
+## 2.0.0 [2017-03-15]
+
+### Added
+- Use hpack format.
+- Use generator style test discovery from tasty-auto.
+- New configuration options: debug, ingredients and module name.
+- Unit tests for all functionality.
+
+### Fixed
+- Re-license to MIT.
+
+### Removed
+- RTD documentation.
+- TemplateHaskell dependency
+- Example project and integration test project.
+
+### Changed
+- Move all tests into test folder.
+
+## 1.1.0 [2017-01-19]
+
+### Added
+- `--ignore-module` configuration option.
+
+## 1.0.1 [2017-11-13]
+
+### Added
+- Cabal testing on Travis CI.
+- Documentation testing on Travis CI.
+
+### Fixed
+- Include missing `extra-source-files`.
+- Slim down LICENSE.md and mark as GPL-3 in Cabal file.
+
+## 1.0.0 [2016-11-04]
+
+### Added
+- Documentation to RTD.
+- Release on Hackage and Stackage.
+
+## 0.0.3 [2016-09-20]
+
+### Added
+- `--no-module-suffix` configuration option.
+
+## 0.0.2 [2016-02-20]
+
+### Added
+- `--module-suffix` configuration option.
+
+## 0.0.1 [2016-02-13]
+- tasty-discover initial release.
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2016 Luke Murphy
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
--- a/LICENSE.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2016 Luke Murphy
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,113 @@
+[![Build Status](https://travis-ci.org/lwm/tasty-discover.svg?branch=master)](https://travis-ci.org/lwm/tasty-discover)
+[![Hackage Status](https://img.shields.io/badge/Hackage-2.0.1-brightgreen.svg)](http://hackage.haskell.org/package/tasty-discover)
+[![Stackage Status](https://img.shields.io/badge/Stackage-2.0.1-brightgreen.svg)](https://www.stackage.org/package/tasty-discover/)
+[![GitHub license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://raw.githubusercontent.com/lwm/tasty-discover/master/LICENSE)
+
+# tasty-discover
+
+Automatic test discovery and runner for the [tasty framework].
+
+[tasty framework]: https://github.com/feuerbach/tasty
+
+# Getting Started
+
+![Usage GIF](http://i.imgur.com/gpdHc6x.gif)
+
+5 steps to tasty test discovery satori:
+  - Create a `Tasty.hs` in the `hs-source-dirs` of your test suite.
+  - Set your test suite `main-is` to the `Tasty.hs`.
+  - Create test modules in files with suffix `*Test.hs` or `*Spec.hs`.
+  - Write your tests with the following prefixes:
+    - `prop_`: [QuickCheck](http://hackage.haskell.org/package/tasty-quickcheck) properties.
+    - `scprop_`: [SmallCheck](http://hackage.haskell.org/package/tasty-smallcheck) properties.
+    - `case_`: [HUnit](http://hackage.haskell.org/package/tasty-hunit) test cases.
+    - `spec_`: [Hspec](http://hackage.haskell.org/package/tasty-hspec) specifications.
+    - `test_`: [Tasty](http://hackage.haskell.org/package/tasty) TestTrees.
+
+# Examples
+
+``` haskell
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module ExampleTest where
+
+import Test.Tasty
+import Test.Tasty.HUnit
+import Test.Tasty.Hspec
+import Test.Tasty.QuickCheck
+
+-- HUnit test case
+case_listCompare :: IO ()
+case_listCompare = [1, 2, 3] `compare` [1,2] @?= GT
+
+-- QuickCheck property
+prop_additionCommutative :: Int -> Int -> Bool
+prop_additionCommutative a b = a + b == b + a
+
+-- SmallSheck property
+scprop_sortReverse :: [Int] -> Bool
+scprop_sortReverse list = sort list == sort (reverse list)
+
+-- Hspec specification
+spec_prelude :: Spec
+spec_prelude = do
+  describe "Prelude.head" $ do
+    it "returns the first element of a list" $ do
+      head [23 ..] `shouldBe` (23 :: Int)
+
+-- Tasty TestTree
+test_multiplication :: [TestTree]
+test_multiplication = [testProperty "One is identity" $ \(a :: Int) -> a * 1 == a]
+
+-- Tasty IO TestTree
+test_generateTree :: IO TestTree
+test_generateTree = do
+  input <- pure "Some input"
+  pure $ testCase input $ pure ()
+
+-- Tasty IO [TestTree]
+test_generateTrees :: IO [TestTree]
+test_generateTrees = do
+  inputs <- pure ["First input", "Second input"]
+  pure $ map (\s -> testCase s $ pure ()) inputs
+```
+
+# Configuration
+
+Pass configuration options within your `Tasty.hs` like so:
+
+``` haskell
+{-#
+ OPTIONS_GHC -F -pgmF tasty-discover
+ -optF <OPTION>
+ -optF <OPTION>
+#-}
+```
+
+## No Arguments
+Example: `{-# OPTIONS_GHC -F -pgmF tasty-discover -optF --debug #-}`
+
+  - `--no-module-suffix`: Collect all test modules, regardless of module suffix.
+  - `--debug`: Output the contents of the generated module while testing.
+
+## With Arguments
+Example: `{-# OPTIONS_GHC -F -pgmF tasty-discover -optF --moduleSuffix=FooBar #-}`
+
+  - `--module-suffix`: Which test module suffix you wish to have discovered.
+  - `--generated-module`: The name of the generated test module.
+  - `--ignore-module`: Which test modules to ignore from discovery.
+  - `--ingredient`: Tasty ingredients to add to your test runner.
+
+# Change Log
+See the [Change log] for the latest changes.
+
+[Change log]: https://github.com/lwm/tasty-discover/blob/master/CHANGELOG.md
+
+# Contributing
+All contributions welcome!
+
+# Acknowledgements
+Thanks to [hspec-discover] and [tasty-auto] for making this possible.
+
+[hspec-discover]: https://hspec.github.io/hspec-discover.html
+[tasty-auto]: https://github.com/minad/tasty-auto
diff --git a/executable/Main.hs b/executable/Main.hs
--- a/executable/Main.hs
+++ b/executable/Main.hs
@@ -1,13 +1,13 @@
 -- | Main executable module.
 module Main where
 
-import Control.Monad (when)
-import Data.Maybe (fromMaybe)
-import Test.Tasty.Config (Config(..), parseConfig)
-import Test.Tasty.Discover (findTests, generateTestDriver)
-import System.Environment (getArgs, getProgName)
-import System.Exit (exitFailure)
-import System.IO (hPutStrLn, stderr)
+import           Control.Monad       (when)
+import           Data.Maybe          (fromMaybe)
+import           System.Environment  (getArgs, getProgName)
+import           System.Exit         (exitFailure)
+import           System.IO           (hPutStrLn, stderr)
+import           Test.Tasty.Config   (Config (..), parseConfig)
+import           Test.Tasty.Discover (findTests, generateTestDriver)
 
 -- | Main function.
 main :: IO ()
diff --git a/library/Test/Tasty/Config.hs b/library/Test/Tasty/Config.hs
--- a/library/Test/Tasty/Config.hs
+++ b/library/Test/Tasty/Config.hs
@@ -5,9 +5,10 @@
   , defaultConfig
   ) where
 
-import System.Console.GetOpt (ArgDescr(ReqArg, NoArg) , OptDescr(Option),
-                              ArgOrder(Permute), getOpt)
-import Data.Maybe (isJust)
+import           Data.Maybe            (isJust)
+import           System.Console.GetOpt (ArgDescr (NoArg, ReqArg),
+                                        ArgOrder (Permute), OptDescr (Option),
+                                        getOpt)
 
 type Ingredient = String
 
diff --git a/library/Test/Tasty/Discover.hs b/library/Test/Tasty/Discover.hs
--- a/library/Test/Tasty/Discover.hs
+++ b/library/Test/Tasty/Discover.hs
@@ -1,13 +1,14 @@
 -- | Automatic test discovery and runner for the tasty framework.
 module Test.Tasty.Discover where
 
-import Data.List (isPrefixOf, isSuffixOf, nub, intercalate, dropWhileEnd)
-import System.Directory (getDirectoryContents, doesDirectoryExist)
-import Data.Traversable (for)
-import System.FilePath ((</>), takeDirectory)
-import Test.Tasty.Generator (Generator(..), Test(..), mkTest,
-                             generators, showSetup, getGenerators)
-import Test.Tasty.Config (Config(..))
+import           Data.List            (dropWhileEnd, intercalate, isPrefixOf,
+                                       isSuffixOf, nub)
+import           Data.Traversable     (for)
+import           System.Directory     (doesDirectoryExist, getDirectoryContents)
+import           System.FilePath      (takeDirectory, (</>))
+import           Test.Tasty.Config    (Config (..))
+import           Test.Tasty.Generator (Generator (..), Test (..), generators,
+                                       getGenerators, mkTest, showSetup)
 
 generateTestDriver :: String -> [String] -> FilePath -> [Test] -> String
 generateTestDriver modname is src tests =
@@ -86,7 +87,7 @@
   where
     suffixes = case suffix of
       Just suffix' -> [suffix']
-      Nothing -> ["Spec", "Test"]
+      Nothing      -> ["Spec", "Test"]
 
 showImports :: [String] -> String
 showImports mods = unlines $ nub $ map (\m -> "import qualified " ++ m ++ "\n") mods
diff --git a/library/Test/Tasty/Generator.hs b/library/Test/Tasty/Generator.hs
--- a/library/Test/Tasty/Generator.hs
+++ b/library/Test/Tasty/Generator.hs
@@ -8,10 +8,10 @@
   , mkTest,
   ) where
 
-import Data.List (find, isPrefixOf, groupBy, sortOn)
-import Data.Function (on)
-import Data.Maybe (fromJust)
-import System.FilePath (pathSeparator, dropExtension)
+import           Data.Function   (on)
+import           Data.List       (find, groupBy, isPrefixOf, sortOn)
+import           Data.Maybe      (fromJust)
+import           System.FilePath (dropExtension, pathSeparator)
 
 data Test = Test
   { testModule   :: String
@@ -23,10 +23,10 @@
   where chooser c1 c2 = map $ \c3 -> if c3 == c1 then c2 else c3
 
 data Generator = Generator
-  { generatorPrefix  :: String
-  , generatorImport  :: String
-  , generatorClass   :: String
-  , generatorSetup   :: Test -> String
+  { generatorPrefix :: String
+  , generatorImport :: String
+  , generatorClass  :: String
+  , generatorSetup  :: Test -> String
   }
 
 qualifyFunction :: Test -> String
diff --git a/tasty-discover.cabal b/tasty-discover.cabal
--- a/tasty-discover.cabal
+++ b/tasty-discover.cabal
@@ -3,20 +3,24 @@
 -- see: https://github.com/sol/hpack
 
 name:           tasty-discover
-version:        2.0.1
+version:        2.0.2
 synopsis:       Test discovery for the tasty framework.
-description:    Test discovery for the tasty framework.
+description:    Prefix your test case names and tasty-discover will discover, collect and run them. All popular test libraries are covered. Configure once and then just write your tests. Avoid forgetting to add test modules to your Cabal/Hpack files. Tasty ingredients are included along with various configuration options for different use cases. Please see the `README.md` below for how to get started.
 category:       Testing
 stability:      Experimental
 homepage:       https://github.com/lwm/tasty-discover#readme
 bug-reports:    https://github.com/lwm/tasty-discover/issues
-author:         Luke Murphy <lukewm@riseup.net>
+author:         Luke Murphy
 maintainer:     Luke Murphy <lukewm@riseup.net>
 copyright:      2016 Luke Murphy
 license:        MIT
-license-file:   LICENSE.md
+license-file:   LICENSE
 build-type:     Simple
 cabal-version:  >= 1.10
+
+extra-source-files:
+    CHANGELOG.md
+    README.md
 
 source-repository head
   type: git
diff --git a/test/ConfigTest.hs b/test/ConfigTest.hs
--- a/test/ConfigTest.hs
+++ b/test/ConfigTest.hs
@@ -1,10 +1,10 @@
 module ConfigTest where
 
-import Data.List (isInfixOf)
-import Test.Tasty.Discover (findTests, generateTestDriver)
-import Test.Tasty.HUnit
-import Test.Tasty.Config
-import Test.Tasty.Generator (mkTest)
+import           Data.List            (isInfixOf)
+import           Test.Tasty.Config
+import           Test.Tasty.Discover  (findTests, generateTestDriver)
+import           Test.Tasty.Generator (mkTest)
+import           Test.Tasty.HUnit
 
 case_noModuleSuffixEmptyList :: IO ()
 case_noModuleSuffixEmptyList = do
@@ -23,9 +23,9 @@
 case_noModuleSuffix :: IO ()
 case_noModuleSuffix  = do
   actual1 <- findTests "test/SubMod/" defaultConfig
-  actual1 @?= [mkTest "PropTest" "prop_addition_is_associative"]
+  actual1 @?= [mkTest "PropTest" "prop_additionAssociative"]
 
   actual2 <- findTests "test/SubMod/" (defaultConfig { noModuleSuffix = True })
-  let expected = [ mkTest "FooBaz" "prop_addition_is_commutative"
-                 , mkTest "PropTest" "prop_addition_is_associative" ]
+  let expected = [ mkTest "FooBaz" "prop_additionCommutative"
+                 , mkTest "PropTest" "prop_additionAssociative" ]
   assertBool "" $ all (`elem` expected) actual2
diff --git a/test/DiscoverTest.hs b/test/DiscoverTest.hs
--- a/test/DiscoverTest.hs
+++ b/test/DiscoverTest.hs
@@ -2,17 +2,17 @@
 
 module DiscoverTest where
 
-import Data.List
-import Test.Tasty
-import Test.Tasty.HUnit
-import Test.Tasty.Hspec
-import Test.Tasty.QuickCheck
+import           Data.List
+import           Test.Tasty
+import           Test.Tasty.Hspec
+import           Test.Tasty.HUnit
+import           Test.Tasty.QuickCheck
 
-case_list_comparison_with_different_length :: IO ()
-case_list_comparison_with_different_length = [1 :: Int, 2, 3] `compare` [1,2] @?= GT
+case_listCompare :: IO ()
+case_listCompare = [1 :: Int, 2, 3] `compare` [1,2] @?= GT
 
-prop_addition_is_commutative :: Int -> Int -> Bool
-prop_addition_is_commutative a b = a + b == b + a
+prop_additionCommutative :: Int -> Int -> Bool
+prop_additionCommutative a b = a + b == b + a
 
 scprop_sortReverse :: [Int] -> Bool
 scprop_sortReverse list = sort list == sort (reverse list)
@@ -32,12 +32,12 @@
   , testProperty "One is identity" $ \(a :: Int) -> a == a
   ]
 
-test_generate_tree :: IO TestTree
-test_generate_tree = do
+test_generateTree :: IO TestTree
+test_generateTree = do
   input <- pure "Some input"
   pure $ testCase input $ pure ()
 
-test_generate_Trees :: IO [TestTree]
-test_generate_Trees = do
+test_generateTrees :: IO [TestTree]
+test_generateTrees = do
   inputs <- pure ["First input", "Second input"]
   pure $ map (\s -> testCase s $ pure ()) inputs
diff --git a/test/SubMod/FooBaz.hs b/test/SubMod/FooBaz.hs
--- a/test/SubMod/FooBaz.hs
+++ b/test/SubMod/FooBaz.hs
@@ -1,4 +1,4 @@
 module SubMod.FooBaz where
 
-prop_addition_is_commutative :: Int -> Int -> Bool
-prop_addition_is_commutative a b = a + b == b + a
+prop_additionCommutative :: Int -> Int -> Bool
+prop_additionCommutative a b = a + b == b + a
diff --git a/test/SubMod/PropTest.hs b/test/SubMod/PropTest.hs
--- a/test/SubMod/PropTest.hs
+++ b/test/SubMod/PropTest.hs
@@ -1,4 +1,4 @@
 module SubMod.PropTest where
 
-prop_addition_is_associative :: Int -> Int -> Int -> Bool
-prop_addition_is_associative a b c = (a + b) + c == a + (b + c)
+prop_additionAssociative :: Int -> Int -> Int -> Bool
+prop_additionAssociative a b c = (a + b) + c == a + (b + c)
