diff --git a/Text/Yaml.hs b/Text/Yaml.hs
--- a/Text/Yaml.hs
+++ b/Text/Yaml.hs
@@ -23,9 +23,11 @@
 import Prelude hiding (readList)
 import Text.Libyaml
 import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
 import Data.ByteString.Class
 import Data.Object
 import System.IO.Unsafe
+import Control.Arrow (first)
 
 encode :: (StrictByteString bs, ToObject o) => o -> bs
 encode = unsafePerformIO . encode'
@@ -59,14 +61,14 @@
                     , writeSingle y
                     , [EventDocumentEnd, EventStreamEnd]] where
     writeSingle :: Object -> [Event]
-    writeSingle (Scalar bs) = [EventScalar bs]
+    writeSingle (Scalar bs) = [EventScalar $ fromLazyByteString bs]
     writeSingle (Sequence ys) =
         (EventSequenceStart : concatMap writeSingle ys)
         ++ [EventSequenceEnd]
     writeSingle (Mapping pairs) =
         EventMappingStart : concatMap writePair pairs ++ [EventMappingEnd]
-    writePair :: (B.ByteString, Object) -> [Event]
-    writePair (k, v) = EventScalar k : writeSingle v
+    writePair :: (BL.ByteString, Object) -> [Event]
+    writePair (k, v) = EventScalar (fromLazyByteString k) : writeSingle v
 
 eventsToObject :: [Event] -> Object
 eventsToObject = fst . readSingle . dropWhile isIgnored where
@@ -79,7 +81,7 @@
     isIgnored _ = True
     readSingle :: [Event] -> (Object, [Event])
     readSingle [] = error "readSingle: no more events"
-    readSingle (EventScalar bs:rest) = (Scalar bs, rest)
+    readSingle (EventScalar bs:rest) = (Scalar $ toLazyByteString bs, rest)
     readSingle (EventSequenceStart:rest) = readList [] rest
     readSingle (EventMappingStart:rest) = readMap [] rest
     readSingle (x:_) = error $ "readSingle: " ++ show x
@@ -90,7 +92,8 @@
         let (next, rest) = readSingle events
          in readList (next : nodes) rest
     readMap :: [(B.ByteString, Object)] -> [Event] -> (Object, [Event])
-    readMap pairs (EventMappingEnd:rest) = (Mapping $ reverse pairs, rest)
+    readMap pairs (EventMappingEnd:rest) =
+        (Mapping $ map (first toLazyByteString) $ reverse pairs, rest)
     readMap pairs (EventScalar bs:events) =
         let (next, rest) = readSingle events
          in readMap ((fromStrictByteString bs, next) : pairs) rest
diff --git a/yaml.cabal b/yaml.cabal
--- a/yaml.cabal
+++ b/yaml.cabal
@@ -1,5 +1,5 @@
 name:            yaml
-version:         0.0.3
+version:         0.0.4
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -18,7 +18,7 @@
 library
     build-depends:   base >= 4 && < 5,
                      bytestring-class,
-                     data-object,
+                     data-object >= 0.0.2,
                      bytestring >= 0.9.1.4 && < 1,
                      haskell98
     exposed-modules: Text.Yaml
