       return @emit 'error', err if err
       @_netClusterListen.apply(@, portArgs)
 
-extend module.exports, net
+##
+# provide everything that the net module does
+extend(module.exports, net)
+
+# but override the createServer function to use our server
 module.exports.createServer = ->
   new Server(arguments[0], arguments[1])
 

nop = require "nop"
TCP = process.binding('tcp_wrap').TCP

extend = (obj, mixin) ->
  obj[name] = method for name, method in mixin
  obj

toNumber = (x) ->
  x = Number(x)
  if x >= 0

  e.syscall = syscall
  return e

##
# new server class extending node's net.Server
class Server extends net.Server
  _netClusterListen: (address, port, addressType) ->
    handle = new TCP()
