diff --git a/Justfile b/Justfile
--- a/Justfile
+++ b/Justfile
@@ -42,8 +42,6 @@
 
 ci: test
     cabal new-build
-    cabal new-build -w ghc-8.0.2
-    cabal new-build -w ghc-7.10.3
     cabal new-haddock
     cabal new-test
     hlint src app bench test
diff --git a/ats-format.cabal b/ats-format.cabal
--- a/ats-format.cabal
+++ b/ats-format.cabal
@@ -1,5 +1,5 @@
 name:                ats-format
-version:             0.2.0.1
+version:             0.2.0.2
 synopsis:            A source-code formatter for ATS
 description:         An opinionated source-code formatter for [ATS](http://www.ats-lang.org/).
 homepage:            https://hub.darcs.net/vmchale/ats-format#readme
@@ -48,7 +48,7 @@
                      , Language.ATS.PrettyPrint
                      , Language.ATS.Exec
                      , Paths_ats_format
-  build-depends:       base >= 4.8 && < 5
+  build-depends:       base >= 4.10 && < 5
                      , array
                      , lens
                      , deepseq
diff --git a/src/Language/ATS/Types.hs b/src/Language/ATS/Types.hs
--- a/src/Language/ATS/Types.hs
+++ b/src/Language/ATS/Types.hs
@@ -1,12 +1,14 @@
-{-# LANGUAGE DeriveAnyClass     #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable     #-}
-{-# LANGUAGE DeriveFunctor      #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE DeriveTraversable  #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE TemplateHaskell    #-}
-{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE DeriveAnyClass             #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE DeriveFoldable             #-}
+{-# LANGUAGE DeriveFunctor              #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE DeriveTraversable          #-}
+{-# LANGUAGE DerivingStrategies         #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase                 #-}
+{-# LANGUAGE TemplateHaskell            #-}
+{-# LANGUAGE TypeFamilies               #-}
 
 -- | This is a module containing types to model the ATS syntax tree. As it is
 -- collapsed by the pretty printer, you may see that in some places it is
@@ -50,6 +52,7 @@
 import           Data.Functor.Foldable    (ListF (Cons), ana, cata, embed, project)
 import           Data.Functor.Foldable.TH (makeBaseFunctor)
 import           Data.Maybe               (isJust)
+import           Data.Semigroup           (Semigroup)
 import           GHC.Generics             (Generic)
 import           Language.ATS.Lexer       (Addendum (..), AlexPosn)
 
@@ -61,7 +64,8 @@
 
 -- | Newtype wrapper containing a list of declarations
 newtype ATS = ATS { unATS :: [Declaration] }
-    deriving (Show, Eq, Generic, NFData)
+    deriving (Show, Eq, Generic)
+    deriving newtype (NFData, Semigroup, Monoid)
 
 data Leaf = Leaf { _constructorUniversals :: [Universal], name :: String, constructorArgs :: [String], maybeType :: Maybe Type }
     deriving (Show, Eq, Generic, NFData)
