diff --git a/Text/XML/Enumerator/Parse.hs b/Text/XML/Enumerator/Parse.hs
--- a/Text/XML/Enumerator/Parse.hs
+++ b/Text/XML/Enumerator/Parse.hs
@@ -71,7 +71,7 @@
     ) where
 import Data.Attoparsec.Text
     ( char, Parser, takeWhile1, skipWhile, string
-    , manyTill, takeWhile, try, anyChar, satisfyWith, endOfInput
+    , manyTill, takeWhile, try, anyChar, endOfInput, hexadecimal, decimal
     )
 import qualified Data.Attoparsec.Text as A
 import Data.Attoparsec.Text.Enumerator (iterParser)
@@ -344,34 +344,10 @@
         res <- hexadecimal
         char' ';'
         return res
-    hexadecimal = do
-        x <- hex
-        hexadecimal' x
-    hexadecimal' x = (do
-        y <- hex
-        hexadecimal' $ x * 16 + y
-        ) <|> return x
-    hex = satisfyWith hex' (< 16)
-    hex' w
-        | '0' <= w && w <= '9' = fromEnum w - fromEnum '0'
-        | 'A' <= w && w <= 'Z' = fromEnum w - fromEnum 'A' + 10
-        | 'a' <= w && w <= 'z' = fromEnum w - fromEnum 'a' + 10
-        | otherwise = 16 -- failing case
     parseEntityDig = do
         res <- decimal
         char' ';'
         return res
-    decimal = do
-        x <- dig
-        decimal' x
-    decimal' x = (do
-        y <- dig
-        decimal' $ x * 10 + y
-        ) <|> return x
-    dig = satisfyWith dig' (< 10)
-    dig' w
-        | '0' <= w && w <= '9' = fromEnum w - fromEnum '0'
-        | otherwise = 10 -- failing case
     parseEntityWord = do
         s <- takeWhile1 (/= ';')
         char' ';'
diff --git a/xml-enumerator.cabal b/xml-enumerator.cabal
--- a/xml-enumerator.cabal
+++ b/xml-enumerator.cabal
@@ -1,5 +1,5 @@
 name:            xml-enumerator
-version:         0.1.0.1
+version:         0.1.0.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michaels@suite-sol.com>
