diff --git a/hw-fingertree-strict.cabal b/hw-fingertree-strict.cabal
--- a/hw-fingertree-strict.cabal
+++ b/hw-fingertree-strict.cabal
@@ -1,11 +1,7 @@
--- This file has been generated from package.yaml by hpack version 0.20.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 1a9f8c64ec2369530869030e8871c1280ef0345df0b89a6a286c8bcb125cd482
+cabal-version:  2.2
 
 name:           hw-fingertree-strict
-version:        0.1.1.1
+version:        0.1.1.2
 synopsis:       Generic strict finger-tree structure
 description:    A general sequence representation with arbitrary
                 annotations, for use as a base for implementations of
@@ -25,13 +21,11 @@
 bug-reports:    https://github.com/haskell-works/hw-fingertree-strict/issues
 author:         John Ky
 maintainer:     newhoggy@gmail.com
-copyright:      2017 John Ky; 2006 Ross Paterson,
-                Ralf Hinze
-license:        BSD3
+copyright:      2017-2019 John Ky;
+                2006 Ross Paterson, Ralf Hinze
+license:        BSD-3-Clause
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
-
 extra-source-files:
     README.md
 
@@ -39,55 +33,69 @@
   type: git
   location: https://github.com/haskell-works/hw-fingertree-strict
 
-library
-  hs-source-dirs:
-      src
-  other-extensions: DeriveAnyClass
-  build-depends:
-      base >=4.7 && <5
-    , deepseq
-  if !(impl(ghc >=8.0))
+common base                       { build-depends: base                       >= 4.7        && < 5      }
+
+common deepseq                    { build-depends: deepseq                    >= 1.4        && < 1.5    }
+common hedgehog                   { build-depends: hedgehog                   >= 0.6        && < 1.1    }
+common hspec                      { build-depends: hspec                      >= 2.4        && < 2.8    }
+common HUnit                      { build-depends: HUnit                      >= 1.5        && < 1.7    }
+common hw-hspec-hedgehog          { build-depends: hw-hspec-hedgehog          >= 0.1        && < 0.2    }
+common QuickCheck                 { build-depends: QuickCheck                 >= 2.10       && < 2.14   }
+common test-framework             { build-depends: test-framework                                       }
+common test-framework-hunit       { build-depends: test-framework-hunit                                 }
+common test-framework-quickcheck2 { build-depends: test-framework-quickcheck2                           }
+
+common hw-fingertree-strict
+  build-depends: hw-fingertree-strict
+
+common config
+  default-language: Haskell2010
+  if !(impl(ghc >= 8.0))
     build-depends:
-        semigroups ==0.18.*
+      semigroups == 0.18.*
+
+library
+  import:   base, config
+          , deepseq
+  hs-source-dirs:       src
+  other-extensions:     DeriveAnyClass
+  other-modules:        Paths_hw_fingertree_strict
+  autogen-modules:      Paths_hw_fingertree_strict
   exposed-modules:
-      HaskellWorks.Data.FingerTree.Strict
-      HaskellWorks.Data.IntervalMap.Strict
-      HaskellWorks.Data.Item.Strict
-      HaskellWorks.Data.PriorityQueue.Strict
-      HaskellWorks.Data.SegmentMap.Strict
-      HaskellWorks.Data.SegmentSet.Strict
-      HaskellWorks.Data.Segment.Strict
-  other-modules:
-      Paths_hw_fingertree_strict
-  default-language: Haskell2010
+    HaskellWorks.Data.FingerTree.Strict
+    HaskellWorks.Data.IntervalMap.Strict
+    HaskellWorks.Data.Item.Strict
+    HaskellWorks.Data.PriorityQueue.Strict
+    HaskellWorks.Data.SegmentMap.Strict
+    HaskellWorks.Data.SegmentSet.Strict
+    HaskellWorks.Data.Segment.Strict
 
 test-suite hw-fingertree-strict-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  hs-source-dirs:
-      test
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N
-  cpp-options: -DTESTING
-  build-depends:
-      HUnit
-    , QuickCheck
-    , base >=4.2 && <6
-    , hedgehog
-    , hspec
-    , hw-fingertree-strict
-    , hw-hspec-hedgehog
-    , test-framework
-    , test-framework-hunit
-    , test-framework-quickcheck2
+  import:   base, config
+          , HUnit
+          , QuickCheck
+          , hedgehog
+          , hspec
+          , hw-fingertree-strict
+          , hw-hspec-hedgehog
+          , test-framework
+          , test-framework-hunit
+          , test-framework-quickcheck2
+  type:                 exitcode-stdio-1.0
+  main-is:              Spec.hs
+  hs-source-dirs:       test
+  ghc-options:          -threaded -rtsopts -with-rtsopts=-N
+  cpp-options:          -DTESTING
+  build-tool-depends:   hspec-discover:hspec-discover
+  autogen-modules:      Paths_hw_fingertree_strict
   other-modules:
-      HaskellWorks.Data.FingerTree.Gen
-      HaskellWorks.Data.FingerTree.Strict.Gen
-      HaskellWorks.Data.FingerTree.StrictSpec
-      HaskellWorks.Data.FingerTreeSpec
-      HaskellWorks.Data.Gen
-      HaskellWorks.Data.SegmentMap.StrictSpec
-      HaskellWorks.Data.SegmentSet.Naive
-      HaskellWorks.Data.SegmentSet.NaiveSpec
-      HaskellWorks.Data.SegmentSet.StrictSpec
-      Paths_hw_fingertree_strict
-  default-language: Haskell2010
+    HaskellWorks.Data.FingerTree.Gen
+    HaskellWorks.Data.FingerTree.Strict.Gen
+    HaskellWorks.Data.FingerTree.StrictSpec
+    HaskellWorks.Data.FingerTreeSpec
+    HaskellWorks.Data.Gen
+    HaskellWorks.Data.SegmentMap.StrictSpec
+    HaskellWorks.Data.SegmentSet.Naive
+    HaskellWorks.Data.SegmentSet.NaiveSpec
+    HaskellWorks.Data.SegmentSet.StrictSpec
+    Paths_hw_fingertree_strict
diff --git a/test/HaskellWorks/Data/FingerTree/StrictSpec.hs b/test/HaskellWorks/Data/FingerTree/StrictSpec.hs
--- a/test/HaskellWorks/Data/FingerTree/StrictSpec.hs
+++ b/test/HaskellWorks/Data/FingerTree/StrictSpec.hs
@@ -24,7 +24,7 @@
 
 {-# ANN module ("HLint: ignore Redundant do"        :: String) #-}
 {-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}
-{-# ANN module ("HLint: redundant bracket"          :: String) #-}
+{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}
 
 spec :: Spec
 spec = do
diff --git a/test/HaskellWorks/Data/FingerTreeSpec.hs b/test/HaskellWorks/Data/FingerTreeSpec.hs
--- a/test/HaskellWorks/Data/FingerTreeSpec.hs
+++ b/test/HaskellWorks/Data/FingerTreeSpec.hs
@@ -24,7 +24,7 @@
 
 {-# ANN module ("HLint: ignore Redundant do"        :: String) #-}
 {-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}
-{-# ANN module ("HLint: redundant bracket"          :: String) #-}
+{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}
 
 spec :: Spec
 spec = do
