diff --git a/network-dns.cabal b/network-dns.cabal
--- a/network-dns.cabal
+++ b/network-dns.cabal
@@ -1,5 +1,5 @@
 Name: network-dns
-Version: 1.1
+Version: 1.1.0.1
 Category: Network
 Stability: experimental
 Synopsis: Domain Name System data structures
@@ -34,7 +34,6 @@
                , hashable        >= 1.1
                , containers      >= 0.4
                , data-serializer >= 0.3.2
-               , binary          >= 0.6.4
                , bytestring      >= 0.10
                , text-latin1     >= 0.2
                , text-printer    >= 0.5
diff --git a/src/Network/DNS.hs b/src/Network/DNS.hs
--- a/src/Network/DNS.hs
+++ b/src/Network/DNS.hs
@@ -64,7 +64,6 @@
 import qualified Data.ByteString.Char8 as BS8
 import qualified Data.ByteString.Lazy as BSL
 import qualified Data.ByteString.Builder as BB
-import qualified Data.Binary.Get as B
 import Data.Serializer (Serializer, Serializable, SizedSerializable)
 import qualified Data.Serializer as S
 import Data.Deserializer (Deserializer, Deserializable)
@@ -279,14 +278,13 @@
 
 evalDecomp ∷ Deserializer μ
            ⇒ Word16
-           → DecompT D.BinaryDeserializer α
            → DecompT μ α
+           → DecompT μ α
 evalDecomp len m = StateT $ \ptrs offset → do
-  buf ← BSL.fromStrict <$> D.take (fromIntegral len)
-  let getM = D.binaryDeserializer $ runStateT m ptrs offset
-  case B.runGetOrFail getM buf of
-    Left (_, _, e) → unexpected e
-    Right (_, _, (ptrs', _, x)) → return (ptrs', addToOffset len offset, x)
+    D.isolate (fromIntegral len) $ runStateT (m >>= drain) ptrs offset
+  where drain r = lift D.chunk >>= \case
+          bs | BS.null bs → return r
+          bs → incOffset (fromIntegral $ BS.length bs) >> drain r
 
 serializeHostName ∷ Serializer s ⇒ HostName → CompT s ()
 serializeHostName = go . hostNameLabels
