diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/kontrakcja-templates.cabal b/kontrakcja-templates.cabal
--- a/kontrakcja-templates.cabal
+++ b/kontrakcja-templates.cabal
@@ -1,5 +1,6 @@
+Cabal-version:       3.0
 Name:                kontrakcja-templates
-Version:             0.12
+Version:             0.12.0.1
 Synopsis:
     Utilities for working with many HStringTemplate templates from files.
 Description:
@@ -8,16 +9,15 @@
     template versions (e.g. for translations).
 
 Homepage:            https://github.com/scrive/kontrakcja-templates
-License:             BSD3
+License:             BSD-3-Clause
 License-file:        LICENSE
 Author:              Scrive AB
-Maintainer:          Bartek &#262;wik&#322;owski <bartek@scrive.com>
+Maintainer:          Bartek Ćwikłowski <bartek@scrive.com>
 Copyright:           Scrive AB
 Build-type:          Simple
 Stability:           None
 Category:            Web
-Cabal-version:       >=1.10
-Tested-with:         GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.3 || ==8.10.1
+Tested-with:         GHC == { 8.10.7, 9.0.2, 9.2.8, 9.4.8, 9.6.6, 9.10.1 }
 
 Source-repository head
   type:     git
@@ -33,8 +33,10 @@
                    Text.StringTemplates.Utils
 
   hs-source-dirs:  src
+
   GHC-Options:     -Wall
-  build-depends:   base >= 4.9 && < 5,
+
+  build-depends:   base >= 4.14 && < 5,
                    HStringTemplate >= 0.7.0,
                    exceptions >= 0.6,
                    containers >= 0.4.2.1,
@@ -48,6 +50,7 @@
                    json >= 0.5
 
   Default-language: Haskell2010
+
   Default-Extensions: GeneralizedNewtypeDeriving
                       MultiParamTypeClasses
                       TypeFamilies
diff --git a/src/Text/StringTemplates/Fields.hs b/src/Text/StringTemplates/Fields.hs
--- a/src/Text/StringTemplates/Fields.hs
+++ b/src/Text/StringTemplates/Fields.hs
@@ -91,13 +91,13 @@
 -- | collect all params under a new namespace
 object :: Monad m => String -> Fields m () -> Fields m ()
 object name obj = Fields $ do
-  val <- M.fromList `liftM` lift (runFields obj)
+  val <- M.fromList <$> lift (runFields obj)
   modify ((name, toSElem val) :)
 
 -- | collect all params under a new list namespace
 objects :: Monad m => String -> [Fields m ()] -> Fields m ()
 objects name objs = Fields $ do
-  vals <- mapM (liftM M.fromList . lift . runFields) objs
+  vals <- mapM (fmap M.fromList . lift . runFields) objs
   modify ((name, toSElem vals) :)
 
 -- Missing orphan instances of ToSElem we need
diff --git a/src/Text/StringTemplates/Templates.hs b/src/Text/StringTemplates/Templates.hs
--- a/src/Text/StringTemplates/Templates.hs
+++ b/src/Text/StringTemplates/Templates.hs
@@ -96,7 +96,6 @@
 import Control.Monad.Except
 import Control.Monad.Reader
 import Control.Monad.Identity hiding (liftCatch)
-import Control.Monad.Signatures
 import Control.Monad.Trans.Control ( MonadBaseControl(..)
                                    , MonadTransControl(..)
                                    , ComposeSt
