diff --git a/Network-NineP.cabal b/Network-NineP.cabal
--- a/Network-NineP.cabal
+++ b/Network-NineP.cabal
@@ -1,5 +1,5 @@
 Name:                Network-NineP
-Version:             0.4.6
+Version:             0.4.7
 Description:         A library providing one with a somewhat higher level interface to 9P2000 protocol than existing implementations. Designed to facilitate rapid development of synthetic filesystems.
 Synopsis:            High-level abstraction over 9P protocol
 Maintainer:          Sergey Alirzaev <zl29ah@gmail.com>
@@ -7,7 +7,7 @@
 Category:            Network
 License-file:        LICENSE
 Build-Type:          Simple
-Cabal-Version:       >= 1.6
+Cabal-Version:       >= 1.10
 Stability:           Experimental
 Tested-With:         GHC == 8.6.5
 
@@ -18,7 +18,7 @@
 Source-repository this
   type:              git
   location:          https://github.com/l29ah/Network-NineP.git
-  tag:               0.4.6
+  tag:               0.4.7
 
 Library
   Build-Depends:
@@ -26,7 +26,8 @@
     bytestring >= 0.9.2.1 && < 0.11,
     containers >= 0.4.2.1 && < 0.7,
     NineP >= 0.0.2 && < 0.1,
-    network >= 2.3.0.14 && < 2.9,
+    network >= 3.0 && < 3.1,
+    network-bsd >= 2.8 && < 2.9,
     binary >= 0.5.1.0 && < 0.9,
     mtl >= 2.1.2 && < 2.3,
     monad-loops >= 0.3.3.0 && < 0.5,
@@ -50,17 +51,5 @@
     Network.NineP.Internal.File
     Network.NineP.Internal.Msg
     Network.NineP.Internal.State
-  ghc-options: -fno-warn-tabs
-
-Executable test
-  Main-is: Test.hs
-  Other-modules:
-    Control.Monad.EmbedIO
-    Network.NineP
-    Network.NineP.Error
-    Network.NineP.File
-    Network.NineP.Internal.File
-    Network.NineP.Internal.Msg
-    Network.NineP.Internal.State
-    Network.NineP.Server
+  default-language:    Haskell2010
   ghc-options: -fno-warn-tabs
diff --git a/Network/NineP/Server.hs b/Network/NineP/Server.hs
--- a/Network/NineP/Server.hs
+++ b/Network/NineP/Server.hs
@@ -30,7 +30,6 @@
 import Data.Maybe
 import Data.NineP
 import Data.Word
-import Network hiding (accept)
 import Network.BSD
 import Network.Socket hiding (send, sendTo, recv, recvFrom)
 import System.IO
@@ -45,6 +44,12 @@
 maybeRead :: Read a => String -> Maybe a
 maybeRead = fmap fst . listToMaybe . reads
 
+listenOn addr = do
+	sock <- socket AF_UNIX Stream defaultProtocol
+	bind sock addr
+	listen sock 5
+	return sock
+
 connection :: String -> IO Socket
 connection s = let	pat = "tcp!(.*)!([0-9]*)|unix!(.*)" :: ByteString
 			wrongAddr = ioError $ userError $ "wrong 9p connection address: " ++ s
@@ -53,7 +58,7 @@
 		then wrongAddr
 		else case grps of
 			[addr, port, ""] -> listen' addr $ toEnum $ (fromMaybe 2358 $ maybeRead port :: Int)
-			["", "", addr]  -> listenOn $ UnixSocket addr
+			["", "", addr]  -> listenOn $ SockAddrUnix addr
 			_ -> wrongAddr
 
 listen' :: HostName -> PortNumber -> IO Socket
diff --git a/Test.hs b/Test.hs
deleted file mode 100644
--- a/Test.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-import Control.Exception
-import Control.Monad.Trans
-import qualified Data.ByteString.Lazy.Char8 as B
-import Data.Word
-import System.Log.Logger
-
-import Network.NineP as N
-import Network.NineP.Error
-import Network.NineP.File
-
---cfg = Config $ boringDir "/" [("boring", boringFile "boring"),("nyak", boringFile "nyak")]
-spamwr :: Word64 -> B.ByteString -> IO Word32
-spamwr _ d = do
-	B.putStr d
-	return $ fromIntegral $ B.length d
-
-boringwr _ c = return $ B.take (fromIntegral c) "i am so very boring"
-
-main = do
-	updateGlobalLogger "Network.NineP" $ setLevel DEBUG
-	memd <- memoryDirectory "/" :: IO (NineFile IO)
-	run9PServer $ Config {
-			-- TODO Data.Default?
-			root = boringDir "/" [
-				("lol", (boringFile "lol") { write = spamwr }),
-				("memd", memd),
-				("exception", (boringFile "exception") { N.read = \_ _ -> throw $ AssertionFailed "lol" })],
-			addr = "unix!/tmp/h9pt",
-			monadState = undefined
-		}
