diff --git a/Text/URI.hs b/Text/URI.hs
--- a/Text/URI.hs
+++ b/Text/URI.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE FlexibleContexts #-}
+
 module Text.URI (
 	URI(..)
 	, dereferencePath
@@ -31,7 +33,7 @@
 import Data.Word
 import Codec.Binary.UTF8.String
 import Safe
-import Text.ParserCombinators.Parsec
+import Text.Parsec
 import Text.Printf
 
 ------------------------------------------------------------
@@ -243,8 +245,10 @@
 	d2 <- hexDigit
 	return $ chr (read $ "0x" ++ [d1,d2]) -- What possibly can go wrong?
 
+reservedP :: Stream s m Char => ParsecT s u m Char
 reservedP = satisfy isReserved
 unreservedP = satisfy isUnreserved
+genDelimP :: Stream s m Char => ParsecT s u m Char
 genDelimP = satisfy isGenDelim
 subDelimP = satisfy isSubDelim
 pCharP = satisfy isPChar
diff --git a/uri.cabal b/uri.cabal
--- a/uri.cabal
+++ b/uri.cabal
@@ -1,5 +1,5 @@
 Name: uri
-Version: 0.1.1
+Version: 0.1.2
 Synopsis: Library for working with URIs
 Category: Text
 Description: Library for working with URIs, including parsing, rendering, merging, escaping
@@ -18,4 +18,4 @@
 
 library
  Exposed-Modules: Text.URI
- Build-Depends: base >= 4 && < 5, parsec >= 2.1 && < 3.0, safe, utf8-string
+ Build-Depends: base >= 4 && < 5, parsec >= 3.0, safe, utf8-string
