diff --git a/doctest/DoctestDriver.hs b/doctest/DoctestDriver.hs
new file mode 100644
--- /dev/null
+++ b/doctest/DoctestDriver.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE CPP #-}
+
+#if MIN_VERSION_GLASGOW_HASKELL(8,4,4,0)
+{-# OPTIONS_GHC -F -pgmF doctest-discover #-}
+#else
+module Main where
+
+import qualified System.IO as IO
+
+main :: IO ()
+main = IO.putStrLn "WARNING: doctest will not run on GHC versions earlier than 8.4.4"
+#endif
diff --git a/hw-streams.cabal b/hw-streams.cabal
--- a/hw-streams.cabal
+++ b/hw-streams.cabal
@@ -1,7 +1,7 @@
 cabal-version:  2.2
 
 name:                   hw-streams
-version:                0.0.0.12
+version:                0.0.1.0
 synopsis:               Primitive functions and data types
 description:            Primitive functions and data types.
 category:               Data
@@ -10,10 +10,10 @@
 bug-reports:            https://github.com/haskell-works/hw-streams/issues
 author:                 John Ky
 maintainer:             newhoggy@gmail.com
-copyright:              2016-2019 John Ky
+copyright:              2016-2020 John Ky
 license:                BSD-3-Clause
 license-file:           LICENSE
-tested-with:            GHC == 8.8.1, GHC == 8.6.5, GHC == 8.4.4, GHC == 8.2.2
+tested-with:            GHC == 8.10.1, GHC == 8.8.3, GHC == 8.6.5, GHC == 8.4.4
 build-type:             Simple
 extra-source-files:     README.md
 
@@ -26,24 +26,25 @@
   manual: False
   default: False
 
-common base                 { build-depends: base                 >= 4.10       && < 5      }
+common base                       { build-depends: base                       >= 4.11       && < 5      }
 
-common bytestring           { build-depends: bytestring           >= 0.9        && < 0.11   }
-common criterion            { build-depends: criterion            >= 1.2        && < 1.6    }
-common directory            { build-depends: directory            >= 1.2        && < 1.4    }
-common exceptions           { build-depends: exceptions           >= 0.8        && < 0.11   }
-common ghc-prim             { build-depends: ghc-prim             >= 0.4        && < 0.6    }
-common hedgehog             { build-depends: hedgehog             >= 0.5        && < 1.1    }
-common hspec                { build-depends: hspec                >= 2.4        && < 2.8    }
-common hw-bits              { build-depends: hw-bits              >= 0.7.0.3    && < 0.8    }
-common hw-hspec-hedgehog    { build-depends: hw-hspec-hedgehog    >= 0.1        && < 0.2    }
-common hw-prim              { build-depends: hw-prim              >= 0.6.2.17   && < 0.7    }
-common mmap                 { build-depends: mmap                 >= 0.5        && < 0.6    }
-common primitive            { build-depends: primitive            >= 0.6.3.0    && < 0.8    }
-common QuickCheck           { build-depends: QuickCheck           >= 2.10       && < 2.14   }
-common semigroups           { build-depends: semigroups           >= 0.8.4      && < 0.20   }
-common transformers         { build-depends: transformers         >= 0.4        && < 0.6    }
-common vector               { build-depends: vector               >= 0.12       && < 0.13   }
+common bytestring                 { build-depends: bytestring                 >= 0.9        && < 0.11   }
+common criterion                  { build-depends: criterion                  >= 1.2        && < 1.6    }
+common directory                  { build-depends: directory                  >= 1.2        && < 1.4    }
+common doctest                    { build-depends: doctest                    >= 0.16.2     && < 0.17   }
+common doctest-discover           { build-depends: doctest-discover           >= 0.2        && < 0.3    }
+common exceptions                 { build-depends: exceptions                 >= 0.8        && < 0.11   }
+common ghc-prim                   { build-depends: ghc-prim                   >= 0.4        && < 0.7    }
+common hedgehog                   { build-depends: hedgehog                   >= 0.5        && < 1.1    }
+common hspec                      { build-depends: hspec                      >= 2.4        && < 2.8    }
+common hw-bits                    { build-depends: hw-bits                    >= 0.7.0.3    && < 0.8    }
+common hw-hspec-hedgehog          { build-depends: hw-hspec-hedgehog          >= 0.1        && < 0.2    }
+common hw-prim                    { build-depends: hw-prim                    >= 0.6.2.17   && < 0.7    }
+common mmap                       { build-depends: mmap                       >= 0.5        && < 0.6    }
+common primitive                  { build-depends: primitive                  >= 0.6.3.0    && < 0.8    }
+common QuickCheck                 { build-depends: QuickCheck                 >= 2.10       && < 2.15   }
+common transformers               { build-depends: transformers               >= 0.4        && < 0.6    }
+common vector                     { build-depends: vector                     >= 0.12       && < 0.13   }
 
 common config
   if flag(bounds-checking-enabled)
@@ -51,6 +52,9 @@
   default-language:     Haskell2010
   other-extensions:     AllowAmbiguousTypes
 
+common hw-streams
+  build-depends:        hw-streams
+
 library
   import:               base, config
                       , bytestring
@@ -59,7 +63,6 @@
                       , hw-prim
                       , mmap
                       , primitive
-                      , semigroups
                       , transformers
                       , vector
   exposed-modules:      HaskellWorks.Data.Streams.ByteString
@@ -91,7 +94,6 @@
                       , hw-prim
                       , mmap
                       , primitive
-                      , semigroups
                       , transformers
                       , vector
   type:                 exitcode-stdio-1.0
@@ -100,8 +102,6 @@
   other-modules:        HaskellWorks.Data.Streams.Stream.OpsSpec
                         HaskellWorks.Data.Streams.Vector.StorableSpec
                         Test.Gen
-                        Paths_hw_streams
-  autogen-modules:      Paths_hw_streams
   ghc-options:          -Wall -threaded -rtsopts -with-rtsopts=-N
   build-depends:        hw-streams
   build-tool-depends:   hspec-discover:hspec-discover
@@ -115,7 +115,6 @@
                       , hw-prim
                       , mmap
                       , primitive
-                      , semigroups
                       , transformers
                       , vector
   type:                 exitcode-stdio-1.0
@@ -123,7 +122,16 @@
   hs-source-dirs:       bench
   build-depends:        hw-streams
   ghc-options:          -Wall -O2 -msse4.2
-  autogen-modules:      Paths_hw_streams
   other-modules:        Baseline.Data.Streams.Vector.Storable
                         Reference.Data.Streams.Vector.Storable
-                        Paths_hw_streams
+
+test-suite doctest
+  import:               base, config
+                      , doctest
+                      , doctest-discover
+                      , hw-streams
+  type:                 exitcode-stdio-1.0
+  ghc-options:          -threaded
+  main-is:              DoctestDriver.hs
+  HS-Source-Dirs:       doctest
+  build-tool-depends:   doctest-discover:doctest-discover
diff --git a/src/HaskellWorks/Data/Streams/Stream.hs b/src/HaskellWorks/Data/Streams/Stream.hs
--- a/src/HaskellWorks/Data/Streams/Stream.hs
+++ b/src/HaskellWorks/Data/Streams/Stream.hs
@@ -6,7 +6,6 @@
 module HaskellWorks.Data.Streams.Stream where
 
 import Data.Bool
-import Data.Monoid                    ((<>))
 import HaskellWorks.Data.Streams.Size
 
 import Prelude hiding (drop, foldl, zipWith)
diff --git a/test/HaskellWorks/Data/Streams/Stream/OpsSpec.hs b/test/HaskellWorks/Data/Streams/Stream/OpsSpec.hs
--- a/test/HaskellWorks/Data/Streams/Stream/OpsSpec.hs
+++ b/test/HaskellWorks/Data/Streams/Stream/OpsSpec.hs
@@ -5,7 +5,6 @@
   ( spec
   ) where
 
-import Data.Semigroup              ((<>))
 import Data.Word
 import HaskellWorks.Hspec.Hedgehog
 import Hedgehog
@@ -15,7 +14,7 @@
 import qualified HaskellWorks.Data.Streams.Stream.Ops      as S
 import qualified HaskellWorks.Data.Streams.Vector.Storable as SDVS
 
-{-# ANN module ("HLint: Ignore Redundant do" :: String) #-}
+{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
 
 spec :: Spec
 spec = describe "HaskellWorks.Data.Stream.Vector.StorableSpec" $ do
diff --git a/test/HaskellWorks/Data/Streams/Vector/StorableSpec.hs b/test/HaskellWorks/Data/Streams/Vector/StorableSpec.hs
--- a/test/HaskellWorks/Data/Streams/Vector/StorableSpec.hs
+++ b/test/HaskellWorks/Data/Streams/Vector/StorableSpec.hs
@@ -15,7 +15,7 @@
 import qualified Hedgehog.Range                            as R
 import qualified Test.Gen                                  as G
 
-{-# ANN module ("HLint: Ignore Redundant do" :: String) #-}
+{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
 
 spec :: Spec
 spec = describe "HaskellWorks.Data.Stream.Vector.StorableSpec" $ do
