diff --git a/plist.cabal b/plist.cabal
--- a/plist.cabal
+++ b/plist.cabal
@@ -1,5 +1,5 @@
 name:                    plist
-version:                 0.0.5
+version:                 0.0.6
 license:                 BSD3
 license-file:            LICENSE
 author:                  Yuras Shumovich <shumovichy@gmail.com>,
@@ -28,7 +28,8 @@
 library
   hs-source-dirs:        src
   build-depends:         base >= 4.3 && < 5,
-                         dataenc -any,
+                         base64-bytestring >= 1.0,
+                         bytestring >= 0.10,
                          hxt >= 9 && < 10
   exposed-modules:       Text.XML.Plist
                          Text.XML.Plist.PlObject
diff --git a/src/Text/XML/Plist/Read.hs b/src/Text/XML/Plist/Read.hs
--- a/src/Text/XML/Plist/Read.hs
+++ b/src/Text/XML/Plist/Read.hs
@@ -30,7 +30,9 @@
 import Control.Arrow.ArrowTree
 import Text.XML.HXT.DOM.TypeDefs
 import Control.Arrow.ArrowIf
-import Codec.Binary.Base64
+import Data.ByteString.Char8 (pack)
+import Data.ByteString (unpack)
+import Data.ByteString.Base64
 import Data.Maybe
 
 -- | Read 'PlObject' from file.
@@ -67,12 +69,14 @@
   , hasName "dict" :-> (readDict >>> arr PlDict)
   , hasName "data" :-> (
     innerText >>>
-    arr (decode . unchop . lines) >>>
+    arr (decode' . foldr (++) "" . lines) >>>
     isA isJust >>>
     arr fromJust >>>
     arr PlData
     )
   , hasName "date" :-> (innerText >>> arr PlDate) ]
+  where
+    decode' = either (const Nothing) Just . fmap unpack . decode . pack
 
 readDict :: ArrowXml a => a XmlTree [(String, PlObject)]
 readDict = listA $ readDict' $< listA (getChildren >>> isElem)
diff --git a/src/Text/XML/Plist/Write.hs b/src/Text/XML/Plist/Write.hs
--- a/src/Text/XML/Plist/Write.hs
+++ b/src/Text/XML/Plist/Write.hs
@@ -11,7 +11,7 @@
 -- | Generating property list format
 --
 -----------------------------------------------------------------------------
-
+{-# LANGUAGE OverloadedStrings #-}
 module Text.XML.Plist.Write (
 
 writePlistToFile,
@@ -23,15 +23,16 @@
 
 import Text.XML.Plist.PlObject
 import Text.XML.HXT.Arrow.XmlState
-import Codec.Binary.Base64
 import Control.Monad (void, liftM)
-
 import Control.Arrow.IOStateListArrow
 import Text.XML.HXT.Arrow.WriteDocument
 import Text.XML.HXT.Arrow.XmlArrow
 import Control.Arrow
 import Control.Arrow.ArrowList
 import Text.XML.HXT.DOM.TypeDefs
+import Data.ByteString.Base64 (encode, joinWith)
+import Data.ByteString (pack)
+import Data.ByteString.Char8 (unpack)
 
 -- | Write 'PlObject' to file
 writePlistToFile :: String -> PlObject -> IO ()
@@ -70,5 +71,5 @@
   elems = concatMap toXml objects
   toXml (key, val) = [selem "key" [txt key], objectToXml val]
 objectToXml (PlData dat) = selem "data" [txt $ enc dat] where
-  enc = (++ "\n") . foldr ((++) . ("\n" ++)) "" . chop 20 . encode
+  enc = unpack . joinWith "\n" 20 . encode . pack
 objectToXml (PlDate date) = selem "date" [txt date]
