diff --git a/src/Text/Megaparsec/Char/Tibetan.hs b/src/Text/Megaparsec/Char/Tibetan.hs
--- a/src/Text/Megaparsec/Char/Tibetan.hs
+++ b/src/Text/Megaparsec/Char/Tibetan.hs
@@ -7,3 +7,7 @@
 --
 consonantCharBo :: Parser Char
 consonantCharBo = oneOf ("ཨཅཆརཏཡཕཙཚཛའསདབངམགལཞཟཤཀཁཔནཐཇཉཝཧ" :: String)
+
+-- | Parse a digit as a char. 
+digitCharBo :: Parser Char
+digitCharBo = oneOf ("༠༡༢༣༤༥༦༧༨༩" :: String) <?> "digit char"
diff --git a/src/Text/Megaparsec/Lexer/Tibetan.hs b/src/Text/Megaparsec/Lexer/Tibetan.hs
--- a/src/Text/Megaparsec/Lexer/Tibetan.hs
+++ b/src/Text/Megaparsec/Lexer/Tibetan.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeFamilies #-}
 
 -- | Parser to parse Tibetan numerals
 module Text.Megaparsec.Lexer.Tibetan
@@ -10,7 +11,7 @@
 import Data.Either.Combinators
 import qualified Data.Text as T
 import Text.Megaparsec
-import Text.Megaparsec.Text
+import Text.Megaparsec.String
 import Text.Megaparsec.Prim
 import System.Environment
 
@@ -18,21 +19,21 @@
 --
 -- > λ > readBo "༣༢༠༥"
 -- > 3205
-readBo :: String -> Maybe Integer
-readBo = rightToMaybe . (runParser parseNumber "") . T.pack
+readBo :: (Integral a) => String -> Maybe a
+readBo = fmap fromIntegral . rightToMaybe . (runParser (parseNumber :: Parser Integer) "")
 
 -- | Parse Tibetan numerals, returning a positive integer
-parseNumber :: Parser Integer
+parseNumber :: (Integral a, MonadParsec e s m, Token s ~ Char) => m a
 parseNumber = do
     digits <- reverse <$> some parseNumeral
     (pure . (`div` 10) $ foldr ((*10) .* (+)) 0 digits) <?> "tibetan integer"
 
 -- | Parse a single digit
-parseNumeral :: Parser Integer
+parseNumeral :: (Integral a, MonadParsec e s m, Token s ~ Char) => m a
 parseNumeral = foldr (<|>) (parseDigit '༠' 0) $ zipWith parseDigit "༠༡༢༣༤༥༦༧༨༩" (0:[1..9])
 
--- | Parser a given char as a given integer
-parseDigit :: Char -> Integer -> Parser Integer
+-- | m a given char as a given integer
+parseDigit :: (Integral a, MonadParsec e s m, Token s ~ Char) => Char -> a -> m a
 parseDigit c i = do
     char c
     pure i
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -4,6 +4,7 @@
 import Test.Hspec.Megaparsec
 import Text.Megaparsec.Lexer.Tibetan
 import Text.Megaparsec
+import Text.Megaparsec.Text
 import TextShow.Data.Integral.Tibetan
 import qualified Data.Text as T
 
@@ -11,9 +12,9 @@
 main = hspec $ do
     describe "parseNumber" $ do
         it "parses Tibetan numerals as an Int" $ do
-            (runParser parseNumber "") tibStr `shouldParse` 6320
+            (runParser (parseNumber :: Parser Integer) "") tibStr `shouldParse` 6320
         it "fails when given a character that isn't a tibetan numeral" $ do
-            (runParser parseNumber "") `shouldFailOn` otherStr
+            (runParser (parseNumber :: Parser Integer) "") `shouldFailOn` otherStr
     describe "showBo" $ do
         it "displays a positive integer using tibetan numerals" $ do
             showBo 15 `shouldBe` Just ("༡༥")
diff --git a/tibetan-utils.cabal b/tibetan-utils.cabal
--- a/tibetan-utils.cabal
+++ b/tibetan-utils.cabal
@@ -1,5 +1,5 @@
 name: tibetan-utils
-version: 0.1.0.4
+version: 0.1.1.0
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -40,7 +40,7 @@
     main-is: Spec.hs
     build-depends:
         base >=4.9.0.0 && <4.10,
-        tibetan-utils >=0.1.0.4 && <0.2,
+        tibetan-utils >=0.1.1.0 && <0.2,
         hspec >=2.2.4 && <2.3,
         hspec-megaparsec >=0.2.1 && <0.3,
         text >=1.2.2.1 && <1.3,
