diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,2 +1,13 @@
 # credential-store
 Windows and Linux credentials storage
+
+Cross-platform library to access system-specific credential store.
+
+Uses Windows CredRead/CredWrite/CredDelete API on Windows, DBus SecretStore API with gnome-keyring or kwallet as backends on Unix. MacOS is not supported yet.
+
+Example usage:
+
+    withCredentialStore $ \store -> do
+        putCredential store credentialName credentialValue
+        v <- getCredential store credentialName
+        deleteCredential store credentialName
diff --git a/credential-store.cabal b/credential-store.cabal
--- a/credential-store.cabal
+++ b/credential-store.cabal
@@ -1,5 +1,5 @@
 name:                credential-store
-version:             0.1.1
+version:             0.1.2
 synopsis:            Library to access secure credential storage providers
 description:
   Cross-platform library for storing secrets.
@@ -22,12 +22,12 @@
   build-depends:       base >= 4.7 && < 5
                      , bytestring
                      , containers
-                     , cryptonite
+                     , cryptonite >= 0.7
                      , memory
                      , safe-exceptions
   if os(windows)
     cpp-options:       -DWINBUILD
-    build-depends:     Win32
+    build-depends:     Win32 >= 2.5.0.0
     other-modules:     System.CredentialStore.WinTypes
                        System.CredentialStore.Windows
   else
diff --git a/src/System/CredentialStore.hs b/src/System/CredentialStore.hs
--- a/src/System/CredentialStore.hs
+++ b/src/System/CredentialStore.hs
@@ -2,14 +2,14 @@
 {-|
 Cross-platform library to access system-specific credential store.
 
-Uses Windows CredRead/CredWrite/CredDelete API on Windows,
+Uses Windows CredRead\/CredWrite\/CredDelete API on Windows,
 DBus Secret Store API with gnome-keyring or kwallet as backends on Unix.
 MacOS is not supported yet.
 
 Example usage:
 
 @
-withCredentialStore $ \store -> do
+withCredentialStore $ \\store -> do
     putCredential store credentialName credentialValue
     v <- getCredential store credentialName
     deleteCredential store credentialName
diff --git a/src/System/CredentialStore/DBusSecretService.hs b/src/System/CredentialStore/DBusSecretService.hs
--- a/src/System/CredentialStore/DBusSecretService.hs
+++ b/src/System/CredentialStore/DBusSecretService.hs
@@ -15,11 +15,11 @@
 import Crypto.Error
 import Crypto.Hash
 import Crypto.KDF.HKDF
+import Crypto.Number.Serialize
 import Crypto.PubKey.DH
 import Crypto.Random
 import DBus
 import DBus.Client
-import Data.Bits
 import Data.ByteArray
 import qualified Data.ByteString as BS
 import qualified Data.Map.Strict as M
@@ -204,12 +204,7 @@
     return (convert encrypted, ivbytes)
 
 dumpKey :: PublicNumber -> BS.ByteString
-dumpKey (PublicNumber key) = BS.reverse $ BS.unfoldr step key
-  where
-    step 0 = Nothing
-    step i = Just (fromIntegral i, i `shiftR` 8)
+dumpKey (PublicNumber key) = i2osp key
 
 readKey :: BS.ByteString -> PublicNumber
-readKey = PublicNumber . BS.foldl' step 0
-  where
-    step i b = i `shiftL` 8 .|. fromIntegral b
+readKey = PublicNumber . os2ip
diff --git a/src/System/CredentialStore/WinTypes.hsc b/src/System/CredentialStore/WinTypes.hsc
--- a/src/System/CredentialStore/WinTypes.hsc
+++ b/src/System/CredentialStore/WinTypes.hsc
@@ -89,9 +89,6 @@
 eRROR_NOT_FOUND :: ErrCode
 eRROR_NOT_FOUND = #const ERROR_NOT_FOUND
 
-eRROR_INSUFFICIENT_BUFFER :: ErrCode
-eRROR_INSUFFICIENT_BUFFER = #const ERROR_INSUFFICIENT_BUFFER
-
 foreign import ccall unsafe "CredReadW" c_CredRead :: LPCTSTR -> DWORD -> DWORD -> Ptr (Ptr CREDENTIAL) -> IO BOOL
 
 foreign import ccall unsafe "CredWriteW" c_CredWrite :: Ptr CREDENTIAL -> DWORD -> IO BOOL
