diff --git a/Network/Fancy.hsc b/Network/Fancy.hsc
--- a/Network/Fancy.hsc
+++ b/Network/Fancy.hsc
@@ -28,11 +28,12 @@
 import Numeric(showHex)
 import System.IO(Handle, hClose, IOMode(ReadWriteMode))
 import System.IO.Unsafe(unsafeInterleaveIO)
-import GHC.Handle(fdToHandle')
-#if __GLASGOW_HASKELL__ <= 610
 import System.Posix.Internals hiding(c_close)
-#else
+#if __GLASGOW_HASKELL__ > 610
 import GHC.IO.Device
+import GHC.IO.Handle.FD(fdToHandle')
+#else
+import GHC.Handle(fdToHandle')
 #endif
 #ifdef WINDOWS
 import GHC.Conc(asyncDoProc)
@@ -70,6 +71,14 @@
 
 #endif /* WINDOWS */
 
+setNonBlockingFD' :: FD -> IO ()
+setNonBlockingFD' =
+#if __GLASGOW_HASKELL__ < 611
+    System.Posix.Internals.setNonBlockingFD
+#else
+    flip System.Posix.Internals.setNonBlockingFD True
+#endif
+
 type HostName = String
 
 data Address = IP   HostName Int -- ^ Host name and port, either IPv4 or IPv6.
@@ -175,7 +184,7 @@
 connect stype (SA sa len) = do
   fam <- getFamily (SA sa len)
   s   <- throwErrnoIfMinus1 "socket" $ c_socket fam stype 0
-  setNonBlockingFD s
+  setNonBlockingFD' s
   let loop = do r   <- withForeignPtr sa $ \ptr -> c_connect s ptr (fromIntegral len)
 	       	err <- getErrno
        	        case r of
@@ -280,7 +289,7 @@
                     return ((SA sa sal):rest)
       getAI :: IO (Ptr AddrInfoT)
       getAI = allocaBytes (#size struct addrinfo) $ \hints -> do
-              B.memset hints 0 (#size struct addrinfo)
+              _ <- B.memset hints 0 (#size struct addrinfo)
               (#poke struct addrinfo, ai_flags)    hints flags
               (#poke struct addrinfo, ai_family)   hints fam
               (#poke struct addrinfo, ai_socktype) hints typ
@@ -381,12 +390,12 @@
   forM sas $ \sa -> do
      fam  <- getFamily sa
      sock <- throwErrnoIfMinus1 "socket" $ c_socket fam sockStream 0
-     setNonBlockingFD sock
+     setNonBlockingFD' sock
      let socket = Socket sock
      let on :: CInt
          on = 1
          os = fromIntegral $ sizeOf on
-     with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os
+     _ <- with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os
      bind socket sa
      listen socket 128
      let loop = do (s,psa) <- accept socket sa
@@ -430,7 +439,7 @@
                            (#peek struct network_fancy_aaccept, s) ptr
                            
 #endif
-  setNonBlockingFD s
+  setNonBlockingFD' s
   return (Socket s,SA sa len)
 
 foreign import CALLCONV SAFE_ON_WIN "accept"  c_accept  :: CInt -> Ptr () -> Ptr (SLen) -> IO CInt
@@ -449,12 +458,12 @@
   forM sas $ \sa -> do
      fam  <- getFamily sa
      sock <- throwErrnoIfMinus1 "socket" $ c_socket fam sockDgram 0
-     setNonBlockingFD sock
+     setNonBlockingFD' sock
      let socket = Socket sock
      let on :: CInt
          on = 1
          os = fromIntegral $ sizeOf on
-     with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os
+     _ <- with on $ \onptr -> c_setsockopt sock (#const SOL_SOCKET) (#const SO_REUSEADDR) onptr os
      bind socket sa
      let loop = do (str,psa) <- recvFrom socket (recvSize ss) sa
                    a <- unsafeInterleaveIO $ case reverseAddress ss of
diff --git a/network-fancy.cabal b/network-fancy.cabal
--- a/network-fancy.cabal
+++ b/network-fancy.cabal
@@ -1,5 +1,5 @@
 Name:                network-fancy
-Version:             0.1.4
+Version:             0.1.5
 Synopsis:            Networking support with a cleaner API
 Description:         Networking support with a cleaner API
 License:             BSD3
@@ -10,6 +10,10 @@
 Maintainer:          taruti@taruti.net
 Build-Type:          Simple
 Cabal-version:       >= 1.6
+Homepage:	     http://github.com/taruti/network-fancy
+Source-repository head
+  type:     git
+  location: http://github.com/taruti/network-fancy
 
 Library
     Build-Depends:       base == 4.*, bytestring
