diff --git a/ginger2.cabal b/ginger2.cabal
--- a/ginger2.cabal
+++ b/ginger2.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: ginger2
-version: 2.1.0.0
+version: 2.1.0.1
 synopsis: Jinja templates for Haskell
 description: Ginger2 approximates Jinja2 (https://jinja.palletsprojects.com/)
              in Haskell.
@@ -43,7 +43,7 @@
     -- other-extensions:
     build-depends: base >=4.14.0.0 && <5
                  , aeson >=2.2.3.0 && <2.3
-                 , array >=0.5.8 && <0.6
+                 , array >=0.5.4 && <0.6
                  , base64-bytestring >=1.2.1.0 && <1.3
                  , bytestring >=0.12.2.0 && <0.13
                  , containers >=0.7 && <0.9
@@ -56,7 +56,7 @@
                  , SHA >=1.6.4.4 && <1.7
                  , tasty >=1.5.3 && <1.6
                  , tasty-quickcheck >=0.11.1 && <0.12
-                 , template-haskell >=2.19.0.0 && <2.24
+                 , template-haskell >=2.18.0.0 && <2.24
                  , text >=2.0 && <2.3
                  , time >=1.12 && <1.15
                  , vector >=0.13.2 && <0.14
@@ -79,7 +79,7 @@
                  , random >=1.3.1 && <1.4
                  , text >=2.0 && <2.3
                  , vector >=0.13.2 && <0.14
-                 , yaml >=0.11.11 && <0.12
+                 , yaml >=0.10.0 && <0.12
     hs-source-dirs: cli
     default-language: Haskell2010
 
diff --git a/src/Language/Ginger/Interpret/Builtins.hs b/src/Language/Ginger/Interpret/Builtins.hs
--- a/src/Language/Ginger/Interpret/Builtins.hs
+++ b/src/Language/Ginger/Interpret/Builtins.hs
@@ -1,12 +1,9 @@
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE TupleSections #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE LambdaCase #-}
@@ -30,7 +27,11 @@
 import qualified Data.ByteString.Lazy as LBS
 import Data.Char (isUpper, isLower, isAlphaNum, isPrint, isSpace, isAlpha, isDigit, ord)
 import Data.Foldable (asum)
+#if MIN_VERSION_base(4,20,0)
 import Data.List (sortBy, minimumBy, maximumBy)
+#else
+import Data.List (sortBy, minimumBy, maximumBy, foldl')
+#endif
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as Map
 import Data.Maybe (fromMaybe, listToMaybe, catMaybes, isJust)
