diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -28,18 +28,18 @@
 import           Stat
 import           System.Console.CmdArgs
 import           System.Environment (getArgs, withArgs)
-import           System.Posix.Files
+import           System.Posix.Files hiding (fileBlockSize)
 import           Text.Printf
-import           Text.Regex.Posix
+import           Text.Regex.PCRE
 import           Unsafe.Coerce
 
 default (Integer, Text)
 
 version :: String
-version = "2.3.2"
+version = "2.4.0"
 
 copyright :: String
-copyright = "2014"
+copyright = "2024"
 
 sizesSummary :: String
 sizesSummary = "sizes v" ++ version ++ ", (C) John Wiegley " ++ copyright
@@ -72,7 +72,7 @@
     , baseTen    = def &= name "H" &= typ "BOOL"
                        &= help "Print amounts divided by 1000 rather than 1024"
     , exclude    = def &= name "x" &= typ "REGEX"
-                       &= help "Sort output by count (default: by size)"
+                       &= help "Exclude files whose path matches the REGEX"
     , minSize    = def &= name "m" &= typ "INT"
                        &= help "Smallest size to show, in MB (default: 10)"
     , minCount   = def &= name "M" &= typ "INT"
@@ -101,11 +101,14 @@
 newEntry :: FilePath -> Bool -> EntryInfo
 newEntry p = EntryInfo p 0 0
 
+instance Semigroup EntryInfo where
+  x <> y = seq x $ seq y $
+           entryCount      +~ y^.entryCount $
+           entryAllocSize  +~ y^.entryAllocSize $ x
+
 instance Monoid EntryInfo where
   mempty = newEntry "" False
-  x `mappend` y = seq x $ seq y $
-                  entryCount      +~ y^.entryCount $
-                  entryAllocSize  +~ y^.entryAllocSize $ x
+  mappend = (<>)
 
 instance NFData EntryInfo where
   rnf a = a `seq` ()
diff --git a/sizes.cabal b/sizes.cabal
--- a/sizes.cabal
+++ b/sizes.cabal
@@ -1,6 +1,6 @@
 Name: sizes
 
-Version:  2.3.2
+Version:  2.4.0
 Synopsis: Recursively show space (size and i-nodes) used in subdirectories
 
 Description: Recursively show space (size and i-nodes) used in subdirectories
@@ -12,7 +12,7 @@
 Maintainer:         John Wiegley <johnw@newartisans.com>
 Category:           Development
 Build-type:         Simple
-Cabal-version:      >= 1.8
+Cabal-version:      >= 1.10
 
 Extra-Source-Files: README.md Stat.hsc HsStat.h HsStat.c
 
@@ -24,16 +24,18 @@
     c-sources:	   HsStat.c
     ghc-options:   -threaded -with-rtsopts=-K64M
 
+    default-language: Haskell2010
+
     Build-depends: base            >= 4 && < 5
-                 , bytestring
                  , cmdargs         >= 0.10
                  , deepseq         >= 1.3
                  , lens            >= 2.8
                  , parallel-io     >= 0.3.2
-                 , regex-posix     >= 0.95
+                 , regex-pcre      >= 0.95
                  , system-fileio   >= 0.3.9
                  , system-filepath >= 0.4.7
                  , dlist           >= 0.5
+                 , semigroups
                  , text
                  , unix
 
