diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+#### 1.5.0.6
+
+* Improve performance, thanks to David Farrell
+
 #### 1.5.0.5
 
 * Add license field in cabal file
diff --git a/src/Network/URI/Encode.hs b/src/Network/URI/Encode.hs
--- a/src/Network/URI/Encode.hs
+++ b/src/Network/URI/Encode.hs
@@ -104,7 +104,7 @@
 -- following RFC 3986.
 
 isAllowed :: Char -> Bool
-isAllowed c = c `elem` (['A'..'Z'] ++ ['a'..'z'] ++ ['0'..'9'] ++ "-_.~")
+isAllowed = isUnreserved
 
 -------------------------------------------------------------------------------
 -- | "Fix" a String before encoding. This actually breaks the string,
diff --git a/uri-encode.cabal b/uri-encode.cabal
--- a/uri-encode.cabal
+++ b/uri-encode.cabal
@@ -1,8 +1,8 @@
 name:                uri-encode
-version:             1.5.0.5
+version:             1.5.0.6
 description:         Unicode aware uri-encoding.
 synopsis:            Unicode aware uri-encoding.
-cabal-version:       >= 1.8
+cabal-version:       >= 1.10
 category:            Network, Web
 author:              Silk
 maintainer:          code@silk.co
@@ -41,6 +41,7 @@
     build-depends: network-uri >= 2.6
   else
     build-depends: network (>= 2.2 && < 2.4.1.0) || (> 2.4.1.0 && < 2.6)
+  default-language: Haskell2010
 
 executable uri-encode
   main-is:           URIEncode.hs
@@ -59,6 +60,7 @@
       build-depends: network (>= 2.2 && < 2.4.1.0) || (> 2.4.1.0 && < 2.6)
   else
     buildable:      False
+  default-language: Haskell2010
 
 executable uri-decode
   main-is:           URIDecode.hs
@@ -77,3 +79,4 @@
       build-depends: network (>= 2.2 && < 2.4.1.0) || (> 2.4.1.0 && < 2.6)
   else
     buildable:       False
+  default-language: Haskell2010
