diff --git a/Text/Parsers/Frisby.hs b/Text/Parsers/Frisby.hs
--- a/Text/Parsers/Frisby.hs
+++ b/Text/Parsers/Frisby.hs
@@ -247,11 +247,7 @@
 
 -- the monad used for creating recursive values
 newtype PM s a = PM (PMImp a)
-    deriving(Monad,MonadFix,Functor)
-
-instance Applicative (PM s) where
-  (<*>) = ap
-  pure = return
+    deriving(Monad,Applicative,MonadFix,Functor)
 
 type PMImp a = State Token a
 
@@ -302,7 +298,7 @@
     (<>) = Slash
 
 instance Monoid (PE a) where
-    mappend = Slash
+    mappend = (Semigroup.<>)
     mempty = Failure
 
 
@@ -513,7 +509,7 @@
     f p@GetPos = return p
     f Rest = return Rest
     f (When p fn) = f p >>= \p' -> return (When p' fn)
-    f (PMap fn x) = liftM (PMap fn) (f x)
+    f (PMap fn x) = PMap fn `fmap` f x
     f (Star p) = f p >>= \x -> case x of
         Failure -> return $ Unit []
 --        Unit x -> return $ repeat x
diff --git a/frisby.cabal b/frisby.cabal
--- a/frisby.cabal
+++ b/frisby.cabal
@@ -1,7 +1,7 @@
+cabal-version:       3.0
 name:                frisby
-version:             0.2.4
-cabal-version:       >=1.6
-license:             BSD3
+version:             0.2.5
+license:             BSD-3-Clause
 copyright:           John Meacham (2006)
 author:              John Meacham <john@repetae.net>
 maintainer:          Ben Gamari <ben@smart-cactus.org>
@@ -23,14 +23,21 @@
                      routines to translate standard regex syntax into frisby parsers.
 extra-source-files:  Changelog.md
 category:            Text
-tested-with:         GHC == 7.6.*, GHC == 7.8.*, GHC == 7.10.*, GHC == 8.0.*, GHC == 8.2.*,
-                     GHC == 8.4.*, GHC == 8.6.*, GHC == 8.8.*, GHC == 8.10.*
+tested-with:         GHC == 8.4.*, GHC == 8.6.*, GHC == 8.8.*, GHC == 8.10.*,
+                     GHC == 9.0.*, GHC == 9.2.*, GHC == 9.4.*, GHC == 9.6.*,
+                     GHC == 9.8.*
 license-file:        LICENSE
 build-type:          Simple
 
 library
   exposed-modules:     Text.Parsers.Frisby, Text.Parsers.Frisby.Char
-  build-depends:       base>=4 && <5, fail, containers, mtl, array, semigroups
+  build-depends:       base>=4 && <5,
+                       fail,
+                       containers,
+                       mtl,
+                       array,
+                       semigroups
+  default-language:    Haskell2010
 
 source-repository head
   type:     git
