diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+0.6.5
+-----------------------------------------------------------------------------
+- `MonadBase` and `MonadBaseControl` instances for ZMQ (by Maciej Woś).
+
 0.6.4
 -----------------------------------------------------------------------------
 - Update dependencies.
diff --git a/src/System/ZMQ4/Monadic.hs b/src/System/ZMQ4/Monadic.hs
--- a/src/System/ZMQ4/Monadic.hs
+++ b/src/System/ZMQ4/Monadic.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE RankNTypes                         #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving         #-}
+{-# LANGUAGE MultiParamTypeClasses              #-}
+{-# LANGUAGE TypeFamilies                       #-}
 {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
 
 -- |
@@ -183,9 +186,11 @@
 import Control.Applicative
 import Control.Concurrent.Async (Async)
 import Control.Monad
-import Control.Monad.Trans.Reader
-import Control.Monad.IO.Class
+import Control.Monad.Base (MonadBase(..))
 import Control.Monad.Catch
+import Control.Monad.IO.Class
+import Control.Monad.Trans.Control (MonadBaseControl(..))
+import Control.Monad.Trans.Reader
 import Data.Int
 import Data.IORef
 import Data.List.NonEmpty (NonEmpty)
@@ -214,6 +219,7 @@
 -- unintented use of 'Socket's outside their scope. Cf. the paper
 -- of John Launchbury and Simon Peyton Jones /Lazy Functional State Threads/.
 newtype ZMQ z a = ZMQ { _unzmq :: ReaderT ZMQEnv IO a }
+    deriving (MonadBase IO)
 
 -- | The ZMQ socket, parameterised by 'SocketType' and belonging to
 -- a particular 'ZMQ' thread.
@@ -229,6 +235,11 @@
 instance MonadIO (ZMQ z) where
     liftIO m = ZMQ $! liftIO m
 
+instance MonadBaseControl IO (ZMQ z) where
+    type StM (ZMQ z) a = a
+    liftBaseWith = \f -> ZMQ $ liftBaseWith $ \q -> f (q . _unzmq)
+    restoreM = ZMQ . restoreM
+
 instance MonadThrow (ZMQ z) where
     throwM = ZMQ . C.throwM
 
@@ -238,12 +249,14 @@
 instance MonadMask (ZMQ z) where
     mask a = ZMQ . ReaderT $ \env ->
         C.mask $ \restore ->
-            let f (ZMQ (ReaderT b)) = ZMQ $ ReaderT (restore . b)
+            let f :: forall r a . ZMQ r a -> ZMQ r a
+                f (ZMQ (ReaderT b)) = ZMQ $ ReaderT (restore . b)
             in runReaderT (_unzmq (a $ f)) env
 
     uninterruptibleMask a = ZMQ . ReaderT $ \env ->
         C.uninterruptibleMask $ \restore ->
-            let f (ZMQ (ReaderT b)) = ZMQ $ ReaderT (restore . b)
+            let f :: forall r a . ZMQ r a -> ZMQ r a
+                f (ZMQ (ReaderT b)) = ZMQ $ ReaderT (restore . b)
             in runReaderT (_unzmq (a $ f)) env
 
 instance Functor (ZMQ z) where
diff --git a/zeromq4-haskell.cabal b/zeromq4-haskell.cabal
--- a/zeromq4-haskell.cabal
+++ b/zeromq4-haskell.cabal
@@ -1,5 +1,5 @@
 name:               zeromq4-haskell
-version:            0.6.4
+version:            0.6.5
 synopsis:           Bindings to ZeroMQ 4.x
 category:           System, FFI
 license:            MIT
@@ -7,9 +7,9 @@
 author:             Toralf Wittner
 maintainer:         Toralf Wittner <tw@dtex.org>
 copyright:          (c) 2010 - 2015 zeromq-haskell authors
-homepage:           http://github.com/twittner/zeromq-haskell/
+homepage:           https://gitlab.com/twittner/zeromq-haskell/
 stability:          experimental
-tested-With:        GHC == 7.6.3
+tested-With:        GHC == 7.10.3
 cabal-version:      >= 1.8
 build-type:         Simple
 extra-source-files:
@@ -36,7 +36,7 @@
 
 source-repository head
     type:             git
-    location:         https://github.com/twittner/zeromq-haskell
+    location:         https://gitlab.com/twittner/zeromq-haskell
 
 library
     hs-source-dirs:    src
@@ -51,13 +51,15 @@
         System.ZMQ4.Internal.Error
 
     build-depends:
-          base         >= 3 && < 5
-        , async        >= 2.0 && < 3.0
-        , bytestring
-        , containers
-        , exceptions   >= 0.6 && < 1.0
-        , semigroups   >= 0.8
-        , transformers >= 0.3
+          base              >= 3    && < 5
+        , async             >= 2.0  && < 3.0
+        , bytestring        >= 0.10
+        , containers        >= 0.5
+        , exceptions        >= 0.6  && < 1.0
+        , semigroups        >= 0.8
+        , transformers      >= 0.3
+        , monad-control     >= 1.0
+        , transformers-base >= 0.4
 
     if impl(ghc < 7.6)
         build-depends: ghc-prim == 0.3.*
