diff --git a/hw-aeson.cabal b/hw-aeson.cabal
--- a/hw-aeson.cabal
+++ b/hw-aeson.cabal
@@ -1,50 +1,58 @@
-name:           hw-aeson
-version:        0.1.0.1
-synopsis:       Convenience functions for Aeson
-description:    Convenience functions for Aeson
-category:       Data, JSON
-homepage:       https://github.com/haskell-works/hw-aeson#readme
-bug-reports:    https://github.com/haskell-works/hw-aeson/issues
-author:         John Ky
-maintainer:     newhoggy@gmail.com
-copyright:      2018 John Ky
-license:        BSD3
-license-file:   LICENSE
-build-type:     Simple
-cabal-version:  >= 1.10
-extra-source-files:
-    README.md
+cabal-version:      2.2
 
+name:                 hw-aeson
+version:              0.1.0.2
+synopsis:             Convenience functions for Aeson
+description:          Convenience functions for Aeson.
+category:             Data, JSON
+homepage:             https://github.com/haskell-works/hw-aeson#readme
+bug-reports:          https://github.com/haskell-works/hw-aeson/issues
+author:               John Ky
+maintainer:           newhoggy@gmail.com
+copyright:            2018-2019 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
+build-type:           Simple
+extra-source-files:   README.md
+
 source-repository head
   type: git
   location: https://github.com/haskell-works/hw-aeson
 
+common base       { build-depends: base       >= 4.10   && < 5    }
+
+common aeson      { build-depends: aeson      >= 1.4    && < 1.5  }
+common hedgehog   { build-depends: hedgehog   >= 0.6    && < 1.1  }
+common hspec      { build-depends: hspec      >= 2.4    && < 3    }
+common text       { build-depends: text       >= 1.2    && < 1.3  }
+
+common config
+
+common hw-aeson
+  build-depends:      hw-aeson
+
 library
-  exposed-modules:
-      HaskellWorks.Data.Aeson
-  other-modules:
-      Paths_hw_aeson
-  hs-source-dirs:
-      src
-  build-depends:
-      aeson
-    , base >=4.7 && <5
-    , text
-  default-language: Haskell2010
+  import:             base, config
+                    , aeson
+                    , text
+  other-modules:      Paths_hw_aeson
+  autogen-modules:    Paths_hw_aeson
+  hs-source-dirs:     src
+  default-language:   Haskell2010
+  exposed-modules:    HaskellWorks.Data.Aeson
 
 test-suite hw-aeson-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      HaskellWorks.Data.AesonSpec
-      Paths_hw_aeson
-  hs-source-dirs:
-      test
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      aeson
-    , base
-    , hedgehog
-    , hspec
-    , hw-aeson
-  default-language: Haskell2010
+  import:             base, config
+                    , aeson
+                    , hedgehog
+                    , hspec
+                    , hw-aeson
+  type:               exitcode-stdio-1.0
+  main-is:            Spec.hs
+  ghc-options:        -threaded -rtsopts -with-rtsopts=-N
+  hs-source-dirs:     test
+  default-language:   Haskell2010
+  autogen-modules:    Paths_hw_aeson
+  other-modules:      HaskellWorks.Data.AesonSpec
+                      Paths_hw_aeson
