diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,5 @@
+2014-07-25 Rodrigo Setti <rodrigosetti@gmail.com>
+
+	* Initial version: Serialize instances tested for consistency.
+	* Missing: Extension types
+
diff --git a/Data/MessagePack.hs b/Data/MessagePack.hs
--- a/Data/MessagePack.hs
+++ b/Data/MessagePack.hs
@@ -1,3 +1,18 @@
+{-|
+Module      : Data.MessagePack
+Description : Object data type with Serialize instances for it
+Copyright   : (c) Rodrigo Setti, 2014
+License     : MIT
+Maintainer  : rodrigosetti@gmail.com
+Stability   : experimental
+Portability : portable
+
+@Object@ is a message pack object, and it have constructors for all message
+pack types.
+
+The @Serialize@ instances define how Object values may be serialized and
+deserialized to message pack binary format, following the specification.
+-}
 module Data.MessagePack where
 
 import Control.Applicative
@@ -45,7 +60,7 @@
     put (ObjectDouble d)   = putWord8 float64 >> putFloat64be d
 
     put (ObjectString t) =
-        header >> mapM_ put (BS.unpack bytes)
+        header >> putByteString bytes
      where
         bytes = encodeUtf8 t
         size  = BS.length bytes
@@ -55,10 +70,10 @@
           | size < 0x10000 = putWord8 str16 >> putWord16be (fromIntegral size)
           | otherwise      = putWord8 str32 >> putWord32be (fromIntegral size)
 
-    put (ObjectBinary b) =
-        header >> mapM_ put (BS.unpack b)
+    put (ObjectBinary bytes) =
+        header >> putByteString bytes
       where
-        size  = BS.length b
+        size  = BS.length bytes
         header
           | size < 0x100   = putWord8 bin8  >> putWord8 (fromIntegral size)
           | size < 0x10000 = putWord8 bin16 >> putWord16be (fromIntegral size)
@@ -91,11 +106,11 @@
           | k == true                         = return $ ObjectBool True
 
           | k == bin8                         = do n <- fromIntegral <$> getWord8
-                                                   ObjectBinary <$> getBytes n
+                                                   ObjectBinary <$> getByteString n
           | k == bin16                        = do n <- fromIntegral <$> getWord16be
-                                                   ObjectBinary <$> getBytes n
+                                                   ObjectBinary <$> getByteString n
           | k == bin32                        = do n <- fromIntegral <$> getWord32be
-                                                   ObjectBinary <$> getBytes n
+                                                   ObjectBinary <$> getByteString n
 
           | k == float32                      = ObjectFloat  <$> getFloat32be
           | k == float64                      = ObjectDouble <$> getFloat64be
@@ -112,13 +127,13 @@
           | k == int64                        = ObjectInt <$> fromIntegral <$> (get :: Get Int64)
 
           | k .&. fixstrMask    == fixstr     = let n = fromIntegral $ k .&. complement fixstrMask
-                                                in  ObjectString <$> decodeUtf8 <$> getBytes n
+                                                in  ObjectString <$> decodeUtf8 <$> getByteString n
           | k == str8                         = do n <- fromIntegral <$> getWord8
-                                                   ObjectString <$> decodeUtf8 <$> getBytes n
+                                                   ObjectString <$> decodeUtf8 <$> getByteString n
           | k == str16                        = do n <- fromIntegral <$> getWord16be
-                                                   ObjectString <$> decodeUtf8 <$> getBytes n
+                                                   ObjectString <$> decodeUtf8 <$> getByteString n
           | k == str32                        = do n <- fromIntegral <$> getWord32be
-                                                   ObjectString <$> decodeUtf8 <$> getBytes n
+                                                   ObjectString <$> decodeUtf8 <$> getByteString n
 
           | k .&. fixarrayMask  == fixarray   = let n = fromIntegral $ k .&. complement fixarrayMask
                                                 in  ObjectArray <$> replicateM n get
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+# messagepack
+
+[![Build Status](https://travis-ci.org/rodrigosetti/messagepack.svg?branch=master)](https://travis-ci.org/rodrigosetti/messagepack)
+
+[Serialize](http://hackage.haskell.org/package/cereal) instance for
+[Message Pack](http://msgpack.org) Object.
+
diff --git a/messagepack.cabal b/messagepack.cabal
--- a/messagepack.cabal
+++ b/messagepack.cabal
@@ -1,19 +1,21 @@
-name          : messagepack
-version       : 0.1.0.0
-synopsis      : Serialize instance for Message Pack Object
-description   : Serialize instance for Message Pack Object
-homepage      : https://github.com/rodrigosetti/messagepack
-license       : MIT
-license-file  : LICENSE
-author        : Rodrigo Setti
-stability     : experimental
-bug-reports   : https://github.com/rodrigosetti/messagepack/issues
-package-url   : https://github.com/rodrigosetti/messagepack/archive/master.zip
-maintainer    : rodrigosetti@gmail.com
-copyright     : (c) 2014 Rodrigo Setti
-category      : Data
-build-type    : Simple
-cabal-version : >=1.10
+name               : messagepack
+version            : 0.1.1
+synopsis           : Serialize instance for Message Pack Object
+description        : Serialize instance for Message Pack Object
+homepage           : https://github.com/rodrigosetti/messagepack
+license            : MIT
+license-file       : LICENSE
+author             : Rodrigo Setti
+stability          : experimental
+bug-reports        : https://github.com/rodrigosetti/messagepack/issues
+package-url        : https://github.com/rodrigosetti/messagepack/archive/master.zip
+maintainer         : rodrigosetti@gmail.com
+copyright          : (c) 2014 Rodrigo Setti
+category           : Data
+build-type         : Simple
+cabal-version      : >=1.10
+extra-source-files : CHANGELOG
+                   , README.md
 
 source-repository head
   type     : git
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -15,15 +15,15 @@
 main = $(defaultMainGenerator)
 
 instance Arbitrary Object where
-    arbitrary = resize 6 $ oneof [ return ObjectNil
-                                 , ObjectInt    <$> arbitrary
-                                 , ObjectBool   <$> arbitrary
-                                 , ObjectFloat  <$> arbitrary
-                                 , ObjectDouble <$> arbitrary
-                                 , ObjectString <$> arbitrary
-                                 , ObjectBinary <$> arbitrary
-                                 , ObjectArray  <$> arbitrary
-                                 , ObjectMap    <$> arbitrary ]
+    arbitrary = sized $ \n -> oneof [ return ObjectNil
+                                    , ObjectInt    <$> arbitrary
+                                    , ObjectBool   <$> arbitrary
+                                    , ObjectFloat  <$> arbitrary
+                                    , ObjectDouble <$> arbitrary
+                                    , ObjectString <$> arbitrary
+                                    , ObjectBinary <$> arbitrary
+                                    , ObjectArray  <$> resize (3 * n `quot` 4) arbitrary
+                                    , ObjectMap    <$> resize (3 * n `quot` 4) arbitrary ]
 
     shrink (ObjectString s) = map ObjectString $ shrink s
     shrink (ObjectBinary b) = map ObjectBinary $ shrink b
