diff --git a/bench/Main.hs b/bench/Main.hs
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -5,7 +5,7 @@
 -------------------------------------------------------------------------------
 import           Control.DeepSeq.Generics
 import           Criterion.Main
-import           Data.ByteString.Builder
+import           Blaze.ByteString.Builder
 import           Data.String
 import qualified Network.URI              as NU
 -------------------------------------------------------------------------------
@@ -17,7 +17,6 @@
 instance NFData UserInfo
 instance NFData URI
 instance NFData RelativeRef
-instance NFData NU.URI
 instance NFData SchemaError
 instance NFData URIParseError
 
diff --git a/src/URI/ByteString/Internal.hs b/src/URI/ByteString/Internal.hs
--- a/src/URI/ByteString/Internal.hs
+++ b/src/URI/ByteString/Internal.hs
@@ -5,22 +5,24 @@
 module URI.ByteString.Internal where
 
 -------------------------------------------------------------------------------
+import           Blaze.ByteString.Builder           (Builder)
+import qualified Blaze.ByteString.Builder           as BB
+import qualified Blaze.ByteString.Builder.Char.Utf8 as BB
 import           Control.Applicative
 import           Control.Monad
 import           Data.Attoparsec.ByteString
-import qualified Data.Attoparsec.ByteString as A
+import qualified Data.Attoparsec.ByteString         as A
 import           Data.Bits
-import           Data.ByteString            (ByteString)
-import qualified Data.ByteString            as BS
-import           Data.ByteString.Builder    (Builder)
-import qualified Data.ByteString.Builder    as BB
-import           Data.Char                  (ord)
+import           Data.ByteString                    (ByteString)
+import qualified Data.ByteString                    as BS
+import           Data.Char                          (ord)
 import           Data.Ix
-import           Data.List                  (delete, intersperse, stripPrefix, (\\))
+import           Data.List                          (delete, intersperse,
+                                                     stripPrefix, (\\))
 import           Data.Maybe
 import           Data.Monoid
 import           Data.Word
-import           Text.Read                  (readMaybe)
+import           Text.Read                          (readMaybe)
 -------------------------------------------------------------------------------
 import           URI.ByteString.Types
 -------------------------------------------------------------------------------
@@ -56,7 +58,7 @@
 -- >>> BB.toLazyByteString $ serializeURI $ URI {uriScheme = Scheme {schemeBS = "http"}, uriAuthority = Just (Authority {authorityUserInfo = Nothing, authorityHost = Host {hostBS = "www.example.org"}, authorityPort = Nothing}), uriPath = "/foo", uriQuery = Query {queryPairs = [("bar","baz")]}, uriFragment = Just "quux"}
 -- "http://www.example.org/foo?bar=baz#quux"
 serializeURI :: URI -> Builder
-serializeURI URI {..} = scheme <> BB.string8 "://" <>
+serializeURI URI {..} = scheme <> BB.fromString "://" <>
                         serializeRelativeRef rr
   where
     scheme = bs $ schemeBS uriScheme
@@ -89,7 +91,7 @@
     userinfo = maybe mempty serializeUserInfo authorityUserInfo
     host = hostBS authorityHost
     port = maybe mempty packPort authorityPort
-    packPort (Port p) = c8 ':' <> BB.string8 (show p)
+    packPort (Port p) = c8 ':' <> BB.fromString (show p)
 
 
 -------------------------------------------------------------------------------
@@ -99,12 +101,12 @@
 
 -------------------------------------------------------------------------------
 bs :: ByteString -> Builder
-bs = BB.byteString
+bs = BB.fromByteString
 
 
 -------------------------------------------------------------------------------
 c8 :: Char -> Builder
-c8 = BB.char8
+c8 = BB.fromChar
 
 
 -------------------------------------------------------------------------------
@@ -720,7 +722,7 @@
 urlEncode' :: [Word8] -> ByteString -> Builder
 urlEncode' extraUnreserved = mconcat . map encodeChar . BS.unpack
     where
-      encodeChar ch | unreserved' ch = BB.word8 ch
+      encodeChar ch | unreserved' ch = BB.fromWord8 ch
                     | otherwise     = h2 ch
 
       unreserved' ch | ch >= 65 && ch <= 90  = True -- A-Z
diff --git a/uri-bytestring.cabal b/uri-bytestring.cabal
--- a/uri-bytestring.cabal
+++ b/uri-bytestring.cabal
@@ -1,5 +1,5 @@
 name:                uri-bytestring
-version:             0.1
+version:             0.1.1
 synopsis:            Haskell URI parsing as ByteStrings
 description: uri-bytestring aims to be an RFC3986 compliant URI parser that uses efficient ByteStrings for parsing and representing the URI data.
 license:             BSD3
@@ -19,6 +19,10 @@
   changelog.md
   bench/*.hs
 
+flag lib-Werror
+  default: False
+  manual: True
+
 library
   exposed-modules:
     URI.ByteString
@@ -31,11 +35,15 @@
 
       attoparsec       >= 0.10    && < 0.13
     , base             >= 4.6     && < 4.8
-    , bytestring       >= 0.10.2.0 && < 0.11
+    , bytestring       >= 0.9.1   && < 0.11
+    , blaze-builder    >= 0.3.0.0 && < 0.5
 
   hs-source-dirs:      src
   default-language:    Haskell2010
 
+  if flag(lib-Werror)
+    ghc-options: -Werror
+
   ghc-options: -Wall
 
 test-suite test
@@ -57,6 +65,9 @@
     , quickcheck-instances
   default-language:    Haskell2010
 
+  if flag(lib-Werror)
+    ghc-options: -Werror
+
   ghc-options: -Wall
 
 
@@ -73,6 +84,7 @@
     , deepseq-generics
     , network-uri
     , bytestring
+    , blaze-builder
 
 source-repository head
   type:     git
