diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,19 @@
+5.4 (2024-01-26)
+
+  * Fix for build failure with GHC 9.8.1
+
+
+5.3 (2024-01-22)
+
+  * Fixed a non-exhaustive pattern match
+  * Removed unused imports and made most imports explicit
+  * Alphabetized exports for this module
+  * Used a better name than 'meta' in some code
+  * Metadata formatting indent changed from 3 spaces to 2
+  * Fixed parse failure for >1 source element
+  * Made most imports explicit
+
+
 5.2 (2023-08-09)
 
   * Fixed import issues with GHC 9.6.2 related to monad transformer functions
diff --git a/epub-metadata.cabal b/epub-metadata.cabal
--- a/epub-metadata.cabal
+++ b/epub-metadata.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 
 name:           epub-metadata
-version:        5.3
+version:        5.4
 synopsis:       Library for parsing epub document metadata
 description:    Library for parsing and manipulating epub document metadata. Supports epub versions 2 and 3. This library was constructed by studying the IDPF specifications for epub documents found here <http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm> and here <http://www.idpf.org/epub/30/spec/epub30-publications.html>
 category:       Codec, Text
diff --git a/src/app/epub-metadata-example.hs b/src/app/epub-metadata-example.hs
--- a/src/app/epub-metadata-example.hs
+++ b/src/app/epub-metadata-example.hs
@@ -5,7 +5,8 @@
 
 import Codec.Epub
 import Codec.Epub.Data.Package
-import Control.Monad.Except
+import Control.Monad.Except ( runExceptT )
+import Control.Monad.IO.Class ( liftIO )
 
 
 main :: IO ()
diff --git a/src/lib/Codec/Epub/IO.hs b/src/lib/Codec/Epub/IO.hs
--- a/src/lib/Codec/Epub/IO.hs
+++ b/src/lib/Codec/Epub/IO.hs
@@ -18,8 +18,8 @@
 import Control.Arrow.ListArrows ( (>>>), deep )
 import Control.Exception ( SomeException, evaluate, try )
 import Control.Monad ( (>=>), forM, liftM )
-import Control.Monad.Except ( MonadError, MonadIO, throwError )
-import Control.Monad.IO.Class ( liftIO )
+import Control.Monad.Except ( MonadError, throwError )
+import Control.Monad.IO.Class ( MonadIO, liftIO )
 import qualified Data.ByteString.Char8 as BS
 import Data.ByteString.Lazy ( fromChunks )
 import qualified Data.ByteString.Lazy as B
diff --git a/src/lib/Codec/Epub/Parse.hs b/src/lib/Codec/Epub/Parse.hs
--- a/src/lib/Codec/Epub/Parse.hs
+++ b/src/lib/Codec/Epub/Parse.hs
@@ -17,8 +17,8 @@
    where
 
 import Control.Arrow.ListArrows ( IOSLA, (>>>) )
-import Control.Monad.Except ( MonadError, MonadIO, throwError )
-import Control.Monad.IO.Class ( liftIO )
+import Control.Monad.Except ( MonadError, throwError )
+import Control.Monad.IO.Class ( MonadIO, liftIO )
 import Text.XML.HXT.Arrow.Namespace ( propagateNamespaces )
 import Text.XML.HXT.Arrow.XmlState ( no, runX, withValidate )
 import Text.XML.HXT.Arrow.XmlState.TypeDefs ( XIOState )
diff --git a/src/tests/Epub2/ParseGuide.hs b/src/tests/Epub2/ParseGuide.hs
--- a/src/tests/Epub2/ParseGuide.hs
+++ b/src/tests/Epub2/ParseGuide.hs
@@ -3,6 +3,7 @@
    where
 
 import Control.Monad.Except
+import Control.Monad.IO.Class ( liftIO )
 import System.FilePath
 import Test.HUnit
 
diff --git a/src/tests/Epub2/ParseMetadata.hs b/src/tests/Epub2/ParseMetadata.hs
--- a/src/tests/Epub2/ParseMetadata.hs
+++ b/src/tests/Epub2/ParseMetadata.hs
@@ -3,6 +3,7 @@
    where
 
 import Control.Monad.Except
+import Control.Monad.IO.Class ( liftIO )
 import qualified Data.Map.Strict as Map
 import System.FilePath
 import Test.HUnit
diff --git a/src/tests/ParsePackage.hs b/src/tests/ParsePackage.hs
--- a/src/tests/ParsePackage.hs
+++ b/src/tests/ParsePackage.hs
@@ -3,6 +3,7 @@
    where
 
 import Control.Monad.Except
+import Control.Monad.IO.Class ( liftIO )
 import System.FilePath
 import Test.HUnit
 
diff --git a/src/tests/ParseSpine.hs b/src/tests/ParseSpine.hs
--- a/src/tests/ParseSpine.hs
+++ b/src/tests/ParseSpine.hs
@@ -3,6 +3,7 @@
    where
 
 import Control.Monad.Except
+import Control.Monad.IO.Class ( liftIO )
 import System.FilePath
 import Test.HUnit
 
