diff --git a/MassDns.hs b/MassDns.hs
--- a/MassDns.hs
+++ b/MassDns.hs
@@ -7,6 +7,7 @@
 
 module Main where
 
+import qualified Data.ByteString.Char8 as Bc
 import Control.ContStuff
 import Network.DnsCache
 import System.Environment
@@ -14,12 +15,12 @@
 import Text.Printf
 
 
-printEntry :: String -> String -> [String] -> IO ()
+printEntry :: Domain -> String -> [String] -> IO ()
 printEntry _ _ [] = return ()
-printEntry d t es = printf "%s %s %s\n" d t (unwords es)
+printEntry d t es = printf "%s %s %s\n" (Bc.unpack d) t (unwords es)
 
 
-printDns :: Int -> MassType -> [String] -> IO ()
+printDns :: Int -> MassType -> [Domain] -> IO ()
 printDns numThreads mtype domains =
     seq mtype .
     withDnsStateT numThreads 300 .
@@ -28,7 +29,7 @@
         liftIO $ do
             printEntry dom "A"    $ map show (massA res)
             printEntry dom "AAAA" $ map show (massAAAA res)
-            printEntry dom "MX"   $ massMX res
+            printEntry dom "MX"   $ map show (massMX res)
 
 
 putHelp :: IO ()
@@ -53,7 +54,8 @@
     case args of
       ["-h"]             -> putHelp
       ["--help"]         -> putHelp
-      [ntStr,typeStr]    -> fmap lines getContents >>=
-                            printDns (read ntStr) (toMassType typeStr)
-      ntStr:typeStr:doms -> printDns (read ntStr) (toMassType typeStr) doms
+      [ntStr,typeStr]    ->
+          fmap (map Bc.pack . lines) getContents >>=
+          printDns (read ntStr) (toMassType typeStr)
+      ntStr:typeStr:doms -> printDns (read ntStr) (toMassType typeStr) (map Bc.pack doms)
       _                  -> putHelp
diff --git a/Network/DnsCache.hs b/Network/DnsCache.hs
--- a/Network/DnsCache.hs
+++ b/Network/DnsCache.hs
@@ -36,6 +36,7 @@
     )
     where
 
+import qualified Data.ByteString.Char8 as Bc
 import qualified Data.Map as M
 import Control.Concurrent hiding (forkIO)
 import Control.ContStuff
@@ -248,7 +249,7 @@
             case cmd of
               Resolve dom' cacheVar dnsLookup waiter ->
                   liftIO $ do
-                      let dom = map toLower dom'
+                      let dom = Bc.map toLower dom'
                       mayResVar <- newEmptyMVar
                       putMVar cacheVar (CacheRequest dom (putMVar mayResVar))
                       mayResolve <- takeMVar mayResVar
diff --git a/dnscache.cabal b/dnscache.cabal
--- a/dnscache.cabal
+++ b/dnscache.cabal
@@ -1,5 +1,5 @@
 Name:          dnscache
-Version:       1.0.2
+Version:       1.1.0
 Category:      Network
 Synopsis:      Caching DNS resolver library and mass DNS resolver utility
 Maintainer:    Ertugrul Söylemez <es@ertes.de>
@@ -18,9 +18,10 @@
 Library
     Build-depends:
         base >= 4 && <= 5,
+        bytestring >= 0.9.1,
         containers >= 0.3.0.0,
         contstuff >= 1.2.0,
-        dns >= 0.1.0,
+        dns >= 0.3.2 && < 0.4,
         iproute >= 1.2.0,
         time >= 1.1.4
     GHC-Options: -W
