diff --git a/LICENCE b/LICENCE
deleted file mode 100644
--- a/LICENCE
+++ /dev/null
@@ -1,31 +0,0 @@
-Copyright (c) 2018, Commonwealth Scientific and Industrial Research Organisation
-(CSIRO) ABN 41 687 119 230.
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials provided
-      with the distribution.
-
-    * Neither the name of QFPL nor the names of other
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,31 @@
+Copyright (c) 2018, Commonwealth Scientific and Industrial Research Organisation
+(CSIRO) ABN 41 687 119 230.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of QFPL nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-<img src="http://i.imgur.com/0h9dFhl.png" width="300px"/>
+![CSIRO's Data61 Logo](https://raw.githubusercontent.com/qfpl/assets/master/data61-transparent-bg.png)
 
 [![Build Status](https://travis-ci.org/qfpl/waargonaut.svg?branch=master)](https://travis-ci.org/qfpl/waargonaut)
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,10 @@
 # Revision history for waargonaut
 
+## 0.8.0.2  -- 2020-06-02
+
+- Support GHC 8.10.x and GHC 8.8.x
+- Fix warnings for GHC < 8.2.x
+
 ## 0.8.0.1  -- 2019-09-22
 
 * Support GHC 8.8.1
diff --git a/src/Waargonaut/Decode/Internal.hs b/src/Waargonaut/Decode/Internal.hs
--- a/src/Waargonaut/Decode/Internal.hs
+++ b/src/Waargonaut/Decode/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveFunctor              #-}
 {-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE FlexibleInstances          #-}
@@ -63,12 +64,14 @@
 import           Data.Bifunctor                  (first)
 import qualified Data.Foldable                   as F
 import           Data.Functor                    (($>))
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Semigroup                  ((<>))
+#endif
 import           Data.Sequence                   (Seq, fromList)
 
 import           Data.ByteString                 (ByteString)
 import qualified Data.ByteString.Lazy            as BL
-import qualified Data.ByteString.Lazy.Builder    as BB
+import qualified Data.ByteString.Builder         as BB
 import           Data.Text                       (Text)
 
 import           Data.Map                        (Map)
@@ -312,7 +315,7 @@
   -- This uses the 'Data.ByteString.Builder.char8' function as parsing has
   -- validated our inputs. If we use 'Data.ByteString.Builder.charUtf8' or
   -- 'Waargonaut.Builder.bsBuilder' the input will be incorrectly "double
-  -- encoded" and everything will be wrong. 
+  -- encoded" and everything will be wrong.
   where mkBS = BB.toLazyByteString . foldMap (BB.char8 . jCharToChar)
 
 -- | Decoder for a 'Char' value that cannot contain values in the range U+D800
diff --git a/src/Waargonaut/Decode/Types.hs b/src/Waargonaut/Decode/Types.hs
--- a/src/Waargonaut/Decode/Types.hs
+++ b/src/Waargonaut/Decode/Types.hs
@@ -86,6 +86,9 @@
   catchError d handle = Decoder $ \p c ->
     catchError (runDecoder d p c) (\e -> runDecoder (handle e) p c)
 
+instance MonadTrans Decoder where
+  lift fa = Decoder (\ _ _ -> lift fa)
+
 instance MFunctor Decoder where
   hoist nat (Decoder pjdr) = Decoder (\p -> hoist nat . pjdr p)
 
diff --git a/src/Waargonaut/Decode/ZipperMove.hs b/src/Waargonaut/Decode/ZipperMove.hs
--- a/src/Waargonaut/Decode/ZipperMove.hs
+++ b/src/Waargonaut/Decode/ZipperMove.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- | Types and functions for describing the movements of a cursor around the
 -- 'Waargonaut.Types.Json.Json' structure.
 module Waargonaut.Decode.ZipperMove
@@ -12,7 +13,9 @@
 import           Data.Text                     (Text)
 import qualified Data.Text                     as Text
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Semigroup                ((<>))
+#endif
 
 import           Natural                       (Natural)
 
diff --git a/src/Waargonaut/Encode.hs b/src/Waargonaut/Encode.hs
--- a/src/Waargonaut/Encode.hs
+++ b/src/Waargonaut/Encode.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -229,7 +230,7 @@
 import           Data.String                          (IsString)
 
 import qualified Data.ByteString.Lazy                 as BL
-import qualified Data.ByteString.Lazy.Builder         as BB
+import qualified Data.ByteString.Builder              as BB
 
 import           Data.Text                            (Text)
 import qualified Data.Text.Lazy                       as LT
diff --git a/src/Waargonaut/Encode/Builder.hs b/src/Waargonaut/Encode/Builder.hs
--- a/src/Waargonaut/Encode/Builder.hs
+++ b/src/Waargonaut/Encode/Builder.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE RankNTypes #-}
 -- |
 --
@@ -7,7 +8,10 @@
 
 import           Data.String                       (IsString, fromString)
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                       ((<>))
+#endif
+
 
 import           Data.Text                         (Text)
 import qualified Data.Text.Lazy.Builder            as T
diff --git a/src/Waargonaut/Encode/Builder/CommaSep.hs b/src/Waargonaut/Encode/Builder/CommaSep.hs
--- a/src/Waargonaut/Encode/Builder/CommaSep.hs
+++ b/src/Waargonaut/Encode/Builder/CommaSep.hs
@@ -1,11 +1,15 @@
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE CPP #-}
 -- |
 --
 -- Builder functions for 'CommaSeparated' values.
 --
 module Waargonaut.Encode.Builder.CommaSep (commaSeparatedBuilder) where
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                     ((<>))
+#endif
+
 import           Waargonaut.Types.CommaSep       (Comma, CommaSeparated (..),
                                                   Elem (..), Elems (..))
 
diff --git a/src/Waargonaut/Encode/Builder/JChar.hs b/src/Waargonaut/Encode/Builder/JChar.hs
--- a/src/Waargonaut/Encode/Builder/JChar.hs
+++ b/src/Waargonaut/Encode/Builder/JChar.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- |
 --
 -- Builder structures for 'JChar's
@@ -6,7 +7,9 @@
 
 import           Control.Lens                     (review)
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                      ((<>))
+#endif
 
 import           Data.Digit                       (HeXaDeCiMaL, charHeXaDeCiMaL)
 
diff --git a/src/Waargonaut/Encode/Builder/JNumber.hs b/src/Waargonaut/Encode/Builder/JNumber.hs
--- a/src/Waargonaut/Encode/Builder/JNumber.hs
+++ b/src/Waargonaut/Encode/Builder/JNumber.hs
@@ -1,4 +1,5 @@
--- | 
+{-# LANGUAGE CPP #-}
+-- |
 --
 -- Builders for 'JNumber'
 --
@@ -10,7 +11,11 @@
 
 import qualified Data.Digit                      as D
 import           Data.List.NonEmpty              (NonEmpty)
+
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                     ((<>))
+#endif
+
 
 import           Waargonaut.Types.JNumber        (E (..), Exp (..), Frac (..),
                                                   JNumber (..), jIntToDigits)
diff --git a/src/Waargonaut/Encode/Builder/JObject.hs b/src/Waargonaut/Encode/Builder/JObject.hs
--- a/src/Waargonaut/Encode/Builder/JObject.hs
+++ b/src/Waargonaut/Encode/Builder/JObject.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 -- |
 --
 -- Builder structures for 'JObject's
 --
 module Waargonaut.Encode.Builder.JObject (jObjectBuilder) where
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                        ((<>))
+#endif
 
 import           Waargonaut.Types.JObject           (JAssoc (..), JObject (..))
 
diff --git a/src/Waargonaut/Encode/Builder/JString.hs b/src/Waargonaut/Encode/Builder/JString.hs
--- a/src/Waargonaut/Encode/Builder/JString.hs
+++ b/src/Waargonaut/Encode/Builder/JString.hs
@@ -1,11 +1,13 @@
+{-# LANGUAGE CPP #-}
 -- |
 --
 -- Builder structures for 'JString's
 --
 module Waargonaut.Encode.Builder.JString (jStringBuilder) where
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                     ((<>))
-
+#endif
 import           Waargonaut.Types.JString        (JString, JString' (..))
 
 import           Waargonaut.Encode.Builder.JChar (jCharBuilder)
diff --git a/src/Waargonaut/Encode/Builder/Whitespace.hs b/src/Waargonaut/Encode/Builder/Whitespace.hs
--- a/src/Waargonaut/Encode/Builder/Whitespace.hs
+++ b/src/Waargonaut/Encode/Builder/Whitespace.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- |
 --
 -- Builder structures for 'Whitespace'
@@ -8,7 +9,10 @@
   , wsRemover
   ) where
 
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Monoid                     (Monoid)
+#endif
+
 import           Waargonaut.Types.Whitespace     (WS (..), Whitespace (..))
 
 import           Waargonaut.Encode.Builder.Types (Builder (..))
diff --git a/src/Waargonaut/Types/Whitespace.hs b/src/Waargonaut/Types/Whitespace.hs
--- a/src/Waargonaut/Types/Whitespace.hs
+++ b/src/Waargonaut/Types/Whitespace.hs
@@ -1,7 +1,8 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE TypeFamilies          #-}
--- | 
+-- |
 --
 -- Parsers and builders for whitespace characters in our JSON.
 --
@@ -33,7 +34,9 @@
 import           Data.List.NonEmpty      (NonEmpty ((:|)))
 
 import           Data.Foldable           (asum)
-import           Data.Semigroup          (Semigroup (..))
+#if !MIN_VERSION_base(4,11,0)
+import           Data.Semigroup          (Semigroup(..))
+#endif
 
 import           Text.Parser.Char        (CharParsing, char, newline, tab)
 import           Text.Parser.Combinators (many)
diff --git a/waargonaut.cabal b/waargonaut.cabal
--- a/waargonaut.cabal
+++ b/waargonaut.cabal
@@ -1,270 +1,232 @@
--- Initial waargonaut.cabal generated by cabal init.  For further
--- documentation, see http://haskell.org/cabal/users-guide/
-
--- The name of the package.
-name:                waargonaut
-
--- The package version.  See the Haskell package versioning policy (PVP)
--- for standards guiding when and how versions should be incremented.
--- https://wiki.haskell.org/Package_versioning_policy
--- PVP summary:      +-+------- breaking API changes
---                   | | +----- non-breaking API additions
---                   | | | +--- code changes with no API change
-version:             0.8.0.1
-
--- A short (one-line) description of the package.
-synopsis:            JSON wrangling
-
--- A longer description of the package.
-description:         Flexible, precise, and efficient JSON decoding/encoding library.
-
--- The license under which the package is released.
-license:             BSD3
-
--- The file containing the license text.
-license-file:        LICENCE
-
--- The package author(s).
-author:              QFPL @ Data61
-
--- An email address to which users can send suggestions, bug reports, and
--- patches.
-maintainer:          oᴉ˙ldɟb@uɐǝs
-
--- A copyright notice.
-copyright:           Copyright (C) 2018 Commonwealth Scientific and Industrial Research Organisation (CSIRO)
-
-category:            Parser, Web, JSON
-
-build-type:          Custom
-
--- Extra files to be distributed with the package, such as examples or a
--- README.
-extra-source-files:  changelog.md
-                   , README.md
-
-                   -- Misc json files
-                   , test/json-data/numbers.json
-                   , test/json-data/image_obj.json
-                   , test/json-data/twitter_with_hex_vals.json
-                   , test/json-data/unicode_2705.json
-                   , test/json-data/keys-in-obj.json
+cabal-version:      1.18
+name:               waargonaut
+version:            0.8.0.2
+synopsis:           JSON wrangling
+description:
+  Flexible, precise, and efficient JSON decoding/encoding library.
 
-                   -- Known bad json files
-                   , test/json-data/bad-json/no_comma_arr.json
-                   , test/json-data/bad-json/no_comma_obj.json
+license:            BSD3
+license-file:       LICENSE
+author:             HASKELL-WAARGONAUT @ Data61
+maintainer:
+    Sean Chalmers <oᴉ˙ldɟb@uɐǝs>
+  , Emily Pillmore <emilypi@cohomolo.gy>
+  , George Wils <george@wils.online>
+  , Tony Morris <tonymorris+github@gmail.com>
 
-                   -- Golden files
-                   , test/json-data/goldens/backslash128.json.golden
-                   , test/json-data/goldens/empty_arr_empty_ws.json.golden
-                   , test/json-data/goldens/image_obj.json.golden
-                   , test/json-data/goldens/location_array.json.golden
-                   , test/json-data/goldens/nested_arrs.json.golden
-                   , test/json-data/goldens/null_arr_trailing_comma_ws.json.golden
-                   , test/json-data/goldens/numbers.json.golden
-                   , test/json-data/goldens/twitter100.json.golden
-                   , test/json-data/goldens/twitter_with_hex_vals.json.golden
-                   , test/json-data/goldens/unicode_2705.json.golden
+copyright:
+  Copyright (C) 2018 Commonwealth Scientific and Industrial Research Organisation (CSIRO)
 
-homepage:            https://github.com/qfpl/waargonaut
-bug-reports:         https://github.com/qfpl/waargonaut/issues
+category:           Parser, Web, JSON
+build-type:         Custom
+extra-doc-files:
+  changelog.md
+  README.md
 
--- Constraint on the version of Cabal needed to build this package.
-cabal-version:       >=1.10
+-- Misc json files
+-- Known bad json files
+-- Golden files
+extra-source-files:
+  test/json-data/bad-json/no_comma_arr.json
+  test/json-data/bad-json/no_comma_obj.json
+  test/json-data/goldens/backslash128.json.golden
+  test/json-data/goldens/empty_arr_empty_ws.json.golden
+  test/json-data/goldens/image_obj.json.golden
+  test/json-data/goldens/location_array.json.golden
+  test/json-data/goldens/nested_arrs.json.golden
+  test/json-data/goldens/null_arr_trailing_comma_ws.json.golden
+  test/json-data/goldens/numbers.json.golden
+  test/json-data/goldens/twitter100.json.golden
+  test/json-data/goldens/twitter_with_hex_vals.json.golden
+  test/json-data/goldens/unicode_2705.json.golden
+  test/json-data/image_obj.json
+  test/json-data/keys-in-obj.json
+  test/json-data/numbers.json
+  test/json-data/twitter_with_hex_vals.json
+  test/json-data/unicode_2705.json
 
-tested-with:         GHC==8.0.2
-                   , GHC==8.2.2
-                   , GHC==8.4.4
-                   , GHC==8.6.5
-                   , GHC==8.8.1
+homepage:           https://github.com/haskell-waargonaut/waargonaut
+bug-reports:        https://github.com/haskell-waargonaut/waargonaut/issues
+tested-with:
+  GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.3
 
 custom-setup
-  setup-depends:       base >= 4.9 && <5
-                     , cabal-doctest >= 1 && <1.1
-                     , Cabal
+  setup-depends:
+      base           >=4.9 && <5
+    , Cabal
+    , cabal-doctest  >=1   && <1.1
 
-source-repository    head
-  type:              git
-  location:          git@github.com/qfpl/waargonaut.git
+source-repository head
+  type:     git
+  location: git@github.com/haskell-waargonaut/waargonaut.git
 
 library
   -- Modules included in this executable, other than Main.
-  exposed-modules:     Waargonaut.Types.Whitespace
-
-                     , Waargonaut.Types.CommaSep.Elem
-                     , Waargonaut.Types.CommaSep.Elems
-                     , Waargonaut.Types.CommaSep
-
-                     , Waargonaut.Types.JChar.HexDigit4
-                     , Waargonaut.Types.JChar.Escaped
-                     , Waargonaut.Types.JChar.Unescaped
-                     , Waargonaut.Types.JChar
-
-                     , Waargonaut.Types.JObject.JAssoc
-                     , Waargonaut.Types.JObject
-
-                     , Waargonaut.Types.JArray
-                     , Waargonaut.Types.JString
-                     , Waargonaut.Types.JNumber
-                     , Waargonaut.Types.Json
-                     , Waargonaut.Types
-
-                     , Waargonaut.Decode.Internal
-                     , Waargonaut.Decode.ZipperMove
-                     , Waargonaut.Decode.Error
-                     , Waargonaut.Decode.Types
-                     , Waargonaut.Decode.Runners
-
-                     , Waargonaut.Encode.Types
-
-                     , Waargonaut.Encode.Builder.JChar
-                     , Waargonaut.Encode.Builder.Whitespace
-                     , Waargonaut.Encode.Builder.JString
-                     , Waargonaut.Encode.Builder.JNumber
-                     , Waargonaut.Encode.Builder.JObject
-                     , Waargonaut.Encode.Builder.JArray
-                     , Waargonaut.Encode.Builder.CommaSep
-                     , Waargonaut.Encode.Builder.Types
-                     , Waargonaut.Encode.Builder
-
-                     , Waargonaut.Decode
-                     , Waargonaut.Decode.Traversal
-
-                     , Waargonaut.Encode
-
-                     , Waargonaut.Generic
-                     , Waargonaut.Test
-                     , Waargonaut.Prettier
-
-                     , Waargonaut.Attoparsec
-                     , Waargonaut.Lens
-
-                     , Waargonaut
+  exposed-modules:
+    Waargonaut
+    Waargonaut.Attoparsec
+    Waargonaut.Decode
+    Waargonaut.Decode.Error
+    Waargonaut.Decode.Internal
+    Waargonaut.Decode.Runners
+    Waargonaut.Decode.Traversal
+    Waargonaut.Decode.Types
+    Waargonaut.Decode.ZipperMove
+    Waargonaut.Encode
+    Waargonaut.Encode.Builder
+    Waargonaut.Encode.Builder.CommaSep
+    Waargonaut.Encode.Builder.JArray
+    Waargonaut.Encode.Builder.JChar
+    Waargonaut.Encode.Builder.JNumber
+    Waargonaut.Encode.Builder.JObject
+    Waargonaut.Encode.Builder.JString
+    Waargonaut.Encode.Builder.Types
+    Waargonaut.Encode.Builder.Whitespace
+    Waargonaut.Encode.Types
+    Waargonaut.Generic
+    Waargonaut.Lens
+    Waargonaut.Prettier
+    Waargonaut.Test
+    Waargonaut.Types
+    Waargonaut.Types.CommaSep
+    Waargonaut.Types.CommaSep.Elem
+    Waargonaut.Types.CommaSep.Elems
+    Waargonaut.Types.JArray
+    Waargonaut.Types.JChar
+    Waargonaut.Types.JChar.Escaped
+    Waargonaut.Types.JChar.HexDigit4
+    Waargonaut.Types.JChar.Unescaped
+    Waargonaut.Types.JNumber
+    Waargonaut.Types.JObject
+    Waargonaut.Types.JObject.JAssoc
+    Waargonaut.Types.Json
+    Waargonaut.Types.JString
+    Waargonaut.Types.Whitespace
 
-  ghc-options:         -Wall
+  ghc-options:      -Wall
 
   -- Other library packages from which modules are imported.
-  build-depends:       base                    >= 4.9     && < 4.14
-                     , lens                    >= 4.15    && < 4.19
-                     , mtl                     >= 2.2.2   && < 2.3
-                     , text                    >= 1.2     && < 1.3
-                     , bytestring              >= 0.10.6  && < 0.11
-                     , parsers                 >= 0.12    && < 0.13
-                     , digit                   >= 0.7     && < 0.9
-                     , semigroups              >= 0.8.4   && < 0.20
-                     , scientific              >= 0.3     && < 0.4
-                     , distributive            >= 0.5     && < 0.7
-                     , nats                    >= 1       && <1.2
-                     , zippers                 >= 0.2     && < 0.4
-                     , vector                  >= 0.12    && < 0.13
-                     , errors                  >= 2.2     && < 2.4
-                     , hoist-error             >= 0.2     && < 0.3
-                     , containers              >= 0.5.6   && < 0.7
-                     , witherable              >= 0.2     && < 0.4
-                     , generics-sop            >= 0.4     && < 0.6
-                     , records-sop             >= 0.1     && < 0.2
-                     , mmorph                  >= 1.1     && < 1.2
-                     , transformers            >= 0.4     && < 0.6
-                     , bifunctors              >= 5       && < 5.6
-                     , contravariant           >= 1.4     && < 1.6
-                     , wl-pprint-annotated     >= 0.1     && < 0.2
-                     , hw-json-standard-cursor >= 0.2.1.1 && < 0.3
-                     , hw-prim                 >= 0.6     && < 0.7
-                     , hw-balancedparens       >= 0.2     && < 0.4
-                     , hw-rankselect           >= 0.13    && < 0.14
-                     , hw-bits                 >= 0.7     && < 0.8
-                     , tagged                  >= 0.8.5   && < 0.9
-                     , semigroupoids           >= 5.2.2   && < 5.4
-                     , natural                 >= 0.3     && < 0.4
-                     , unordered-containers    >= 0.2.9   && < 0.3
-                     , attoparsec              >= 0.13    && < 0.15
+  build-depends:
+      attoparsec               >=0.13    && <0.15
+    , base                     >=4.9     && <5
+    , bifunctors               >=5       && <5.6
+    , bytestring               >=0.10.6  && <0.12
+    , containers               >=0.5.6   && <0.7
+    , contravariant            >=1.4     && <1.6
+    , digit                    >=0.7     && <1
+    , distributive             >=0.5     && <0.7
+    , errors                   >=2.2     && <2.4
+    , generics-sop             >=0.4     && <0.6
+    , hoist-error              >=0.2     && <0.3
+    , hw-balancedparens        >=0.2     && <0.5
+    , hw-bits                  >=0.7     && <0.8
+    , hw-json-standard-cursor  >=0.2.1.1 && <0.3
+    , hw-prim                  >=0.6     && <0.7
+    , hw-rankselect            >=0.13    && <0.14
+    , lens                     >=4.15    && <4.20
+    , mmorph                   >=1.1     && <1.2
+    , mtl                      >=2.2.2   && <2.3
+    , nats                     >=1       && <1.2
+    , natural                  >=0.3     && <0.4
+    , parsers                  >=0.12    && <0.13
+    , records-sop              >=0.1     && <0.2
+    , scientific               >=0.3     && <0.4
+    , semigroupoids            >=5.2.2   && <5.4
+    , semigroups               >=0.8.4   && <0.20
+    , tagged                   >=0.8.5   && <0.9
+    , text                     >=1.2     && <1.3
+    , transformers             >=0.4     && <0.6
+    , unordered-containers     >=0.2.9   && <0.3
+    , vector                   >=0.12    && <0.13
+    , witherable               >=0.2     && <0.4
+    , wl-pprint-annotated      >=0.1     && <0.2
+    , zippers                  >=0.2     && <0.4
 
   -- Directories containing source files.
-  hs-source-dirs:      src
+  hs-source-dirs:   src
 
   -- Base language which the package is written in.
-  default-language:    Haskell2010
+  default-language: Haskell2010
 
 test-suite doctests
-  type:                exitcode-stdio-1.0
-  main-is:             Doctests.hs
-  default-language:    Haskell2010
-  hs-source-dirs:      test
-
-  build-depends:       base             >= 4.9  && < 4.14
-                     , hedgehog         >= 0.6  && < 1.2
-                     , text             >= 1.2  && < 1.3
-                     , digit            >= 0.7  && < 0.9
-                     , attoparsec       >= 0.13 && < 0.15
-                     , doctest          >= 0.9.7
-                     , filepath         >= 1.3
-                     , directory        >= 1.1
-                     , template-haskell >= 2.8
-
-                     , waargonaut
+  type:             exitcode-stdio-1.0
+  main-is:          Doctests.hs
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  build-depends:
+      attoparsec        >=0.13  && <0.15
+    , base              >=4.9   && <5
+    , digit             >=0.7   && <1
+    , directory         >=1.1
+    , doctest           >=0.9.7
+    , filepath          >=1.3
+    , hedgehog          >=0.6   && <1.2
+    , template-haskell  >=2.8
+    , text              >=1.2   && <1.3
+    , waargonaut
 
-  ghc-options:         -Wall -threaded
+  ghc-options:      -Wall -threaded
 
 test-suite waarg-tests
-   other-modules:      Types.Common
-                     , Types.CommaSep
-                     , Types.JChar
-                     , Types.JNumber
-                     , Types.JString
-                     , Types.Json
-                     , Types.Whitespace
-
-                     , Prettier.NestedObjs
-                     , Properties
-                     , Golden
-                     , Generics
-                     , Laws
-                     , Utils
-                     , Encoder
-                     , Encoder.Laws
-                     , Decoder
-                     , Decoder.Laws
-                     , Json
-
-  type:                exitcode-stdio-1.0
-  main-is:             Main.hs
-  hs-source-dirs:      test
-
-  build-depends:       base                    >= 4.9    && < 4.14
-                     , tasty                   >= 0.11   && < 1.3
-                     , tasty-hunit             >= 0.10   && < 0.11
-                     , tasty-expected-failure  >= 0.11   && < 0.12
-                     , hedgehog                >= 0.6    && < 1.2
-                     , hedgehog-fn             >= 0.6    && < 2
-                     , tasty-hedgehog          >= 0.2    && < 1.2
-                     , lens                    >= 4.15   && < 4.19
-                     , distributive            >= 0.5    && < 0.7
-                     , bytestring              >= 0.10.6 && < 0.11
-                     , digit                   >= 0.7    && < 0.9
-                     , text                    >= 1.2    && < 1.3
-                     , semigroups              >= 0.8.4  && < 0.20
-                     , zippers                 >= 0.2    && < 0.4
-                     , vector                  >= 0.12   && < 0.13
-                     , generics-sop            >= 0.4    && < 0.6
-                     , attoparsec              >= 0.13   && < 0.15
-                     , scientific              >= 0.3    && < 0.4
-                     , tagged                  >= 0.8.5  && < 0.9
-                     , mtl                     >= 2.2.2  && < 2.3
-                     , semigroupoids           >= 5.2.2  && < 5.6
-                     , containers              >= 0.5.6  && < 0.7
-                     , natural                 >= 0.3    && < 0.4
-                     , contravariant           >= 1.4    && < 1.6
-                     , filepath                >= 1.4    && < 1.5
-                     , tasty-golden            >= 2.3    && < 2.4
-                     , unordered-containers    >= 0.2.9  && < 0.3
-                     , hw-balancedparens       >= 0.2     && < 0.4
-                     , hw-rankselect           >= 0.13    && < 0.14
-                     , hw-bits                 >= 0.7     && < 0.8
-                     , hw-json-standard-cursor >= 0.2.1.1 && < 0.3
-                     , hw-prim                 >= 0.6     && < 0.7
+  other-modules:
+    Decoder
+    Decoder.Laws
+    Encoder
+    Encoder.Laws
+    Generics
+    Golden
+    Json
+    Laws
+    Prettier.NestedObjs
+    Properties
+    Types.CommaSep
+    Types.Common
+    Types.JChar
+    Types.JNumber
+    Types.Json
+    Types.JString
+    Types.Whitespace
+    Utils
 
-                     , waargonaut
+  type:             exitcode-stdio-1.0
+  main-is:          Main.hs
+  hs-source-dirs:   test
+  build-depends:
+      attoparsec               >=0.13    && <0.15
+    , base                     >=4.9     && <5
+    , bytestring               >=0.10.6  && <0.12
+    , containers               >=0.5.6   && <0.7
+    , contravariant            >=1.4     && <1.6
+    , digit                    >=0.7     && <1
+    , distributive             >=0.5     && <0.7
+    , filepath                 >=1.4     && <1.5
+    , generics-sop             >=0.4     && <0.6
+    , hedgehog                 >=0.6     && <1.2
+    , hedgehog-fn              >=0.6     && <2
+    , hw-balancedparens        >=0.2     && <0.5
+    , hw-bits                  >=0.7     && <0.8
+    , hw-json-standard-cursor  >=0.2.1.1 && <0.3
+    , hw-prim                  >=0.6     && <0.7
+    , hw-rankselect            >=0.13    && <0.14
+    , lens                     >=4.15    && <4.20
+    , mtl                      >=2.2.2   && <2.3
+    , natural                  >=0.3     && <0.4
+    , scientific               >=0.3     && <0.4
+    , semigroupoids            >=5.2.2   && <5.6
+    , semigroups               >=0.8.4   && <0.20
+    , tagged                   >=0.8.5   && <0.9
+    , tasty                    >=0.11    && <1.4
+    , tasty-expected-failure   >=0.11    && <0.13
+    , tasty-golden             >=2.3     && <2.4
+    , tasty-hedgehog           >=0.2     && <1.2
+    , tasty-hunit              >=0.10    && <0.11
+    , text                     >=1.2     && <1.3
+    , unordered-containers     >=0.2.9   && <0.3
+    , vector                   >=0.12    && <0.13
+    , waargonaut
+    , zippers                  >=0.2     && <0.4
 
-  ghc-options:         -Wall
+  ghc-options:      -Wall
 
-  default-language:    Haskell2010
+  -- Constraint on the version of Cabal needed to build this package.
+  default-language: Haskell2010
