diff --git a/Language/C/Parser/Lexer.x b/Language/C/Parser/Lexer.x
--- a/Language/C/Parser/Lexer.x
+++ b/Language/C/Parser/Lexer.x
@@ -16,13 +16,11 @@
     lexToken
   ) where
 
+#if !MIN_VERSION_base(4,8,0)
 import Control.Applicative
+#endif /*!MIN_VERSION_base(4,8,0) */
 import Control.Monad (when)
-import Control.Monad.Error
-import Control.Monad.Exception
-import Control.Monad.Identity
 import Control.Monad.State
-import Control.Monad.Trans
 import qualified Data.ByteString.Char8 as B
 import Data.Char (isAlphaNum,
                   isDigit,
diff --git a/Language/C/Parser/Monad.hs b/Language/C/Parser/Monad.hs
--- a/Language/C/Parser/Monad.hs
+++ b/Language/C/Parser/Monad.hs
@@ -88,7 +88,6 @@
 import Control.Applicative (Applicative(..))
 #endif /* !MIN_VERSION_base(4,8,0) */
 import Control.Monad.Exception
-import Control.Monad.Identity
 import Control.Monad.State
 import Data.Bits
 import qualified Data.ByteString.Char8 as B
@@ -148,24 +147,23 @@
 newtype P a = P { runP :: PState -> Either SomeException (a, PState) }
 
 instance Functor P where
-    fmap f x = x >>= return . f
+    fmap f mx = P $ \s -> case runP mx s of
+                            Left e         -> Left e
+                            Right (x, s')  -> Right (f x, s')
 
 instance Applicative P where
-    pure  = return
-    (<*>) = ap
+    pure x = P $ \s -> Right (x, s)
 
-instance Monad P where
-    m >>= k = P $ \s ->
-        case runP m s of
-          Left e         -> Left e
-          Right (a, s')  -> runP (k a) s'
+    mf <*> mx = P $ \s -> case runP mf s of
+                            Left e         -> Left e
+                            Right (f, s')  -> runP (fmap f mx) s'
 
-    m1 >> m2 = P $ \s ->
-        case runP m1 s of
-          Left e         -> Left e
-          Right (_, s')  -> runP m2 s'
+instance Monad P where
+    m >>= k = P $ \s -> case runP m s of
+                          Left e         -> Left e
+                          Right (a, s')  -> runP (k a) s'
 
-    return a = P $ \s -> Right (a, s)
+    return = pure
 
 #if MIN_VERSION_base(4,13,0)
 instance MonadFail P where
diff --git a/language-c-quote.cabal b/language-c-quote.cabal
--- a/language-c-quote.cabal
+++ b/language-c-quote.cabal
@@ -1,6 +1,6 @@
 name:          language-c-quote
-version:       0.13
-cabal-version: >= 1.10
+version:       0.13.0.1
+cabal-version: 2.0
 license:       BSD3
 license-file:  LICENSE
 copyright:     (c) 2006-2011 Harvard University
@@ -14,9 +14,9 @@
 bug-reports:   https://github.com/mainland/language-c-quote/issues
 category:      Language
 synopsis:      C/CUDA/OpenCL/Objective-C quasiquoting library.
-tested-with:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.3, GHC==7.10.3, GHC==8.0.2,
-               GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.4, GHC==8.10.4,
-               GHC==9.0.1
+tested-with:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2,
+               GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.4, GHC==8.10.7,
+               GHC==9.0.2, GHC==9.2.7, GHC==9.4.4, GHC==9.6.1
 
 description:
   This package provides a general parser for the C language, including most GCC
@@ -42,7 +42,7 @@
   build-depends:
     array                  >= 0.2   && < 0.6,
     base                   >= 4.5   && < 5,
-    bytestring             >= 0.9   && < 0.11,
+    bytestring             >= 0.9   && < 0.12,
     containers             >= 0.4   && < 0.7,
     exception-mtl          >= 0.3   && < 0.5,
     exception-transformers >= 0.3   && < 0.5,
@@ -68,14 +68,14 @@
     build-depends: haskell-exp-parser >= 0.1 && < 0.2
 
   if impl(ghc < 7.4)
-    build-tools:
-      alex,
-      happy
+    build-tool-depends:
+      alex:alex,
+      happy:happy
 
   if impl(ghc >= 7.4)
-    build-tools:
-      alex >=3,
-      happy
+    build-tool-depends:
+      alex:alex >=3,
+      happy:happy
 
   exposed-modules:
     Language.C
@@ -117,7 +117,7 @@
   build-depends:
     HUnit                >= 1.2 && < 1.7,
     base                 >= 4   && < 5,
-    bytestring           >= 0.9 && < 0.11,
+    bytestring           >= 0.9 && < 0.12,
     language-c-quote,
     mainland-pretty      >= 0.7 && < 0.8,
     srcloc               >= 0.4 && < 0.7,
