diff --git a/Network/Wai/Util.hs b/Network/Wai/Util.hs
--- a/Network/Wai/Util.hs
+++ b/Network/Wai/Util.hs
@@ -27,10 +27,11 @@
 import qualified Blaze.ByteString.Builder.Char.Utf8 as Builder
 import qualified Data.Aeson as Aeson
 import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy.Builder as TL
 import qualified Data.CaseInsensitive as CI
 
 -- | Build an Application that supports multiple Accept types (Content Negotiation)
-handleAcceptTypes :: (MonadIO m) => [(String, m Response)] -> Request -> m Response
+handleAcceptTypes :: (Monad m) => [(String, m Response)] -> Request -> m Response
 handleAcceptTypes handlers req =
 	fromMaybe notAcceptable handler
 	where
@@ -74,19 +75,25 @@
 replaceHeader' (n, v) = ((n,v):) . filter ((/=n) . fst)
 
 -- | Smart constructor to build a 'Response' from a 'String'
-string :: (MonadIO m) => Status -> ResponseHeaders -> String -> m Response
+string :: (Monad m) => Status -> ResponseHeaders -> String -> m Response
 string status headers = return . defHeader defCT . ResponseBuilder status headers . Builder.fromString
 	where
 	Just defCT = stringHeader ("Content-Type", "text/plain; charset=utf-8")
 
 -- | Smart constructor to build a 'Response' from a 'Text'
-text :: (MonadIO m) => Status -> ResponseHeaders -> Text -> m Response
+text :: (Monad m) => Status -> ResponseHeaders -> Text -> m Response
 text status headers = return . defHeader defCT . ResponseBuilder status headers . Builder.fromText
 	where
 	Just defCT = stringHeader ("Content-Type", "text/plain; charset=utf-8")
 
+-- | Smart constructor to build a 'Response' from a 'Data.Text.Lazy.Builder.Builder'
+textBuilder :: (Monad m) => Status -> ResponseHeaders -> TL.Builder -> m Response
+textBuilder status headers = return . defHeader defCT . ResponseBuilder status headers . Builder.fromLazyText . TL.toLazyText
+	where
+	Just defCT = stringHeader ("Content-Type", "text/plain; charset=utf-8")
+
 -- | Smart constructor to build a JSON 'Response' using Aeson
-json :: (MonadIO m, Aeson.ToJSON a) => Status -> ResponseHeaders -> a -> m Response
+json :: (Monad m, Aeson.ToJSON a) => Status -> ResponseHeaders -> a -> m Response
 json status headers = return . defHeader defCT . responseLBS status headers . Aeson.encode . Aeson.toJSON
 	where
 	Just defCT = stringHeader ("Content-Type", "application/json; charset=utf-8")
diff --git a/wai-util.cabal b/wai-util.cabal
--- a/wai-util.cabal
+++ b/wai-util.cabal
@@ -1,5 +1,5 @@
 name:            wai-util
-version:         0.2
+version:         0.3
 cabal-version:   >= 1.8
 license:         OtherLicense
 license-file:    COPYING
