diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@
 [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
 ## Unreleased
+## [0.3.0.0] - 2026-09-02
+### Changed
+    - Now builds with GHC 9.8.4. This required the removal of the 
+      TypeApplications extension in the Test.QuickCheck.HExp. In order to 
+      continue building we had to add new constraints to the genHExpNat, 
+      genHExp, and the Arbitrary instance for HExp.
 
 ## [0.2.0.0] - 2026-08-28
 ### Added
diff --git a/holeyexp.cabal b/holeyexp.cabal
--- a/holeyexp.cabal
+++ b/holeyexp.cabal
@@ -1,12 +1,13 @@
 cabal-version:  2.4
 name:           holeyexp
-version:        0.2.0.0
+version:        0.3.0.0
 license:        BSD-3-Clause
 license-file:   LICENSE.md
 maintainer:     Harley Eades III <harley.eades@gmail.com>
 author:         Harley Eades III
 
 tested-with: 
+    GHC == 9.8.4
     GHC == 9.10.*
     GHC == 9.12.*
     GHC == 9.14.1
@@ -48,12 +49,6 @@
 
 library
   import: depends  
-
-  if impl(ghc >= 9.10.0)
-    buildable: True
-  else
-    buildable: False
-    
   exposed-modules:
       Data.HoleyExp.HExp
       Data.HoleyExp.HExpInternal
diff --git a/src/Data/HoleyExp/HExpInternal.hs b/src/Data/HoleyExp/HExpInternal.hs
--- a/src/Data/HoleyExp/HExpInternal.hs
+++ b/src/Data/HoleyExp/HExpInternal.hs
@@ -13,14 +13,12 @@
 {-# LANGUAGE TypeFamilies                 #-}
 {-# LANGUAGE ScopedTypeVariables          #-}
 {-# LANGUAGE RankNTypes                   #-}
-{-# LANGUAGE TypeApplications             #-}
 {-# LANGUAGE BangPatterns                 #-}
 {-# LANGUAGE TupleSections                #-}
 {-# LANGUAGE PatternSynonyms              #-}
 {-# LANGUAGE MultiParamTypeClasses        #-}
 {-# LANGUAGE FlexibleInstances            #-}
 {-# OPTIONS_GHC -Wno-missing-export-lists #-}
-{-# LANGUAGE TypeAbstractions #-}
 {-# LANGUAGE FlexibleContexts #-}
 module Data.HoleyExp.HExpInternal where
 import Prelude                    hiding (null)
@@ -134,9 +132,12 @@
     show (HExp (ICompose prefix i rest) (emptyHoles, filledHoles))
         = (DT.unpack . toText $ prefix) 
         <> "$" <> show i <> "{"
-        <> (if i `elem` emptyHoles then "" else (DT.unpack . toText . (fillingToText @text) $ filledHoles ! i))
+        <> (if i `elem` emptyHoles then "" else (DT.unpack . toText . fToT $ filledHoles ! i))
         <> "}" 
         <> show (HExp rest (emptyHoles, filledHoles))
+        where
+            fToT :: filling -> text
+            fToT = fillingToText
 
 -- * Combinators
 
diff --git a/test/Test/QuickCheck/HExp.hs b/test/Test/QuickCheck/HExp.hs
--- a/test/Test/QuickCheck/HExp.hs
+++ b/test/Test/QuickCheck/HExp.hs
@@ -9,7 +9,6 @@
 used for property-based testing.
 -}
 {-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeAbstractions #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 {-# OPTIONS_GHC -Wno-unused-imports #-}
 module Test.QuickCheck.HExp
@@ -35,24 +34,23 @@
 genChunk = chunk <$> arbitrary
 
 genHoleFilling :: Arbitrary filling => Gen (Maybe filling)
-genHoleFilling @filling = sized $ \n -> 
+genHoleFilling = sized $ \n -> 
     frequency
         [ (1, pure Nothing),
-          (n, (arbitrary :: Gen filling) >>= (pure . Just))
+          (n, (arbitrary) >>= (pure . Just))
         ]
 
-genHExpNat :: (Arbitrary text, Arbitrary filling) => Natural -> Gen (HExp text filling)
+genHExpNat :: (Monoid text, Arbitrary text, Arbitrary filling) => Natural -> Gen (HExp text filling)
 genHExpNat 0 = genChunk
-genHExpNat @text n = do (HExp t holeProps) <- genHExpNat $ n - 1
-                        h <- arbitrary :: Gen Natural
-                        f <- genHoleFilling
-                        c <- arbitrary :: Gen text
-                        let t' = ICompose c h t                      
-                        pure $ HExp t' $ holeProps `updateFreshHolePropsWith` (h,f)
+genHExpNat n = do t <- genHExpNat $ n - 1
+                  h <- arbitrary :: Gen Natural
+                  f <- genHoleFilling
+                  c <- genChunk
+                  pure $ c <> (maybe (empty h) (filled h) f) <> t
 
-genHExp :: (Arbitrary text, Arbitrary filling) => Gen (HExp text filling)
+genHExp :: (Monoid text, Arbitrary text, Arbitrary filling) => Gen (HExp text filling)
 genHExp = arbitrary >>= genHExpNat 
 
-instance (Arbitrary text, Arbitrary filling) => Arbitrary (HExp text filling) where
+instance (Monoid text, Arbitrary text, Arbitrary filling) => Arbitrary (HExp text filling) where
     arbitrary :: Gen (HExp text filling)
     arbitrary = genHExp
