diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Dennis Gosnell (c) 2017
+Copyright Dennis Gosnell (c) 2017-2022
 
 All rights reserved.
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 Highlight
 =========
 
-[![Build Status](https://secure.travis-ci.org/cdepillabout/highlight.svg)](http://travis-ci.org/cdepillabout/highlight)
+[![Build Status](https://github.com/cdepillabout/highlight/workflows/CI/badge.svg)](https://github.com/cdepillabout/highlight/actions)
 [![Hackage](https://img.shields.io/hackage/v/highlight.svg)](https://hackage.haskell.org/package/highlight)
 [![Stackage LTS](http://stackage.org/package/highlight/badge/lts)](http://stackage.org/lts/package/highlight)
 [![Stackage Nightly](http://stackage.org/package/highlight/badge/nightly)](http://stackage.org/nightly/package/highlight)
@@ -19,6 +19,25 @@
 
 ![simple highlighted file](/img/highlight-simple-example.png?raw=true "simple highlighted file")
 
+<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
+**Table of Contents**
+
+- [Highlight](#highlight)
+    - [Uses](#uses)
+        - [`highlight`](#highlight)
+        - [highlight output from `grep`](#highlight-output-from-grep)
+        - [`hrep`](#hrep)
+    - [Installation](#installation)
+    - [Other ways to highlight parts of files](#other-ways-to-highlight-parts-of-files)
+    - [Contributions](#contributions)
+        - [Additional flags](#additional-flags)
+    - [Development](#development)
+        - [Build](#build)
+        - [Test](#test)
+
+<!-- markdown-toc end -->
+
+
 ## Uses
 
 This package installs two binaries, `highlight` and `hrep`.  The following
@@ -64,9 +83,11 @@
 [`stack`](https://docs.haskellstack.org/en/stable/README/):
 
 ```sh
-$ stack install highlight
+$ stack --resolver nightly-2017-07-03 install highlight
 ```
 
+By default, `stack` will install binaries into `~/.local/bin/`.
+
 It should also be possible to use `cabal` to install this package.
 
 ## Other ways to highlight parts of files
@@ -106,3 +127,22 @@
 `highlight` or `hrep`, please feel free to open an issue or PR.  Some
 flags/options will be relatively easy to support, while some may require quite
 a large amount of additional code.
+
+## Development
+
+### Build
+
+`highlight` and `hrep` can be built will the following command.  See the
+[Installation](#installation) section above for information about `stack`.
+
+```sh
+$ stack build
+```
+
+### Test
+
+The tests can be run with the following command:
+
+```sh
+$ stack test
+```
diff --git a/highlight.cabal b/highlight.cabal
--- a/highlight.cabal
+++ b/highlight.cabal
@@ -1,5 +1,5 @@
 name:                highlight
-version:             1.0.0.1
+version:             1.0.0.2
 synopsis:            Command line tool for highlighting parts of files matching a regex.
 description:         Please see <https://github.com/cdepillabout/highlight#readme README.md>.
 homepage:            https://github.com/cdepillabout/highlight
@@ -7,7 +7,7 @@
 license-file:        LICENSE
 author:              Dennis Gosnell
 maintainer:          cdep.illabout@gmail.com
-copyright:           2017 Dennis Gosnell
+copyright:           2017-2022 Dennis Gosnell
 category:            Text
 build-type:          Simple
 extra-source-files:  README.md
@@ -56,7 +56,7 @@
                      , Highlight.Hrep.Run
                      , Highlight.Pipes
                      , Highlight.Util
-  build-depends:       base >= 4.7 && < 5
+  build-depends:       base >= 4.14 && < 5
                      , base-compat >= 0.8
                      , ansi-terminal >= 0.6
                      , bytestring >= 0.9
@@ -103,15 +103,18 @@
   default-language:    Haskell2010
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
 
-test-suite highlight-doctest
-  type:                exitcode-stdio-1.0
-  main-is:             DocTest.hs
-  hs-source-dirs:      test
-  build-depends:       base
-                     , doctest
-                     , QuickCheck
-  default-language:    Haskell2010
-  ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
+-- TODO: The doctests have been disabled because they are not using
+-- cabal-doctest (or one of the other doctest solutions).
+-- I'd like to eventually turn the doctests back on and get them working again.
+-- test-suite highlight-doctest
+--   type:                exitcode-stdio-1.0
+--   main-is:             DocTest.hs
+--   hs-source-dirs:      test
+--   build-depends:       base
+--                      , doctest
+--                      , QuickCheck
+--   default-language:    Haskell2010
+--   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
 
 test-suite highlight-test
   type:                exitcode-stdio-1.0
diff --git a/src/Highlight/Common/Error.hs b/src/Highlight/Common/Error.hs
--- a/src/Highlight/Common/Error.hs
+++ b/src/Highlight/Common/Error.hs
@@ -4,8 +4,6 @@
 import Prelude ()
 import Prelude.Compat
 
-import Data.Monoid ((<>))
-
 import Highlight.Common.Options (RawRegex(RawRegex))
 import Highlight.Util (die)
 
diff --git a/src/Highlight/Common/Monad/Input.hs b/src/Highlight/Common/Monad/Input.hs
--- a/src/Highlight/Common/Monad/Input.hs
+++ b/src/Highlight/Common/Monad/Input.hs
@@ -23,7 +23,7 @@
 import Data.ByteString (ByteString)
 import Data.List (sort)
 import Pipes
-       (Pipe, Producer, Producer', Proxy, (>->), await, each, for, next,
+       (Pipe, Producer, Proxy, (>->), await, each, for, next,
         yield)
 import Pipes.Prelude (toListM)
 import qualified Pipes.Prelude as Pipes
@@ -264,14 +264,18 @@
 -- >>> toListM $ fileListProducer Recursive fileOrigin4
 -- [FileReaderErr (FileSpecifiedByUser "thisdirdoesnotexist") thisdirdoesnotexist: openBinaryFile: does not exist (No such file or directory) (Just ...)]
 fileListProducer
-  :: forall m.
+  :: forall x' x m.
      MonadIO m
   => Recursive
   -> FileOrigin
-  -> Producer' (FileReader Handle) m ()
+  -- -> Producer' (FileReader Handle) m ()
+  -> Proxy x' x () (FileReader Handle) m ()
 fileListProducer recursive = go
   where
-    go :: FileOrigin -> Producer' (FileReader Handle) m ()
+    go
+      :: FileOrigin
+      -- -> Producer' (FileReader Handle) m ()
+      -> Proxy x' x () (FileReader Handle) m ()
     go fileOrigin = do
       let maybeFilePath = getFilePathFromFileOrigin fileOrigin
       case maybeFilePath of
diff --git a/src/Highlight/Common/Options.hs b/src/Highlight/Common/Options.hs
--- a/src/Highlight/Common/Options.hs
+++ b/src/Highlight/Common/Options.hs
@@ -10,7 +10,6 @@
 
 import Control.Applicative (many)
 import Control.Lens (Lens', lens)
-import Data.Monoid ((<>))
 import Data.String (IsString)
 import Options.Applicative
        (Parser, flag, help, long, metavar, short, strArgument)
diff --git a/src/Highlight/Highlight.hs b/src/Highlight/Highlight.hs
--- a/src/Highlight/Highlight.hs
+++ b/src/Highlight/Highlight.hs
@@ -13,7 +13,6 @@
 
 module Highlight.Highlight where
 
-import Data.Monoid ((<>))
 import Options.Applicative
        (InfoMod, ParserInfo, (<**>), execParser, fullDesc, helper,
         info, progDesc)
diff --git a/src/Highlight/Highlight/Options.hs b/src/Highlight/Highlight/Options.hs
--- a/src/Highlight/Highlight/Options.hs
+++ b/src/Highlight/Highlight/Options.hs
@@ -16,7 +16,6 @@
 import Prelude.Compat
 
 import Control.Lens (Lens', lens)
-import Data.Monoid ((<>))
 import Options.Applicative (Parser, flag, help, long, short)
 
 import Highlight.Common.Options
diff --git a/src/Highlight/Highlight/Run.hs b/src/Highlight/Highlight/Run.hs
--- a/src/Highlight/Highlight/Run.hs
+++ b/src/Highlight/Highlight/Run.hs
@@ -12,7 +12,6 @@
 import Control.Monad.State (MonadState)
 import Data.ByteString (ByteString, empty)
 import qualified Data.ByteString.Char8
-import Data.Monoid ((<>))
 import Pipes (Producer)
 import Text.RE.PCRE (RE, (*=~))
 import Text.RE.Replace (replaceAll)
diff --git a/src/Highlight/Hrep.hs b/src/Highlight/Hrep.hs
--- a/src/Highlight/Hrep.hs
+++ b/src/Highlight/Hrep.hs
@@ -1,7 +1,6 @@
 
 module Highlight.Hrep where
 
-import Data.Monoid ((<>))
 import Options.Applicative
        (InfoMod, ParserInfo, (<**>), execParser, fullDesc, helper, info,
         progDesc)
diff --git a/src/Highlight/Hrep/Run.hs b/src/Highlight/Hrep/Run.hs
--- a/src/Highlight/Hrep/Run.hs
+++ b/src/Highlight/Hrep/Run.hs
@@ -10,7 +10,6 @@
 import Control.Exception (IOException)
 import Data.ByteString (ByteString)
 import Data.Maybe (maybeToList)
-import Data.Monoid ((<>))
 import Pipes (Producer)
 import Text.RE.PCRE (RE, (*=~), anyMatches)
 import Text.RE.Replace (replaceAll)
diff --git a/src/Highlight/Util.hs b/src/Highlight/Util.hs
--- a/src/Highlight/Util.hs
+++ b/src/Highlight/Util.hs
@@ -8,7 +8,6 @@
 import Control.Monad.State (MonadState, get, put)
 import Data.ByteString (ByteString)
 import Data.ByteString.Unsafe (unsafePackMallocCStringLen)
-import Data.Semigroup (Semigroup, (<>))
 import Foreign.C (newCStringLen)
 import System.Exit (ExitCode(ExitFailure), exitWith)
 import System.IO (Handle, IOMode(ReadMode), hClose, hIsEOF, openBinaryFile)
diff --git a/test/DocTest.hs b/test/DocTest.hs
deleted file mode 100644
--- a/test/DocTest.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-
-module Main (main) where
-
-import Prelude
-
-import Data.Monoid ((<>))
-import Test.DocTest (doctest)
-
-main :: IO ()
-main = doctest $ ["src/"] <> ghcExtensions
-
-ghcExtensions :: [String]
-ghcExtensions =
-    [
-    --   "-XConstraintKinds"
-    -- , "-XDataKinds"
-    -- , "-XDeriveDataTypeable"
-    -- , "-XDeriveGeneric"
-    -- , "-XEmptyDataDecls"
-    -- , "-XFlexibleContexts"
-    -- , "-XFlexibleInstances"
-    -- , "-XGADTs"
-    -- , "-XGeneralizedNewtypeDeriving"
-    -- , "-XInstanceSigs"
-    -- , "-XMultiParamTypeClasses"
-    -- , "-XNoImplicitPrelude"
-    -- , "-XOverloadedStrings"
-    -- , "-XPolyKinds"
-    -- , "-XRankNTypes"
-    -- , "-XRecordWildCards"
-    -- , "-XScopedTypeVariables"
-    -- , "-XStandaloneDeriving"
-    -- , "-XTupleSections"
-    -- , "-XTypeFamilies"
-    -- , "-XTypeOperators"
-    ]
diff --git a/test/Test/Golden.hs b/test/Test/Golden.hs
--- a/test/Test/Golden.hs
+++ b/test/Test/Golden.hs
@@ -13,7 +13,6 @@
 import Data.ByteString.Lazy (fromStrict)
 import qualified Data.ByteString.Lazy as LByteString
 import Data.Foldable (fold)
-import Data.Monoid ((<>))
 import Pipes (Pipe, Producer, (>->))
 import Pipes.Prelude (mapFoldable, toListM)
 import System.Directory
