diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,11 @@
 [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
 ## Unreleased
+## [0.3.0.1] - 2026-09-04
+### Changed
+    - We migrated to the hole syntax `$i(f)` from `$i{f}`, but we forgot to 
+      migrate the parser combinators.
+
 ## [0.3.0.0] - 2026-09-02
 ### Changed
     - Now builds with GHC 9.8.4. This required the removal of the 
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.0
+version:        0.3.0.1
 license:        BSD-3-Clause
 license-file:   LICENSE.md
 maintainer:     Harley Eades III <harley.eades@gmail.com>
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
@@ -135,7 +135,7 @@
 
             charTextFillingParser :: Parsec TParseError Text Char
             charTextFillingParser = choice [
-                    satisfy (\c -> c /= '{' && c /= '}' && c /= '\\'),
+                    satisfy (\c -> c /= '(' && c /= ')' && c /= '\\'),
                     escapeCharTextFillingParser
                 ]
 
@@ -220,11 +220,11 @@
 holeFillingParser = maybe n p (parseFilling @Text)
     where
         -- If there is no filling, then skip the braces.
-        n = (skip $ string "{}") >> pure Nothing
+        n = (skip $ string "()") >> pure Nothing
 
         p :: (Text -> Either Text filling) -> Parser (Maybe filling)
         p expParser = do
-            f <- MT.between (char '{') (char '}') $ many $ hExpCharParser True
+            f <- MT.between (char '(') (char ')') $ many $ hExpCharParser True
             if L.null f
             then pure Nothing 
             else do let e = expParser . DT.pack $ f
@@ -257,22 +257,22 @@
 
 -- | Parse an expression character. These are any unicode character where the
 -- characters 
--- > ["$","{","}","\\"] 
+-- > ["$","(",")","\\"] 
 -- are escaped when parsing a hole's filling,
 -- otherwise just @'$'@ needs to be escaped.
 hExpCharParser :: Bool -> Parser Char
 hExpCharParser filling = choice [
-        satisfy (\c -> c /= '$' && c /= '\'' && (if filling then c /= '{' && c /= '}' else True) && c /= '\\'),
+        satisfy (\c -> c /= '$' && c /= '\'' && (if filling then c /= '(' && c /= ')' else True) && c /= '\\'),
         escapedHExpCharParser
     ]
 
 -- | Parsed an escaped character; one of, 
--- > ["\\$"","\\{"","\\}","\\\\"]
+-- > ["\\$"","\\("","\\)","\\\\"]
 -- .
 escapedHExpCharParser :: Parser Char
 escapedHExpCharParser = do
     skipCount 1 (char '\\')
-    satisfy (\c -> c == '$' || c == '{' || c == '}' || c == '\'')
+    satisfy (\c -> c == '$' || c == '(' || c == ')' || c == '\'')
 
 -- * Helper parsers
 
diff --git a/test/Data/HoleyExp/HExpInternalSpec.hs b/test/Data/HoleyExp/HExpInternalSpec.hs
--- a/test/Data/HoleyExp/HExpInternalSpec.hs
+++ b/test/Data/HoleyExp/HExpInternalSpec.hs
@@ -34,9 +34,9 @@
             describe "Holes:" $ do
                 test_case "no index"                 test_parseFail1
                 test_case "negative index"           test_parseFail2
-                test_case "no opening brace"         test_parseFail3
-                test_case "no closing brace"         test_parseFail4
-                test_case "non-escaped curly brace"  test_parseFail5
+                test_case "no opening paren"         test_parseFail3
+                test_case "no closing paren"         test_parseFail4
+                test_case "non-escaped paren"        test_parseFail5
                 test_case "non-escaped backslash"    test_parseFail6
                 test_case "filling in unit hole"     test_parseFail7
 
@@ -62,42 +62,42 @@
 
 test_parseFail1 :: UnitTest (Maybe (HExp Text Text))
 test_parseFail1 = UnitTest {
-         test_result=parseTest testParseHExp "foo${a}"
+         test_result=parseTest testParseHExp "foo$(a)"
         ,test_output=Nothing
     }
 
 test_parseFail2 :: UnitTest (Maybe (HExp Text Text))
 test_parseFail2 = UnitTest {
-         test_result=parseTest testParseHExp "foo$-1{a}"
+         test_result=parseTest testParseHExp "foo$-1(a)"
         ,test_output=Nothing
     }
 
 test_parseFail3 :: UnitTest (Maybe (HExp Text Text))
 test_parseFail3 = UnitTest {
-         test_result=parseTest testParseHExp "foo$1a}bar"
+         test_result=parseTest testParseHExp "foo$1a)bar"
         ,test_output=Nothing
     }
 
 test_parseFail4 :: UnitTest (Maybe (HExp Text Text))
 test_parseFail4 = UnitTest {
-         test_result=parseTest testParseHExp "foo$1{abar"
+         test_result=parseTest testParseHExp "foo$1(abar"
         ,test_output=Nothing
     }
 
 test_parseFail5 :: UnitTest (Maybe (HExp Text Text))
 test_parseFail5 = UnitTest {
-         test_result=parseTest testParseHExp "foo$1{{a}bar"
+         test_result=parseTest testParseHExp "foo$1((a)bar"
         ,test_output=Nothing
     }
 
 test_parseFail6 :: UnitTest (Maybe (HExp Text Text))
 test_parseFail6 = UnitTest {
-         test_result=parseTest testParseHExp "foo$1{\\a}bar"
+         test_result=parseTest testParseHExp "foo$1(\\a)bar"
         ,test_output=Nothing
     }
 
 test_parseFail7 :: UnitTest (Maybe (HExp Text ()))
 test_parseFail7 = UnitTest {
-         test_result=parseTest testParseUnitHExp "foo$1{aa}bar"
+         test_result=parseTest testParseUnitHExp "foo$1(aa)bar"
         ,test_output=Nothing
     }
