diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,7 +6,13 @@
 and this project adheres to the
 [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
-## Unreleased
+## Unreleased    
+
+## [0.3.0.2] - 2026-09-10
+### Changed
+    - Exposed the hole pattern synonyms.
+    - Fixed the show instance for `HExp` to parens for holes instead of brackets.
+
 ## [0.3.0.1] - 2026-09-04
 ### Changed
     - We migrated to the hole syntax `$i(f)` from `$i{f}`, but we forgot to 
diff --git a/holeyexp.cabal b/holeyexp.cabal
--- a/holeyexp.cabal
+++ b/holeyexp.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.4
 name:           holeyexp
-version:        0.3.0.1
+version:        0.3.0.2
 license:        BSD-3-Clause
 license-file:   LICENSE.md
 maintainer:     Harley Eades III <harley.eades@gmail.com>
diff --git a/src/Data/HoleyExp/HExp.hs b/src/Data/HoleyExp/HExp.hs
--- a/src/Data/HoleyExp/HExp.hs
+++ b/src/Data/HoleyExp/HExp.hs
@@ -35,8 +35,8 @@
 1. \( t_1 * $(1,\mathsf{?}) * t_2 * $(2,\mathsf{?}) \), has chunks
    \(\{t_1,t_2\}\) and two empty holes indexed by \(1\) and \(2\).
 2. \( t_1 * $(5,f_5) * $(3,\mathsf{?}) * t_2 * $(7,f_7) \), has chunks
-   \(\{t_1,t_2\}\) and one empty holes indexed by \(3\) and a filled hole index
-   by \(7\) whose filling is \(f_2\).
+   \(\{t_1,t_2\}\) and one empty holes indexed by \(3\) and two filled holes index
+   by \(5\) whose filling is \(f_5\) and \(7\) whose filling is \(f_7\).
 
 Now if we choose some concrete sets for \(\mathsf{Txt}\) and \(\mathsf{Fill}\)
 then we can create more interesting expressions:
@@ -123,6 +123,9 @@
                            -- properties, if not then it's considered
                            -- undefined. This prevents a lot of boilerplate
                            -- pattern matching.
+                           ,pattern EmptyHole
+                           ,pattern FilledHole
+                           ,pattern UndefHole
                            ,pattern Empty
                            ,pattern Chunk
                            ,pattern Compose                           
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
@@ -131,9 +131,9 @@
     show (HExp (IChunk t) _) = DT.unpack . toText $ t    
     show (HExp (ICompose prefix i rest) (emptyHoles, filledHoles))
         = (DT.unpack . toText $ prefix) 
-        <> "$" <> show i <> "{"
+        <> "$" <> show i <> "("
         <> (if i `elem` emptyHoles then "" else (DT.unpack . toText . fToT $ filledHoles ! i))
-        <> "}" 
+        <> ")" 
         <> show (HExp rest (emptyHoles, filledHoles))
         where
             fToT :: filling -> text
diff --git a/src/Data/HoleyExp/Text.hs b/src/Data/HoleyExp/Text.hs
--- a/src/Data/HoleyExp/Text.hs
+++ b/src/Data/HoleyExp/Text.hs
@@ -21,7 +21,7 @@
 
 >>> let t = (chunk "Today's Temperature: ") +> (hole 1) +> (chunk " high/") +> (hole 2) +> (chunk " low") :: HExp Text Double
 >>> t
-Today's Temperature: $1{} high/$2{} low
+Today's Temperature: $1() high/$2() low
 
 >>> plugAll t $ \_ -> \i -> if i == 1 then Just 91.2 else if i == 2 then Just 87.0 else Nothing 
 Just "Today's Temperature: 91.2 high/87.0 low"
@@ -40,7 +40,7 @@
 We can also add a filling to holes in an expression:
 
 >>> "Today's Temperature: " <> (filled 1 92.2) <> " high/" <> (filled 2 91.2) <> " low" :: HExp Text Double
-Today's Temperature: $1{92.2} high/$2{91.2} low
+Today's Temperature: $1(92.2) high/$2(91.2) low
 
 -}
 module Data.HoleyExp.Text
