diff --git a/.ghci b/.ghci
new file mode 100644
--- /dev/null
+++ b/.ghci
@@ -0,0 +1,1 @@
+:set -isrc-lib:src-exe:src-test:dist/build/autogen -optP-include -optPdist/build/autogen/cabal_macros.h
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -1,29 +1,32 @@
-# **FishFood**.
+# **FishFood**
 
-This is **FishFood**, an application which determines the distribution in sizes of the specified files.
+[![Hackage](https://img.shields.io/hackage/v/fishfood.svg)](https://hackage.haskell.org/package/fishfood) [![Build Status](https://travis-ci.org/functionalley/FishFood.svg?branch=master)](https://travis-ci.org/functionalley/FishFood)
 
+This is "**FishFood**", an application which determines the distribution in sizes of the specified files.
+
 ## Installation
 
 It can be built and installed using [Cabal](https://www.haskell.org/cabal/users-guide/installing-packages.html).
 
 ## Documentation
 
-The directory **man/** contains the documentation.
+The directory "**man/**" contains the documentation.
 
 ## License
 
-For information on copying and distributing this package, see the file **LICENSE** in this directory.
+For information on copying and distributing this package, see the file "**LICENSE**" in this directory.
 
 ## Bug-reporting
 
-Bug-reports should be emailed to <fishfood *at* functionalley *dot* eu>.
+Bug-reports should be emailed to <fishfood@functionalley.eu>.
 
 ## Testing
 
 The test-suite can be run using:
-	cabal configure --enable-tests
-	cabal build
-	cabal test --show-details=always
+
+    cabal configure --enable-tests;
+    cabal build;
+    cabal test --show-details=always;
 
 ## Author
 
diff --git a/changelog.Debian b/changelog.Debian
--- a/changelog.Debian
+++ b/changelog.Debian
@@ -2,4 +2,4 @@
 
   * New release.
 
- -- Alistair Ward <fishfood at functionalley dot eu>  Tue, 23 Jul 2013 17:00:00 +0000
+ -- Alistair Ward <fishfood@functionalley.eu>  Tue, 23 Jul 2013 17:00:00 +0000
diff --git a/changelog.markdown b/changelog.markdown
--- a/changelog.markdown
+++ b/changelog.markdown
@@ -1,31 +1,51 @@
-# 2013-07-16 Dr. Alistair Ward <fishfood at functionalley dot eu>
+# 2013-07-16 Dr. Alistair Ward <fishfood@functionalley.eu>
 
 ## 0.0.0.1
-	* First version of the package.
+* First version of the package.
+
 ## 0.0.0.2
-	* Added **man/man1/fishfood.1** & *.spec*-file to the distribution.
+* Added file "**man/man1/fishfood.1**" & *.spec*-file to the distribution.
+
 ## 0.0.1.0
-	* Migrated all but the I/O, from **Main** to a new module **FishFood.Profiler**.
-	* Added module **FishFood.Test**, containing **Test.QuickCheck**-implementation.
-	* Added Command-line options; **--deriveProbabilityMassFunction**, **--binSizeRatio**, **--runQuickChecks**.
+* Migrated all but the I/O, from module "**Main**" to a new module "**FishFood.Profiler**".
+* Added module "**FishFood.Test**", containing **Test.QuickCheck**-implementation.
+* Added Command-line options;
+	+ "**--deriveProbabilityMassFunction**",
+	+ "**--binSizeRatio**",
+	+ "**--runQuickChecks**".
+
 ## 0.0.1.1
-	* Added files to build *.deb* to the *.cabal*-file.
+* Added files to build *.deb* to the *.cabal*-file.
+
 ## 0.0.1.2
-	* Added **--runQuickChecks** to **man/man1/fishfood.1** & corrected typo.
-	* Improved the syntax of **verbosity** in the usage-message.
-	* Tested with **haskell-platform-2013.2.0.0**.
+* Added flag "**--runQuickChecks**" to file "**man/man1/fishfood.1**" & corrected typo.
+* Improved the syntax of flag "**--verbosity**" in the usage-message.
+* Tested with **haskell-platform-2013.2.0.0**.
+
 ## 0.0.1.3
-	* In module **FishFood.Data.File**, replaced `Control.Exception.throw` with `Control.Exception.throwIO`.
-	* Either replaced instances of `(<$>)` with `fmap` to avoid ambiguity between **Control.Applicative** & **Prelude** which (from **base-4.8**) also exports this symbol, or hid the symbol when importing the **Prelude**..
-	* In module **Main**, redirected version-message to stderr.
+* In module "**FishFood.Data.File**", replaced `Control.Exception.throw` with `Control.Exception.throwIO`.
+* Either replaced instances of `(<$>)` with `fmap` to avoid ambiguity between modules "**Control.Applicative**" & "**Prelude**" which (from package "**base-4.8**") also exports this symbol, or hid the symbol when importing the module "**Prelude**".
+* In module "**Main**", redirected version-message to stderr.
+
 ## 0.0.1.4
-	* Added the compiler to the output returned for the command-line option **version**.
-	* In module **FishFood.Data.File.hs**, replaced the use of the package **unix** with the package **directory**, for compatibility with Windows.
+* Added the compiler to the output returned for the command-line option "**--version**".
+* In module "**FishFood.Data.File.hs**", replaced the use of the package "**unix**" with the package "**directory**", for compatibility with **Windows**.
+
 ## 0.0.1.5
-	* Added **Default-language**-specification to the *.cabal*-file.
-	* Added file **README.markdown**.
-	* Converted this file to markdown-format.
-	* Replaced `System.Exit.exitWith System.Exit.ExitSuccess` with `System.Exit.exitSuccess`.
-	* Moved the entry-point to the test-suite from **Main.hs** to **Test.hs**, both to integrate with **cabal** & to minimise the dependencies of the executable.
-	* Partitioned the source-files into **src-lib**, **src-exe**, & **src-test** directories, & referenced them individually from the *.cabal*-file to avoid repeated compilation.
-	* Used **CPP** to control the import of symbols from **Control.Applicative**.
+* Added "**Default-language**"-specification to the *.cabal*-file.
+* Added file "**README.markdown**".
+* Converted this file to markdown-format.
+* Replaced `System.Exit.exitWith System.Exit.ExitSuccess` with `System.Exit.exitSuccess`.
+* Moved the entry-point to the test-suite from module "**Main**" to "**Test**", both to integrate with **cabal** & to minimise the dependencies of the executable.
+* Partitioned the source-files into directories "**src-lib**", "**src-exe**", & "**src-test**", & referenced them individually from the *.cabal*-file to avoid repeated compilation.
+* Used **CPP** to control the import of symbols from **Control.Applicative**.
+
+## 0.0.1.6
+* Corrected the markdown-syntax in this file.
+* Amended to call "**error**" rather than "**Control.Monad.fail**", since the **String**-argument for the latter is discarded in **Monad**-implementations other than **IO**.
+* Uploaded to [GitHub](https://github.com/functionalley/FishFood.git).
+* Simplified file **src-test/Main.hs**.
+* Added file **.travis.yml** to control testing by <https://docs.travis-ci.com>.
+* Added file **.ghci**.
+* Replaced use of module **ToolShed.Defaultable** with **Data.Default**.
+* Tested with **ghc-8.0.1**.
diff --git a/copyright b/copyright
--- a/copyright
+++ b/copyright
@@ -1,5 +1,5 @@
 Author:
-	Dr. Alistair Ward <fishfood at functionalley dot eu>.
+	Dr. Alistair Ward <fishfood@functionalley.eu>.
 
 Copyright:
 	Copyright (C) 2013 Dr. Alistair Ward. All Rights Reserved.
diff --git a/debian/DEBIAN/control b/debian/DEBIAN/control
--- a/debian/DEBIAN/control
+++ b/debian/DEBIAN/control
@@ -1,11 +1,11 @@
 Package:	fishfood
-Version:	0.0.1.5-1
+Version:	0.0.1.6-1
 Section:	utils
 Priority:	optional
 Architecture:	amd64
 Depends:	libc6
 Installed-size:	2082
-Maintainer:	Dr. Alistair Ward <fishfood at functionalley dot eu>
+Maintainer:	Dr. Alistair Ward <fishfood@functionalley.eu>
 Provides:
 Homepage:	http://functionalley.eu
 Description:	Counts the number of files in a set of bins, each of which holds only those files which fall within a specific size-interval.
diff --git a/fishfood.cabal b/fishfood.cabal
--- a/fishfood.cabal
+++ b/fishfood.cabal
@@ -14,7 +14,7 @@
 -- along with FishFood.  If not, see <http://www.gnu.org/licenses/>.
 
 Name:		fishfood
-Version:	0.0.1.5
+Version:	0.0.1.6
 Cabal-version:	>= 1.10
 Copyright:	(C) 2013-2015 Dr. Alistair Ward
 License:	GPL
@@ -25,13 +25,14 @@
 Build-type:	Simple
 Description:	Counts the number of files in a set of bins, each of which holds only those files which fall within a specific size-interval.
 Category:	Utils
-Tested-with:	GHC == 7.4, GHC == 7.6, GHC == 7.8, GHC == 7.10
+Tested-with:	GHC == 7.4, GHC == 7.6, GHC == 7.8, GHC == 7.10.1, GHC == 8.0.1
 Homepage:	http://functionalley.eu
-Maintainer:	mailto <colon> fishfood <at> functionalley <dot> eu
-Bug-reports:	mailto <colon> fishfood <at> functionalley <dot> eu
+Maintainer:	mailto:fishfood@functionalley.eu
+Bug-reports:	mailto:fishfood@functionalley.eu
 
 -- None of these files are needed at run-time.
 Extra-source-files:
+    .ghci
     changelog.markdown
     changelog.Debian
     copyright
@@ -40,6 +41,10 @@
     man/man1/fishfood.1
     README.markdown
 
+source-repository head
+    type:	git
+    location:	https://github.com/functionalley/FishFood
+
 -- Enable using: 'cabal configure -f llvm'.
 flag llvm
     Description:	Whether the 'llvm' compiler-backend has been installed and is required for code-generation.
@@ -61,15 +66,16 @@
         base == 4.*,
         Cabal >= 1.10,
         containers,
+        data-default,
         directory,
         factory >= 0.2.0.5,
         mtl,
-        toolshed >= 0.16
+        toolshed >= 0.17
 
     if impl(ghc >= 7.4.1)
-        GHC-prof-options:	-prof -fprof-auto -fprof-cafs
+        GHC-prof-options:	-fprof-auto -fprof-cafs
     else
-        GHC-prof-options:	-prof -auto-all -caf-all
+        GHC-prof-options:	-auto-all -caf-all
 
     if impl(ghc >= 7.0) && flag(llvm)
         GHC-options:	-fllvm
@@ -83,14 +89,15 @@
     Build-depends:
         base == 4.*,
         Cabal >= 1.10,
+        data-default,
         fishfood,
         mtl,
-        toolshed >= 0.16
+        toolshed >= 0.17
 
     if impl(ghc >= 7.4.1)
-        GHC-prof-options:	-prof -fprof-auto -fprof-cafs
+        GHC-prof-options:	-fprof-auto -fprof-cafs
     else
-        GHC-prof-options:	-prof -auto-all -caf-all
+        GHC-prof-options:	-auto-all -caf-all
 
     if impl(ghc >= 7.0)
         GHC-options:	-rtsopts
@@ -98,7 +105,7 @@
         if flag(llvm)
             GHC-options:	-fllvm
 
-Test-Suite quickCheck
+Test-Suite test
     Default-language:	Haskell2010
     GHC-options:	-Wall -fno-warn-tabs
     Hs-source-dirs:	src-test
@@ -107,9 +114,9 @@
 
 -- Required for 'cabal sdist'.
     Other-modules:
-        FishFood.Test.Data.CommandOptions
-        FishFood.Test.Data.Verbosity
-        FishFood.Test.Profiler
+        FishFood.Test.QuickCheck.Data.CommandOptions
+        FishFood.Test.QuickCheck.Data.Verbosity
+        FishFood.Test.QuickCheck.Profiler
 
     Build-depends:
         base == 4.*,
@@ -118,5 +125,5 @@
         fishfood,
         mtl,
         QuickCheck,
-        toolshed >= 0.16
+        toolshed >= 0.17
 
diff --git a/fishfood.spec b/fishfood.spec
--- a/fishfood.spec
+++ b/fishfood.spec
@@ -21,7 +21,7 @@
 
 Summary:	Calculates file-size frequency-distribution.
 Name:		fishfood
-Version:	0.0.1.5
+Version:	0.0.1.6
 Release:	1
 License:	GPLv3
 # From '/usr/share/doc/packages/rpm/GROUPS'.
@@ -35,7 +35,7 @@
 Counts the number of files in a set of bins, each of which holds only those files which fall within a specific size-interval.
 
 %prep
-# NB: CWD has changed to %_builddir
+# N.B.: CWD has changed to %_builddir
 echo 'package="%package", prefix="%prefix", _builddir="%_builddir", buildroot="%buildroot"'
 (cd $OLDPWD && cabal sdist) && tar -zxf $OLDPWD/dist/%tarBall	# Make a source-distribution & unpack it into the build-directory.
 cd '%package/' && cabal configure --user --prefix='%prefix' --docdir='%_docdir'	# Tell cabal to use the user's personal package-database, to generate an appropriate "Paths" module, & where to place the documentation.
@@ -62,6 +62,6 @@
 %attr(0644, root, root)	%doc	%_mandir/man1/%name.1.gz
 
 %changelog
-* Tue Jul 16 2013	Alistair Ward	<fishfood at functionalley dot eu>	0.0.0.2-1
+* Tue Jul 16 2013	Alistair Ward	<fishfood@functionalley.eu>	0.0.0.2-1
 First cut.
 
diff --git a/man/man1/fishfood.1 b/man/man1/fishfood.1
--- a/man/man1/fishfood.1
+++ b/man/man1/fishfood.1
@@ -136,7 +136,7 @@
 Written by Dr. Alistair Ward.
 .SH BUGS
 .SS "REPORTING BUGS"
-Report bugs to <\fBfishfood\fR \fIat\fR \fBfunctionalley\fR \fIdot\fR \fBeu\fR>.
+Report bugs to <\fBfishfood@functionalley.eu\fR>.
 .SH COPYRIGHT
 Copyright \(co 2013-2015 Dr. Alistair Ward
 .PP
@@ -149,17 +149,21 @@
 .IP \(bu
 Home-page: \fBhttp://functionalley.eu\fR
 .IP \(bu
-.B http://en.wikipedia.org/wiki/Interval_(mathematics)
+.B http://hackage.haskell.org/package/fishfood
 .IP \(bu
-.B http://en.wikipedia.org/wiki/Standard_deviation
+.B https://github.com/functionalley/FishFood
 .IP \(bu
-.B http://en.wikipedia.org/wiki/Frequency_distribution
+.B https://en.wikipedia.org/wiki/Interval_(mathematics)
 .IP \(bu
-.B http://en.wikipedia.org/wiki/Geometric_distribution
+.B https://en.wikipedia.org/wiki/Standard_deviation
 .IP \(bu
-.B http://en.wikipedia.org/wiki/Log-normal_distribution
+.B https://en.wikipedia.org/wiki/Frequency_distribution
 .IP \(bu
-.B http://en.wikipedia.org/wiki/Probability_mass_function
+.B https://en.wikipedia.org/wiki/Geometric_distribution
+.IP \(bu
+.B https://en.wikipedia.org/wiki/Log-normal_distribution
+.IP \(bu
+.B https://en.wikipedia.org/wiki/Probability_mass_function
 .IP \(bu
 Source-documentation is generated by "\fBHaddock\fR", & is available in the distribution.
 .IP \(bu
diff --git a/src-exe/Main.hs b/src-exe/Main.hs
--- a/src-exe/Main.hs
+++ b/src-exe/Main.hs
@@ -31,6 +31,7 @@
 
 import qualified	Control.Monad
 import qualified	Control.Monad.Writer
+import qualified	Data.Default
 import qualified	Data.List
 import qualified	Data.Maybe
 import qualified	Data.Version
@@ -49,7 +50,6 @@
 import qualified	System.IO
 import qualified	System.IO.Error
 import qualified	ToolShed.Data.List
-import qualified	ToolShed.Defaultable
 import qualified	ToolShed.SelfValidate
 
 #if !MIN_VERSION_base(4,8,0)
@@ -94,7 +94,7 @@
 
 	let
 		defaultCommandOptions :: CommandOptions
-		defaultCommandOptions	= ToolShed.Defaultable.defaultValue
+		defaultCommandOptions	= Data.Default.def
 
 		optDescrList :: [G.OptDescr CommandLineAction]
 		optDescrList	= [
@@ -124,7 +124,7 @@
 
 			printVersion, printUsage :: IO CommandOptions
 			printVersion	= System.IO.hPutStrLn System.IO.stderr (
-				Distribution.Text.display packageIdentifier ++ "\n\nCompiled by " ++ show compiler ++ ".\n\nCopyright (C) 2013-2015 " ++ author ++ ".\nThis program comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome to redistribute it under certain conditions.\n\nWritten by " ++ author ++ "."
+				showString (Distribution.Text.display packageIdentifier) . showString "\nCompiled by " . shows compiler . showString ".\nWritten by " . shows author . showString ".\nCopyright (C) 2013-2015 " $ showString author ".\nThis program comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome to redistribute it under certain conditions."
 			 ) >> System.Exit.exitSuccess	where
 				packageIdentifier :: Distribution.Package.PackageIdentifier
 				packageIdentifier	= Distribution.Package.PackageIdentifier {
@@ -142,12 +142,12 @@
 
 	case G.getOpt G.RequireOrder optDescrList args of
 		(commandLineActions, nonOptions, [{-errors-}])	-> do
-			commandOptions	<- Data.List.foldl' (>>=) (return {-to IO-monad-} ToolShed.Defaultable.defaultValue) commandLineActions
+			commandOptions	<- Data.List.foldl' (>>=) (return {-to IO-monad-} Data.Default.def) commandLineActions
 
 			if not $ ToolShed.SelfValidate.isValid commandOptions
-				then fail $ ToolShed.SelfValidate.getFirstError commandOptions
+				then error $ ToolShed.SelfValidate.getFirstError commandOptions
 				else if null nonOptions
-					then fail "zero file-paths specified"
+					then error "zero file-paths specified."
 					else let
 						standardInputProxy	= "-"
 					in do
@@ -164,7 +164,7 @@
 								filePaths	<- (filter (/= standardInputProxy) nonOptions ++) <$> getFilePaths
 
 								if null filePaths
-									then fail "zero file-paths"
+									then error "zero file-paths."
 									else return filePaths
 							else {-real fileNames-} return {-to IO-monad-} nonOptions
 
@@ -172,7 +172,7 @@
 
 						(fileSizeDistribution, statistics)	<- Control.Monad.Writer.runWriter . Profiler.calculateFileSizeDistribution commandOptions <$> mapM Data.File.findSize (Data.List.nub filePaths)
 
-						Control.Monad.when (Data.CommandOptions.getVerbosity commandOptions > ToolShed.Defaultable.defaultValue) $ mapM_ (System.IO.hPutStrLn System.IO.stderr) statistics
+						Control.Monad.when (Data.CommandOptions.getVerbosity commandOptions > Data.Default.def) $ mapM_ (System.IO.hPutStrLn System.IO.stderr) statistics
 
 						putStrLn $ Profiler.formatFileSizeDistribution commandOptions fileSizeDistribution
 		(_, _, errors)	-> System.IO.Error.ioError . System.IO.Error.userError $ concatMap init {-chop-} errors
diff --git a/src-lib/FishFood/Data/CommandOptions.hs b/src-lib/FishFood/Data/CommandOptions.hs
--- a/src-lib/FishFood/Data/CommandOptions.hs
+++ b/src-lib/FishFood/Data/CommandOptions.hs
@@ -1,5 +1,5 @@
 {-
-	Copyright (C) 2013 Dr. Alistair Ward
+	Copyright (C) 2013-2015 Dr. Alistair Ward
 
 	This program is free software: you can redistribute it and/or modify
 	it under the terms of the GNU General Public License as published by
@@ -39,17 +39,17 @@
 		getVerbosity
 	),
 -- * Functions
--- ** Constructors
+-- ** Constructor
 	mkCommandOptions,
 -- ** Mutators
 	setBinSizeIncrement,
 	setBinSizeRatio
 ) where
 
+import qualified	Data.Default
 import qualified	Data.Maybe
 import qualified	Distribution.Verbosity
 import qualified	FishFood.Data.File	as Data.File
-import qualified	ToolShed.Defaultable
 import qualified	ToolShed.SelfValidate
 
 -- | Either an arithmetic size-increase for which there's a default, or a geometric size-ratio.
@@ -63,8 +63,8 @@
 	getVerbosity				:: Distribution.Verbosity.Verbosity	-- ^ The threshold for ancillary information-output.
 } deriving Show
 
-instance ToolShed.Defaultable.Defaultable (CommandOptions ratio)	where
-	defaultValue	= MkCommandOptions {
+instance Data.Default.Default (CommandOptions ratio)	where
+	def = MkCommandOptions {
 		getBinSizeDelta				= Left Nothing,	-- Interpreted as one standard-deviation.
 		getDeriveProbabilityMassFunction	= False,
 		getNDecimalDigits			= 3,
diff --git a/src-lib/FishFood/Data/Verbosity.hs b/src-lib/FishFood/Data/Verbosity.hs
--- a/src-lib/FishFood/Data/Verbosity.hs
+++ b/src-lib/FishFood/Data/Verbosity.hs
@@ -1,6 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 {-
-	Copyright (C) 2013 Dr. Alistair Ward
+	Copyright (C) 2013-2015 Dr. Alistair Ward
 
 	This program is free software: you can redistribute it and/or modify
 	it under the terms of the GNU General Public License as published by
@@ -26,11 +26,11 @@
 	range
 ) where
 
+import qualified	Data.Default
 import qualified	Distribution.Verbosity
-import qualified	ToolShed.Defaultable
 
-instance ToolShed.Defaultable.Defaultable Distribution.Verbosity.Verbosity	where
-	defaultValue	= Distribution.Verbosity.normal
+instance Data.Default.Default Distribution.Verbosity.Verbosity	where
+	def	= Distribution.Verbosity.normal
 
 -- | The constant complete range of values.
 range :: [Distribution.Verbosity.Verbosity]
diff --git a/src-lib/FishFood/Profiler.hs b/src-lib/FishFood/Profiler.hs
--- a/src-lib/FishFood/Profiler.hs
+++ b/src-lib/FishFood/Profiler.hs
@@ -1,5 +1,5 @@
 {-
-	Copyright (C) 2013 Dr. Alistair Ward
+	Copyright (C) 2013-2015 Dr. Alistair Ward
 
 	This program is free software: you can redistribute it and/or modify
 	it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@
 
 import			Control.Arrow((&&&),(***))
 import qualified	Control.Monad.Writer
+import qualified	Data.Default
 import qualified	Data.List
 import qualified	Data.Map
 import qualified	Data.Maybe
@@ -43,7 +44,6 @@
 import qualified	FishFood.Data.File		as Data.File
 import			FishFood.Data.Verbosity()
 import qualified	Text.Printf
-import qualified	ToolShed.Defaultable
 
 -- | Define a type to represent the fractional closed unit-interval.
 type Probability	= Double
@@ -123,7 +123,7 @@
 formatFileSizeDistribution commandOptions	= Data.List.intercalate "\n" . map (
 	\(fileSize, value)	-> fileSize ++ " " ++ value
  ) . (
-	if Data.CommandOptions.getVerbosity commandOptions > ToolShed.Defaultable.defaultValue
+	if Data.CommandOptions.getVerbosity commandOptions > Data.Default.def
 		then (
 			[
 				(
diff --git a/src-test/FishFood/Test/Data/CommandOptions.hs b/src-test/FishFood/Test/Data/CommandOptions.hs
deleted file mode 100644
--- a/src-test/FishFood/Test/Data/CommandOptions.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-
-	Copyright (C) 2013-2015 Dr. Alistair Ward
-
-	This program is free software: you can redistribute it and/or modify
-	it under the terms of the GNU General Public License as published by
-	the Free Software Foundation, either version 3 of the License, or
-	(at your option) any later version.
-
-	This program is distributed in the hope that it will be useful,
-	but WITHOUT ANY WARRANTY; without even the implied warranty of
-	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	GNU General Public License for more details.
-
-	You should have received a copy of the GNU General Public License
-	along with this program.  If not, see <http://www.gnu.org/licenses/>.
--}
-{- |
- [@AUTHOR@]	Dr. Alistair Ward
-
- [@DESCRIPTION@]	Implements 'Test.QuickCheck.Arbitrary' for 'Data.CommandOptions.CommandOptions'.
--}
-
-module FishFood.Test.Data.CommandOptions(
--- * Types
--- ** Type-synonyms
-	CommandOptions
-) where
-
-import qualified	Test.QuickCheck
-import qualified	FishFood.Data.CommandOptions	as Data.CommandOptions
-import			FishFood.Test.Data.Verbosity()
-
-#if !MIN_VERSION_base(4,8,0)
-import	Control.Applicative((<$>), (<*>))
-#endif
-
-instance (
-	Enum				ratio,
-	Fractional			ratio,
-	Ord				ratio,
-	Show				ratio,
-	Test.QuickCheck.Arbitrary	ratio
- ) => Test.QuickCheck.Arbitrary (Data.CommandOptions.CommandOptions ratio)	where
-	arbitrary	= do
-		deriveProbabilityMassFunction	<- Test.QuickCheck.arbitrary
-
-		Data.CommandOptions.mkCommandOptions <$> (
-			either (
-				Left . (succ . abs <$> {-into Maybe-monad-})
-			) (
-				Right . (+ recip 1000000) . succ . abs
-			) <$> Test.QuickCheck.arbitrary {-binSizeDelta-}
-		 ) <*> return {-to Gen-monad-} deriveProbabilityMassFunction <*> (
-			max (
-				if deriveProbabilityMassFunction then 1 else 0
-			) . (
-				`mod` 15 {-maximum permissible-}
-			) <$> Test.QuickCheck.arbitrary {-nDecimalDigits-}
-		 ) <*> Test.QuickCheck.arbitrary {-verbosity-}
-
--- | Defines a concrete type for testing.
-type CommandOptions	= Data.CommandOptions.CommandOptions Double
-
diff --git a/src-test/FishFood/Test/Data/Verbosity.hs b/src-test/FishFood/Test/Data/Verbosity.hs
deleted file mode 100644
--- a/src-test/FishFood/Test/Data/Verbosity.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-
-	Copyright (C) 2013 Dr. Alistair Ward
-
-	This program is free software: you can redistribute it and/or modify
-	it under the terms of the GNU General Public License as published by
-	the Free Software Foundation, either version 3 of the License, or
-	(at your option) any later version.
-
-	This program is distributed in the hope that it will be useful,
-	but WITHOUT ANY WARRANTY; without even the implied warranty of
-	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	GNU General Public License for more details.
-
-	You should have received a copy of the GNU General Public License
-	along with this program.  If not, see <http://www.gnu.org/licenses/>.
--}
-{- |
- [@AUTHOR@]	Dr. Alistair Ward
-
- [@DESCRIPTION@]	Implements 'Test.QuickCheck.Arbitrary' for 'Distribution.Verbosity.Verbosity'.
--}
-
-module FishFood.Test.Data.Verbosity() where
-
-import qualified	Distribution.Verbosity
-import qualified	FishFood.Data.Verbosity	as Data.Verbosity
-import qualified	Test.QuickCheck
-
-instance Test.QuickCheck.Arbitrary Distribution.Verbosity.Verbosity	where
-	arbitrary	= Test.QuickCheck.elements Data.Verbosity.range
diff --git a/src-test/FishFood/Test/Profiler.hs b/src-test/FishFood/Test/Profiler.hs
deleted file mode 100644
--- a/src-test/FishFood/Test/Profiler.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{-
-	Copyright (C) 2013-2015 Dr. Alistair Ward
-
-	This program is free software: you can redistribute it and/or modify
-	it under the terms of the GNU General Public License as published by
-	the Free Software Foundation, either version 3 of the License, or
-	(at your option) any later version.
-
-	This program is distributed in the hope that it will be useful,
-	but WITHOUT ANY WARRANTY; without even the implied warranty of
-	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	GNU General Public License for more details.
-
-	You should have received a copy of the GNU General Public License
-	along with this program.  If not, see <http://www.gnu.org/licenses/>.
--}
-{- |
- [@AUTHOR@]	Dr. Alistair Ward
-
- [@DESCRIPTION@]	Defines /QuickCheck/-properties for 'Profiler'.
--}
-
-module FishFood.Test.Profiler(
--- * Constants
-	results
-) where
-
-import qualified	Control.Monad.Writer
-import qualified	Data.Either
-import qualified	Data.Set
-import qualified	FishFood.Data.CommandOptions		as Data.CommandOptions
-import qualified	FishFood.Data.File			as Data.File
-import qualified	FishFood.Profiler			as Profiler
-import qualified	FishFood.Test.Data.CommandOptions	as Test.Data.CommandOptions
-import qualified	Test.QuickCheck
-import			Test.QuickCheck((==>))
-import qualified	ToolShed.SelfValidate
-
--- | The constant test-results for this data-type.
-results :: IO [Test.QuickCheck.Result]
-results	= mapM Test.QuickCheck.quickCheckResult [prop_calculateProbabilityMassFunction, prop_calculateFileSizeFrequencyDistribution, prop_attendance]	where
-	prop_calculateProbabilityMassFunction, prop_calculateFileSizeFrequencyDistribution, prop_attendance :: Test.Data.CommandOptions.CommandOptions -> [Data.File.FileSize] -> Test.QuickCheck.Property
-	prop_calculateProbabilityMassFunction commandOptions fileSizes	= not (null fileSizes) && ToolShed.SelfValidate.isValid commandOptions' ==> Test.QuickCheck.label "prop_calculateProbabilityMassFunction" . (<= recip 1000000) . (+ negate 1) . sum . Data.Either.rights {-probabilities-} . map Profiler.getValue . fst {-distribution-} . Control.Monad.Writer.runWriter . Profiler.calculateFileSizeDistribution commandOptions' $ map abs fileSizes	where
-		commandOptions'	= commandOptions { Data.CommandOptions.getDeriveProbabilityMassFunction	= True }
-
-	prop_calculateFileSizeFrequencyDistribution commandOptions fileSizes	= not (null fileSizes) && ToolShed.SelfValidate.isValid commandOptions' ==> Test.QuickCheck.label "prop_calculateFileSizeFrequencyDistribution" . (== length fileSizes) . sum . Data.Either.lefts {-frequency-} . map Profiler.getValue . fst {-distribution-} . Control.Monad.Writer.runWriter . Profiler.calculateFileSizeDistribution commandOptions' $ map abs fileSizes	where
-		commandOptions'	= commandOptions { Data.CommandOptions.getDeriveProbabilityMassFunction	= False }
-
-	prop_attendance commandOptions fileSizes	= not (null fileSizes') && ToolShed.SelfValidate.isValid commandOptions' ==> Test.QuickCheck.label "prop_attendance" . (
-		== Data.Set.fromList fileSizes'
-	 ) . Data.Set.fromList . map Profiler.getFileSize . filter (
-		(/= 0) . either fromIntegral id . Profiler.getValue	-- Remove file-sizes which match zero actual files.
-	 ) . fst {-distribution-} . Control.Monad.Writer.runWriter $ Profiler.calculateFileSizeDistribution commandOptions' fileSizes'	where
-		fileSizes'	= map abs fileSizes
-
-		commandOptions' :: Test.Data.CommandOptions.CommandOptions
-		commandOptions'	= Data.CommandOptions.setBinSizeIncrement 1 commandOptions
-
diff --git a/src-test/FishFood/Test/QuickCheck/Data/CommandOptions.hs b/src-test/FishFood/Test/QuickCheck/Data/CommandOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-test/FishFood/Test/QuickCheck/Data/CommandOptions.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-
+	Copyright (C) 2013-2015 Dr. Alistair Ward
+
+	This program is free software: you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation, either version 3 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-}
+{- |
+ [@AUTHOR@]	Dr. Alistair Ward
+
+ [@DESCRIPTION@]	Implements 'Test.QuickCheck.Arbitrary' for 'Data.CommandOptions.CommandOptions'.
+-}
+
+module FishFood.Test.QuickCheck.Data.CommandOptions(
+-- * Types
+-- ** Type-synonyms
+	CommandOptions
+) where
+
+import qualified	Test.QuickCheck
+import qualified	FishFood.Data.CommandOptions	as Data.CommandOptions
+import			FishFood.Test.QuickCheck.Data.Verbosity()
+
+#if !MIN_VERSION_base(4,8,0)
+import	Control.Applicative((<$>), (<*>))
+#endif
+
+instance (
+	Enum				ratio,
+	Fractional			ratio,
+	Ord				ratio,
+	Show				ratio,
+	Test.QuickCheck.Arbitrary	ratio
+ ) => Test.QuickCheck.Arbitrary (Data.CommandOptions.CommandOptions ratio)	where
+	arbitrary	= do
+		deriveProbabilityMassFunction	<- Test.QuickCheck.arbitrary
+
+		Data.CommandOptions.mkCommandOptions <$> (
+			either (
+				Left . (succ . abs <$> {-into Maybe-monad-})
+			) (
+				Right . (+ recip 1000000) . succ . abs
+			) <$> Test.QuickCheck.arbitrary {-binSizeDelta-}
+		 ) <*> return {-to Gen-monad-} deriveProbabilityMassFunction <*> (
+			max (
+				if deriveProbabilityMassFunction then 1 else 0
+			) . (
+				`mod` 15 {-maximum permissible-}
+			) <$> Test.QuickCheck.arbitrary {-nDecimalDigits-}
+		 ) <*> Test.QuickCheck.arbitrary {-verbosity-}
+
+-- | Defines a concrete type for testing.
+type CommandOptions	= Data.CommandOptions.CommandOptions Double
+
diff --git a/src-test/FishFood/Test/QuickCheck/Data/Verbosity.hs b/src-test/FishFood/Test/QuickCheck/Data/Verbosity.hs
new file mode 100644
--- /dev/null
+++ b/src-test/FishFood/Test/QuickCheck/Data/Verbosity.hs
@@ -0,0 +1,31 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-
+	Copyright (C) 2013 Dr. Alistair Ward
+
+	This program is free software: you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation, either version 3 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-}
+{- |
+ [@AUTHOR@]	Dr. Alistair Ward
+
+ [@DESCRIPTION@]	Implements 'Test.QuickCheck.Arbitrary' for 'Distribution.Verbosity.Verbosity'.
+-}
+
+module FishFood.Test.QuickCheck.Data.Verbosity() where
+
+import qualified	Distribution.Verbosity
+import qualified	FishFood.Data.Verbosity	as Data.Verbosity
+import qualified	Test.QuickCheck
+
+instance Test.QuickCheck.Arbitrary Distribution.Verbosity.Verbosity	where
+	arbitrary	= Test.QuickCheck.elements Data.Verbosity.range
diff --git a/src-test/FishFood/Test/QuickCheck/Profiler.hs b/src-test/FishFood/Test/QuickCheck/Profiler.hs
new file mode 100644
--- /dev/null
+++ b/src-test/FishFood/Test/QuickCheck/Profiler.hs
@@ -0,0 +1,58 @@
+{-
+	Copyright (C) 2013-2015 Dr. Alistair Ward
+
+	This program is free software: you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation, either version 3 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-}
+{- |
+ [@AUTHOR@]	Dr. Alistair Ward
+
+ [@DESCRIPTION@]	Defines /QuickCheck/-properties for 'Profiler'.
+-}
+
+module FishFood.Test.QuickCheck.Profiler(
+-- * Constants
+	results
+) where
+
+import qualified	Control.Monad.Writer
+import qualified	Data.Either
+import qualified	Data.Set
+import qualified	FishFood.Data.CommandOptions			as Data.CommandOptions
+import qualified	FishFood.Data.File				as Data.File
+import qualified	FishFood.Profiler				as Profiler
+import qualified	FishFood.Test.QuickCheck.Data.CommandOptions	as Test.QuickCheck.Data.CommandOptions
+import qualified	Test.QuickCheck
+import			Test.QuickCheck((==>))
+import qualified	ToolShed.SelfValidate
+
+-- | The constant test-results for this data-type.
+results :: IO [Test.QuickCheck.Result]
+results	= mapM Test.QuickCheck.quickCheckResult [prop_calculateProbabilityMassFunction, prop_calculateFileSizeFrequencyDistribution, prop_attendance]	where
+	prop_calculateProbabilityMassFunction, prop_calculateFileSizeFrequencyDistribution, prop_attendance :: Test.QuickCheck.Data.CommandOptions.CommandOptions -> [Data.File.FileSize] -> Test.QuickCheck.Property
+	prop_calculateProbabilityMassFunction commandOptions fileSizes	= not (null fileSizes) && ToolShed.SelfValidate.isValid commandOptions' ==> Test.QuickCheck.label "prop_calculateProbabilityMassFunction" . (<= recip 1000000) . (+ negate 1) . sum . Data.Either.rights {-probabilities-} . map Profiler.getValue . fst {-distribution-} . Control.Monad.Writer.runWriter . Profiler.calculateFileSizeDistribution commandOptions' $ map abs fileSizes	where
+		commandOptions'	= commandOptions { Data.CommandOptions.getDeriveProbabilityMassFunction	= True }
+
+	prop_calculateFileSizeFrequencyDistribution commandOptions fileSizes	= not (null fileSizes) && ToolShed.SelfValidate.isValid commandOptions' ==> Test.QuickCheck.label "prop_calculateFileSizeFrequencyDistribution" . (== length fileSizes) . sum . Data.Either.lefts {-frequency-} . map Profiler.getValue . fst {-distribution-} . Control.Monad.Writer.runWriter . Profiler.calculateFileSizeDistribution commandOptions' $ map abs fileSizes	where
+		commandOptions'	= commandOptions { Data.CommandOptions.getDeriveProbabilityMassFunction	= False }
+
+	prop_attendance commandOptions fileSizes	= not (null fileSizes') && ToolShed.SelfValidate.isValid commandOptions' ==> Test.QuickCheck.label "prop_attendance" . (
+		== Data.Set.fromList fileSizes'
+	 ) . Data.Set.fromList . map Profiler.getFileSize . filter (
+		(/= 0) . either fromIntegral id . Profiler.getValue	-- Remove file-sizes which match zero actual files.
+	 ) . fst {-distribution-} . Control.Monad.Writer.runWriter $ Profiler.calculateFileSizeDistribution commandOptions' fileSizes'	where
+		fileSizes'	= map abs fileSizes
+
+		commandOptions' :: Test.QuickCheck.Data.CommandOptions.CommandOptions
+		commandOptions'	= Data.CommandOptions.setBinSizeIncrement 1 commandOptions
+
diff --git a/src-test/Main.hs b/src-test/Main.hs
--- a/src-test/Main.hs
+++ b/src-test/Main.hs
@@ -24,21 +24,16 @@
 
 module Main(main) where
 
-import			Control.Arrow((***))
 import qualified	Control.Monad
-import qualified	FishFood.Test.Profiler	as Test.Profiler
+import qualified	FishFood.Test.QuickCheck.Profiler	as Test.QuickCheck.Profiler
 import qualified	System.Exit
 import qualified	ToolShed.Test.QuickCheck.Result
 
 -- | Entry-point.
 main :: IO ()
 main	= mapM_ (
-	snd {-exit-status-} . (
-		putStrLn . (++ ":") *** (
-			>>= (`Control.Monad.unless` System.Exit.exitFailure) . all ToolShed.Test.QuickCheck.Result.isSuccessful
-		)
-	)
+	(`Control.Monad.unless` System.Exit.exitFailure) . all ToolShed.Test.QuickCheck.Result.isSuccessful =<<
  ) [
-	("Profiler",	Test.Profiler.results)
+	Test.QuickCheck.Profiler.results
  ]
 
