diff --git a/antiope-dynamodb.cabal b/antiope-dynamodb.cabal
--- a/antiope-dynamodb.cabal
+++ b/antiope-dynamodb.cabal
@@ -1,63 +1,63 @@
-cabal-version: 2.2
+cabal-version: 2.4
 
-name:               antiope-dynamodb
-version:            7.3.2
-synopsis:           Please see the README on Github at <https://github.com/arbor/antiope#readme>
-description:        Please see the README on Github at <https://github.com/arbor/antiope#readme>.
-category:           Services
-homepage:           https://github.com/arbor/antiope#readme
-bug-reports:        https://github.com/arbor/antiope/issues
-author:             Arbor Networks
-maintainer:         mayhem@arbor.net
-copyright:          Arbor Networks
-license:            MIT
-license-file:       LICENSE
-build-type:         Simple
-extra-source-files:
-    README.md
-    ChangeLog.md
+name:                   antiope-dynamodb
+version:                7.3.3
+synopsis:               Please see the README on Github at <https://github.com/arbor/antiope#readme>
+description:            Please see the README on Github at <https://github.com/arbor/antiope#readme>.
+category:               Services
+homepage:               https://github.com/arbor/antiope#readme
+bug-reports:            https://github.com/arbor/antiope/issues
+author:                 Arbor Networks
+maintainer:             mayhem@arbor.net
+copyright:              Arbor Networks
+license:                MIT
+license-file:           LICENSE
+build-type:             Simple
+extra-source-files:     README.md
+                        ChangeLog.md
 
 source-repository head
   type: git
   location: https://github.com/arbor/antiope
 
+common base     { build-depends:  base      >= 4.7    && < 5 }
+
+common config
+  default-language:     Haskell2010
+  ghc-options:          -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
+
 library
-  exposed-modules:
-      Antiope.DynamoDB
-      Antiope.DynamoDB.Types
-  hs-source-dirs: src
-  default-extensions: BangPatterns GeneralizedNewtypeDeriving OverloadedStrings TupleSections
-  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -msse4.2
-  build-depends:
-      aeson
-    , amazonka
-    , amazonka-core
-    , amazonka-dynamodb
-    , antiope-core
-    , base >=4.7 && <5
-    , generic-lens
-    , lens
-    , text
-    , unliftio-core
-    , unordered-containers
-  default-language: Haskell2010
+  import:               base, config
+  exposed-modules:      Antiope.DynamoDB
+                        Antiope.DynamoDB.Types
+  hs-source-dirs:       src
+  default-extensions:   BangPatterns GeneralizedNewtypeDeriving OverloadedStrings TupleSections
+  build-depends:        aeson
+                      , amazonka
+                      , amazonka-core
+                      , amazonka-dynamodb
+                      , antiope-core
+                      , generic-lens
+                      , lens
+                      , text
+                      , unliftio-core
+                      , unordered-containers
 
 test-suite antiope-dynamodb-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  hs-source-dirs: test
-  default-extensions: BangPatterns GeneralizedNewtypeDeriving OverloadedStrings TupleSections
-  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -msse4.2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      amazonka
-    , amazonka-core
-    , amazonka-dynamodb
-    , antiope-core
-    , antiope-dynamodb
-    , base >=4.7 && <5
-    , generic-lens
-    , lens
-    , text
-    , unliftio-core
-    , unordered-containers
-  default-language: Haskell2010
+  import:               base, config
+  type:                 exitcode-stdio-1.0
+  main-is:              Spec.hs
+  hs-source-dirs:       test
+  default-extensions:   BangPatterns GeneralizedNewtypeDeriving OverloadedStrings TupleSections
+  ghc-options:          -threaded -rtsopts -with-rtsopts=-N
+  build-tool-depends:   hspec-discover:hspec-discover
+  build-depends:        amazonka
+                      , amazonka-core
+                      , amazonka-dynamodb
+                      , antiope-core
+                      , antiope-dynamodb
+                      , generic-lens
+                      , lens
+                      , text
+                      , unliftio-core
+                      , unordered-containers
