diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,14 @@
+# Change Log
+All notable changes to this project will be documented in this file. This
+file follows the formatting recommendations from
+[Keep a CHANGELOG](http://keepachangelog.com/).
+
+## [0.2][0.2] - 2015-4-13
+### Removed
+- 2-Rank actions.
+
+### Changed
+- Use `MonadMask` instead of `MonadCatch`. This implies a dependency
+  upgrade for `exceptions` to a `>=0.6`.
+
+[0.2]: https://github.com/jdnavarro/compare/v0.1...v0.2
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014, Danny Navarro
+Copyright (c) 2014-2015, J. Daniel Navarro
 
 All rights reserved.
 
@@ -13,7 +13,7 @@
       disclaimer in the documentation and/or other materials provided
       with the distribution.
 
-    * Neither the name of Danny Navarro nor the names of other
+    * Neither the name of J. Daniel Navarro nor the names of other
       contributors may be used to endorse or promote products derived
       from this software without specific prior written permission.
 
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+# `network-simple-sockaddr`
+
+[network-simple](http://hackage.haskell.org/package/network-simple-0.3.0 network-simple)
+works by resolving `HostName`s. This packages offers a similar API but
+working with unresolved addresses in the form of `SockAddr`es. In addition to
+`IPv4` addresses, `IPv6` and `Unix Domain Sockets` are also supported.
+
+[![Hackage Version](https://img.shields.io/hackage/v/network-simple-sockaddr.svg)](https://hackage.haskell.org/package/network-simple-sockaddr) [![Build Status](https://img.shields.io/travis/jdnavarro/network-simple-sockaddr.svg)](https://travis-ci.org/jdnavarro/network-simple-sockaddr.svg)
diff --git a/network-simple-sockaddr.cabal b/network-simple-sockaddr.cabal
--- a/network-simple-sockaddr.cabal
+++ b/network-simple-sockaddr.cabal
@@ -1,7 +1,7 @@
 name:                network-simple-sockaddr
-version:             0.1
+version:             0.2
 cabal-version:       >=1.10
-tested-with:         GHC == 7.6.3
+tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.1
 build-type:          Simple
 license:             BSD3
 license-file:        LICENSE
@@ -10,25 +10,27 @@
 category:            Network
 homepage:            https://github.com/jdnavarro/network-simple-sockaddr
 bug-reports:         https://github.com/jdnavarro/network-simple-sockaddr/issues
+extra-source-files:  README.md CHANGELOG.md
 synopsis:            network-simple for resolved addresses
+extra-source-files:  README.md
 description:
   @<http://hackage.haskell.org/package/network-simple-0.3.0 network-simple>@
-  works by resolving 'HostName's. This packages offers a similar API but
-  working with unresolved addresses in the form of 'SockAddr'. In addition to
-  'IPv4' addresses, 'IPv6' and @Unix Domain Sockets@ are also supported.
+  works by resolving @HostName@s. This packages offers a similar API but
+  working with unresolved addresses in the form of @SockAddr@. In addition to
+  @IPv4@ addresses, @IPv6@ and @Unix Domain Sockets@ are also supported.
 
 source-repository head
   type: git
-  location: git@github.com:jdnavarro/network-simple-sockaddr.git
+  location: git://github.com/jdnavarro/network-simple-sockaddr.git
 
 library
   exposed-modules:     Network.Simple.SockAddr
-  build-depends:       base >=4.6 && <4.8,
+  build-depends:       base >=4.6 && <4.9,
                        bytestring,
                        directory,
                        transformers >=0.2,
                        network >=2.4,
-                       exceptions >=0.3
+                       exceptions >=0.6
   hs-source-dirs:      src
   default-language:    Haskell2010
   ghc-options:         -Wall
diff --git a/src/Network/Simple/SockAddr.hs b/src/Network/Simple/SockAddr.hs
--- a/src/Network/Simple/SockAddr.hs
+++ b/src/Network/Simple/SockAddr.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE RankNTypes #-}
-
 {-| This is the same API as @network-simple@ with the difference
     of working on 'SockAddr' instead of @'HostName's@.
 
@@ -40,7 +38,7 @@
   , defaultProtocol
   )
 import qualified Network.Socket.ByteString as NSB
-import Control.Monad.Catch (MonadCatch, bracket, bracketOnError, throwM)
+import Control.Monad.Catch (MonadCatch, MonadMask, bracket, bracketOnError, throwM)
 
 -- * Client side
 
@@ -48,7 +46,7 @@
 
     The connection socket is closed when done or in case of exceptions.
 -}
-connect :: (MonadIO m, MonadCatch m)
+connect :: (MonadIO m, MonadMask m)
         => SockAddr
         -- ^ Server address.
         -> (Socket -> m r)
@@ -64,8 +62,7 @@
 connectFork :: MonadIO m
             => SockAddr
             -- ^ Server address.
-            -> (forall m' . (Functor m', MonadIO m', MonadCatch m')
-                         => Socket -> m' ())
+            -> (Socket -> IO ())
             -- ^ Computation taking the socket connection socket.
             -> m ThreadId
 connectFork addr k = liftIO . forkIO $ connect addr k
@@ -79,11 +76,10 @@
     Any acquired network resources are properly closed and discarded when done
     or in case of exceptions.
 -}
-serve :: (MonadIO m, MonadCatch m)
+serve :: (MonadIO m, MonadMask m)
       => SockAddr
       -- ^ Address to bind to.
-      -> (forall m' . (Functor m', MonadIO m', MonadCatch m')
-                   => SockAddr -> Socket -> m' ())
+      -> (SockAddr -> Socket -> IO ())
       -- ^ Computation to run in a different thread
       --   once an incoming connection is accepted. Takes the
       --   the remote end address and the connection socket.
@@ -94,7 +90,7 @@
 
     The listening socket is closed when done or in case of exceptions.
 -}
-listen :: (MonadIO m, MonadCatch m)
+listen :: (MonadIO m, MonadMask m)
        => SockAddr
        -- ^ Address to bind to.
        -> (Socket -> m r)
@@ -114,7 +110,7 @@
    within a limited scope, and would like it to be closed immediately after its
    usage or in case of exceptions.
 -}
-bind :: (MonadIO m, MonadCatch m) => SockAddr -> m Socket
+bind :: (MonadIO m, MonadMask m) => SockAddr -> m Socket
 bind addr = bracketOnError (newSocket addr) (close addr)
           $ \sock -> liftIO $ do
                 let set so n = when (NS.isSupportedSocketOption so)
@@ -134,8 +130,7 @@
 acceptFork :: (MonadIO m, MonadCatch m)
            => Socket
            -- ^ Listening and bound socket.
-           -> (forall m' . (Functor m', MonadIO m', MonadCatch m')
-                        => SockAddr -> Socket -> m' ())
+           -> (SockAddr -> Socket -> IO ())
            -- ^ Computation to run in a different thread
            --   once an incoming connection is accepted. Takes the
            --   remote end address and connection socket.
