diff --git a/Lib/Git/Type.hs b/Lib/Git/Type.hs
--- a/Lib/Git/Type.hs
+++ b/Lib/Git/Type.hs
@@ -27,6 +27,7 @@
 import Control.Concurrent
 import Control.Monad.Reader
 import System.IO (Handle, hFlush, hClose, hGetContents, hPutStr)
+import Control.Applicative
 
 -- | any ID (git SHA1 string)
 type ID = String
@@ -60,7 +61,7 @@
 	} deriving (Show)
 
 newtype GitCtx a = GitCtx (ReaderT Config IO a)
-	deriving (Monad, MonadIO, MonadReader Config)
+	deriving (Functor,Applicative,Monad, MonadIO, MonadReader Config)
 
 -- | Commit object author/commiter representation
 data Person = Person
diff --git a/README b/README
deleted file mode 100644
--- a/README
+++ /dev/null
@@ -1,21 +0,0 @@
-hs-libgit is a haskell wrapper for git.
-
-It provides lowlevel operations (list/cat object, ..) and some high level operation
-(commit, checkout, diff...). it requires the git binary available on the system.
-
-when time permit, the wrapper will be made as a binding on top of libgit2.
-
-Example usage, in ghci
-
-Prelude>:m +Lib.Git
-Prelude Lib.Git> :m +System.Directory
-Prelude Lib.Git System.Directory> createDirectoryIfMissing True "/tmp/repodir"
-Prelude Lib.Git System.Directory> let cfg = makeConfig "/tmp/repodir" Nothing
-Prelude Lib.Git System.Directory> runGit cfg (initDB False)
-
-You will now have an initialised git repo in /tmp/repodir. 
-
-TODO:
-- clean the commit/tree parsing
-- make it more robust/better error checking
-- split modules into multiples files (lowlevel, monad, highlevel)
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+haskell libgit
+==============
+
+[![Build Status](https://travis-ci.org/vincenthz/hs-libgit.png?branch=master)](https://travis-ci.org/vincenthz/hs-libgit)
+[![BSD](http://b.repl.ca/v1/license-BSD-blue.png)](http://en.wikipedia.org/wiki/BSD_licenses)
+[![Haskell](http://b.repl.ca/v1/language-haskell-lightgrey.png)](http://haskell.org)
+
+hs-libgit is a haskell wrapper for git.
+
+It provides lowlevel operations (list/cat object, ..) and some high level operation
+(commit, checkout, diff...). it requires the git binary available on the system.
+
+Example usage, in ghci
+
+Prelude>:m +Lib.Git
+Prelude Lib.Git> :m +System.Directory
+Prelude Lib.Git System.Directory> createDirectoryIfMissing True "/tmp/repodir"
+Prelude Lib.Git System.Directory> let cfg = makeConfig "/tmp/repodir" Nothing
+Prelude Lib.Git System.Directory> runGit cfg (initDB False)
+
+You will now have an initialised git repo in /tmp/repodir. 
+
+TODO
+----
+
+- clean the commit/tree parsing
+- make it more robust/better error checking
+- split modules into multiples files (lowlevel, monad, highlevel)
diff --git a/libgit.cabal b/libgit.cabal
--- a/libgit.cabal
+++ b/libgit.cabal
@@ -1,5 +1,5 @@
 Name:                libgit
-Version:             0.3.0
+Version:             0.3.1
 Description:
     Simple git wrapper to access common git functions in a simple haskell way.
 License:             BSD3
@@ -11,9 +11,9 @@
 Category:            Development
 Stability:           experimental
 Build-Type:          Simple
-Homepage:            http://github.com/vincenthz/hs-tls
+Homepage:            https://github.com/vincenthz/hs-libgit
 Cabal-Version:       >=1.6
-data-files:          README
+extra-doc-files:     README.md
 
 Library
   Build-Depends:     base >= 3 && < 6, mtl, process
@@ -26,4 +26,4 @@
 
 source-repository head
   type: git
-  location: git://github.com/vincenthz/hs-libgit
+  location: https://github.com/vincenthz/hs-libgit
