diff --git a/nanomsg-haskell.cabal b/nanomsg-haskell.cabal
--- a/nanomsg-haskell.cabal
+++ b/nanomsg-haskell.cabal
@@ -1,5 +1,5 @@
 name:                nanomsg-haskell
-version:             0.1.0
+version:             0.1.1
 synopsis:
   Bindings to the nanomsg library
 description:
@@ -20,18 +20,19 @@
 copyright:           Copyright (c) 2013 the nanomsg-haskell authors
 category:            Network
 build-type:          Simple
-cabal-version:       >=1.8
+cabal-version:       >=1.10
 extra-source-files:  AUTHORS, README.md
 
 library
   hs-source-dirs:    src
   ghc-options:       -O2 -Wall
+  default-language:  Haskell2010
   exposed-modules:   Nanomsg
-  extensions:        ForeignFunctionInterface, DeriveDataTypeable
+  default-extensions:  ForeignFunctionInterface, DeriveDataTypeable
   includes:          nanomsg/nn.h
   extra-libraries:   nanomsg
   build-depends:
-    base == 4.*,
+    base >= 4.5 && < 4.7,
     bytestring >= 0.9.0 && < 0.11
 
 test-suite tests
@@ -39,8 +40,9 @@
   hs-source-dirs:    tests
   main-is:           Properties.hs
   ghc-options:       -O2 -Wall -threaded
+  default-language:  Haskell2010
   build-depends:
-    base == 4.*,
+    base >= 4.5 && < 4.7,
     bytestring >= 0.9.0 && < 0.11,
     nanomsg-haskell,
     QuickCheck,
@@ -56,9 +58,10 @@
   type:              exitcode-stdio-1.0
   main-is:           SendMessages.hs
   ghc-options:       -O2 -Wall -threaded
+  default-language:  Haskell2010
   hs-source-dirs:    benchmarks
   build-depends:
-    base == 4.*,
+    base >= 4.5 && < 4.7,
     bytestring >= 0.9.0 && < 0.11,
     nanomsg-haskell,
     criterion
@@ -67,9 +70,10 @@
   type:              exitcode-stdio-1.0
   main-is:           Zmq.hs
   ghc-options:       -O2 -Wall -threaded
+  default-language:  Haskell2010
   hs-source-dirs:    benchmarks
   build-depends:
-    base == 4.*,
+    base >= 4.5 && < 4.7,
     bytestring >= 0.9.0 && < 0.11,
     nanomsg-haskell,
     zeromq3-haskell,
diff --git a/src/Nanomsg.hsc b/src/Nanomsg.hsc
--- a/src/Nanomsg.hsc
+++ b/src/Nanomsg.hsc
@@ -10,7 +10,6 @@
 -- There's support for blocking send and recv, a non-blocking receive,
 -- and for all the socket types and the functions you need to wire
 -- them up and tear them down again.
---
 -- Most socket options are available through accessor and mutator
 -- functions. Sockets are typed, transports are not.
 --
@@ -34,7 +33,7 @@
         , Socket
         , Endpoint
         , NNException
-        -- * Functions
+        -- * API
         , socket
         , withSocket
         , bind
@@ -100,8 +99,8 @@
 
 -- | Socket for communication with exactly one peer. Each
 -- party can send messages at any time. If the peer is not
--- available or send buffer is full, subsequent calls to
--- 'send' will block until it’s possible to send the message.
+-- available or the send buffer is full, subsequent calls
+-- will block until it’s possible to send the message.
 data Pair = Pair
 
 -- | Used to implement a client application that sends requests
@@ -117,16 +116,12 @@
 data Rep = Rep
 
 -- | This socket is used to distribute messages to multiple destinations.
--- Can not receive.
 data Pub = Pub
 
 -- | Receives messages from the publisher. Only messages that the socket is
 -- subscribed to are received. When the socket is created there are no
 -- subscriptions and thus no messages will be received.
 --
--- Send is not defined on this socket. The socket can be connected
--- to at most one peer.
---
 -- See also 'subscribe' and 'unsubscribe'.
 data Sub = Sub
 
@@ -142,8 +137,8 @@
 -- See also 'setSurveyorDeadline'
 data Surveyor = Surveyor
 
--- | Used to respond to a survey. Survey is received using receive function,
--- response is sent using send function. This socket can be connected to
+-- | Used to respond to a survey. Survey is received using receive,
+-- response is sent using send. This socket can be connected to
 -- at most one peer.
 data Respondent = Respondent
 
@@ -151,21 +146,13 @@
 -- balancing them among instances of the next processing step.
 --
 -- This socket is used to send messages to a cluster of load-balanced nodes.
---
--- Receive operation is not implemented on this socket type.
 data Push = Push
 
 -- | This socket is used to receive a message from a cluster of nodes.
---
--- Send operation is not implemented on this socket type.
 data Pull = Pull
 
 -- | Broadcasts messages from any node to all other nodes in the topology.
 -- The socket should never receives messages that it sent itself.
---
--- This pattern scales only to local level (within a single machine or
--- within a single LAN). Trying to scale it further can result in overloading
--- individual nodes with messages.
 data Bus = Bus
 
 -- | Endpoint identifier. Created by 'connect' or 'bind'.
@@ -400,7 +387,7 @@
 NN_EXPORT void *nn_allocmsg (size_t size, int type);
 -}
 
--- * General functions
+-- * API
 
 -- | Creates a socket. Connections are formed using 'bind' or 'connect'.
 --
