diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2014, Renzo Carbonara
+Copyright (c) 2013-2018, Renzo Carbonara <renλren.zone>
 
 All rights reserved.
 
diff --git a/PEOPLE b/PEOPLE
--- a/PEOPLE
+++ b/PEOPLE
@@ -1,6 +1,7 @@
 The following people have participated in creating this library, either
 by directly contributing code or by providing thoughtful input in
-discussions about the library design.
+discussions about the library design. Please note that if you want to be
+part of this list you need to add yourself to it.
 
 Renzo Carbonara
 Gabriel Gonzalez
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,4 @@
+#! /usr/bin/env nix-shell
+#! nix-shell ./shell.nix -i runghc
 import Distribution.Simple
 main = defaultMain
diff --git a/changelog b/changelog
deleted file mode 100644
--- a/changelog
+++ /dev/null
@@ -1,23 +0,0 @@
-# Version 0.2.1
-
-* Dependency bumps.
-
-
-# Version 0.2.0
-
-* Significantly upgraded the API and renamed functions to play well with
-  pipes-4.0, pipes-safe-2.0, pipes-network-0.6 and
-  network-simple-tls-0.2.
-
-* Throw `IOError` in `IO` in order to report timeout errors. Delete
-  the `Timeout` data-type.
-
-
-# Version 0.1.1.0
-
-* Re-export `Network.Socket.withSocketsDo`
-
-
-# Version 0.1.0.0
-
-* First release.
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,34 @@
+# Version 0.3
+
+* BREAKING CHANGE: We now depend on `network-simple-0.3`, which introduced some
+  breaking changes. Please refer to its
+  [changelog](https://hackage.haskell.org/package/network-simple-0.3/changelog).
+
+* Remove `Pipes.Safe.Base m ~ IO` constraints.
+
+* Remove upper-bound constraints on all dependencies other than `base`.
+
+
+# Version 0.2.1
+
+* Dependency bumps.
+
+
+# Version 0.2.0
+
+* Significantly upgraded the API and renamed functions to play well with
+  pipes-4.0, pipes-safe-2.0, pipes-network-0.6 and
+  network-simple-tls-0.2.
+
+* Throw `IOError` in `IO` in order to report timeout errors. Delete
+  the `Timeout` data-type.
+
+
+# Version 0.1.1.0
+
+* Re-export `Network.Socket.withSocketsDo`
+
+
+# Version 0.1.0.0
+
+* First release.
diff --git a/pipes-network-tls.cabal b/pipes-network-tls.cabal
--- a/pipes-network-tls.cabal
+++ b/pipes-network-tls.cabal
@@ -1,12 +1,12 @@
 name:               pipes-network-tls
-version:            0.2.1
+version:            0.3
 license:            BSD3
 license-file:       LICENSE
-copyright:          Copyright (c) Renzo Carbonara 2013-2014
+copyright:          Copyright (c) Renzo Carbonara 2013-2018
 author:             Renzo Carbonara
-maintainer:         renzocarbonaraλgmail.com
+maintainer:         renλren.zone
 stability:          Experimental
-tested-with:        GHC == 7.6.3
+tested-with:        GHC == 8.4.1
 homepage:           https://github.com/k0001/pipes-network-tls
 bug-reports:        https://github.com/k0001/pipes-network-tls/issues
 category:           Pipes, Network
@@ -14,7 +14,7 @@
 synopsis:           TLS-secured network connections support for pipes.
 cabal-version:      >=1.8
 extra-source-files:
-  changelog
+  changelog.md
   README.md
   PEOPLE
   examples/tls-echo.hs
@@ -37,21 +37,21 @@
 
 source-repository head
     type: git
-    location: git://github.com/k0001/pipes-network-tls.git
+    location: https://github.com/k0001/pipes-network-tls
 
 library
     hs-source-dirs: src
     build-depends:
-        base                (==4.*),
-        bytestring          (>=0.9.2.1),
+        base (==4.*),
+        bytestring,
         network,
-        network-simple      (>=0.3   && <0.4),
-        network-simple-tls  (>=0.2   && <0.3),
-        pipes               (>=4.0   && <4.2),
-        pipes-network       (>=0.6.2 && <0.7),
-        pipes-safe          (>=2.0.2 && <2.1),
-        tls                 (>=1.1 && <1.2),
-        transformers        (>=0.2 && <0.4)
+        network-simple,
+        network-simple-tls (>=0.3),
+        pipes,
+        pipes-network,
+        pipes-safe,
+        tls,
+        transformers
     exposed-modules:
         Pipes.Network.TCP.TLS
         Pipes.Network.TCP.TLS.Safe
diff --git a/src/Pipes/Network/TCP/TLS/Safe.hs b/src/Pipes/Network/TCP/TLS/Safe.hs
--- a/src/Pipes/Network/TCP/TLS/Safe.hs
+++ b/src/Pipes/Network/TCP/TLS/Safe.hs
@@ -58,7 +58,7 @@
 -- | Like 'Network.Simple.TCP.TLS.connect' from "Network.Simple.TCP.TLS", but
 -- compatible with 'P.MonadSafe'.
 connect
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ClientSettings -> S.HostName -> S.ServiceName
   -> ((S.Context, S.SockAddr) -> m r) -> m r
 connect cs host port k = P.bracket (S.connectTls cs host port)
@@ -68,7 +68,7 @@
 -- | Like 'Network.Simple.TCP.TLS.serve' from "Network.Simple.TCP.TLS", but
 -- compatible with 'P.MonadSafe'.
 serve
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ServerSettings -> S.HostPreference -> S.ServiceName
   -> ((S.Context, S.SockAddr) -> IO ()) -> m r
 serve ss hp port k = do
@@ -78,7 +78,7 @@
 -- | Like 'Network.Simple.TCP.TLS.accept' from "Network.Simple.TCP.TLS", but
 -- compatible with 'P.MonadSafe'.
 accept
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ServerSettings -> S.Socket -> ((S.Context, S.SockAddr) -> m r) -> m r
 accept ss lsock k = P.bracket (S.acceptTls ss lsock)
                               (liftIO . contextClose . fst)
@@ -106,7 +106,7 @@
 --
 -- The connection is closed when done or in case of exceptions.
 fromConnect
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ClientSettings   -- ^TLS settings.
   -> S.HostName
   -> S.ServiceName      -- ^Server service port.
@@ -120,7 +120,7 @@
 --
 -- The connection is properly closed when done or in case of exceptions.
 toConnect
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ClientSettings   -- ^TLS settings.
   -> S.HostName         -- ^Server host name.
   -> S.ServiceName      -- ^Server service port.
@@ -151,7 +151,7 @@
 -- Both the listening and connection sockets are closed when done or in case of
 -- exceptions.
 fromServe
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ServerSettings   -- ^TLS settings.
   -> S.HostPreference   -- ^Preferred host to bind.
   -> S.ServiceName      -- ^Service port to bind.
@@ -169,7 +169,7 @@
 -- Both the listening and connection sockets are closed when done or in case of
 -- exceptions.
 toServe
-  :: (P.MonadSafe m, P.Base m ~ IO)
+  :: P.MonadSafe m
   => S.ServerSettings   -- ^TLS settings.
   -> S.HostPreference   -- ^Preferred host to bind.
   -> S.ServiceName      -- ^Service port to bind.
