diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# v2.0.0.1
+- Fix internal use of function unsupported in `base` version <4.19.
+- Add `-O2` compilation flag to cabal file that benefits from v2.0 refactor.
+
 # v2.0
 - Major code rewrite.
 - Add command-line flags:
diff --git a/lib/Network/MPD/Parse.hs b/lib/Network/MPD/Parse.hs
--- a/lib/Network/MPD/Parse.hs
+++ b/lib/Network/MPD/Parse.hs
@@ -18,8 +18,7 @@
 import qualified Network.MPD as MPD
 import Network.MPD
        ( Metadata(..), Song, PlaybackState(Stopped, Playing, Paused) )
-import Data.Maybe ( fromMaybe )
-import Data.List ( (!?) )
+import Data.Maybe ( fromMaybe, listToMaybe )
 
 {- | Wrapper for the output of 'getTag', which internally uses
 'Network.MPD.sgGetTag' to retrieve @Maybe@ ['Network.MPD.Value'] that
@@ -173,7 +172,7 @@
 songToTagField tag song = tagSingleOrList (MPD.sgGetTag tag song)
   where
     tagSingleOrList :: Maybe [MPD.Value] -> TagField
-    tagSingleOrList val | fmap length val == Just 1 = SingleTagField $ singleValueToString $ (fromMaybe [] val) !? 0
+    tagSingleOrList val | fmap length val == Just 1 = SingleTagField $ singleValueToString $ listToMaybe (fromMaybe [] val)
                         | fmap length val > Just 1 = MultiTagField $ multiValueToString val
                         | otherwise = SingleTagField Nothing
 
diff --git a/mpd-current-json.cabal b/mpd-current-json.cabal
--- a/mpd-current-json.cabal
+++ b/mpd-current-json.cabal
@@ -7,7 +7,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            2.0.0.0
+version:            2.0.0.1
 synopsis:           Print current MPD song and status as JSON
 
 tested-with: GHC == { 9.10.1, 9.4.8 }
@@ -81,3 +81,4 @@
                     -Wunused-packages
                     -fwrite-ide-info
                     -hiedir=.hie
+                    -O2
