diff --git a/NEWS.md b/NEWS.md
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,6 +1,11 @@
 Changes
 =======
 
+0.3.0 (03 Feb 2020)
+-------------------
+
+ - update to work with the new network library; thank you, @guibou
+
 0.2.1 (03 Oct 2013)
 -------------------
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/daemons.cabal b/daemons.cabal
--- a/daemons.cabal
+++ b/daemons.cabal
@@ -1,5 +1,5 @@
 Name:           daemons
-Version:        0.2.1
+Version:        0.3.0
 Cabal-Version:  >= 1.8
 License:        GPL-3
 License-File:   LICENSE
diff --git a/src/Control/Pipe/Serialize.hs b/src/Control/Pipe/Serialize.hs
--- a/src/Control/Pipe/Serialize.hs
+++ b/src/Control/Pipe/Serialize.hs
@@ -26,10 +26,11 @@
                       , Result(..), runGetPartial )
 import Pipes ( Pipe, await, yield )
 import Control.Monad ( forever )
+import Control.Monad.Fail ( MonadFail )
 
 -- | De-serialize data from strict 'ByteString's.  Uses @cereal@'s
 -- incremental 'Data.Serialize.Get' parser.
-deserializer :: (Serialize a, Monad m) => Pipe ByteString a m ()
+deserializer :: (Serialize a, Monad m, MonadFail m) => Pipe ByteString a m ()
 deserializer = loop Nothing Nothing
   where
     loop mk mbin = do
diff --git a/src/Control/Pipe/Socket.hs b/src/Control/Pipe/Socket.hs
--- a/src/Control/Pipe/Socket.hs
+++ b/src/Control/Pipe/Socket.hs
@@ -70,7 +70,7 @@
     (socket, _addr) <- NS.accept lsocket
     _ <- forkIO $ CE.finally
                       (handler (socketReader socket) (socketWriter socket))
-                      (NS.sClose socket)
+                      (NS.close socket)
     return ()
 
 -- | Run 'Handler' on the given socket.
diff --git a/src/System/Daemon.hs b/src/System/Daemon.hs
--- a/src/System/Daemon.hs
+++ b/src/System/Daemon.hs
@@ -34,9 +34,9 @@
 import Data.String ( IsString(..) )
 import Network.Socket ( Socket, SockAddr(..), Family(..), SocketType(..)
                       , SocketOption(..), setSocketOption
-                      , socket, sClose, connect, bindSocket, listen
+                      , socket, close, connect, bind, listen
                       , AddrInfo(..), getAddrInfo, addrAddress, defaultHints
-                      , defaultProtocol, iNADDR_ANY, maxListenQueue )
+                      , defaultProtocol, tupleToHostAddress, maxListenQueue )
 import System.Directory ( getHomeDirectory )
 import System.FilePath ( (</>), (<.>) )
 import System.Posix.Daemon ( runDetached, isRunning )
@@ -125,7 +125,7 @@
 runInForeground port handler = do
     CE.bracket
         (bindPort port)
-        sClose
+        close
         (\lsocket ->
              runSocketServer lsocket handler)
 
@@ -159,7 +159,7 @@
 runClientWithHandler hostname port handler = do
     CE.bracket
         (getSocket hostname port)
-        sClose
+        close
         (\s -> runSocketClient s handler)
 
 -- | Create a socket and bind it to the given port.
@@ -167,11 +167,11 @@
 bindPort port = do
     CE.bracketOnError
         (socket AF_INET Stream defaultProtocol)
-        sClose
+        close
         (\s -> do
             -- FIXME See the examples at the end of Network.Socket.ByteString
             setSocketOption s ReuseAddr 1
-            bindSocket s (SockAddrInet (fromIntegral port) iNADDR_ANY)
+            bind s (SockAddrInet (fromIntegral port) (tupleToHostAddress (0, 0, 0, 0)))
             listen s maxListenQueue
             return s)
 
@@ -183,7 +183,7 @@
                              (Just $ show port)
     CE.bracketOnError
         (socket AF_INET Stream defaultProtocol)
-        sClose
+        close
         (\s -> do
              connect s (addrAddress $ head addrInfos)
              return s)
