 enum Address : CustomStringConvertible {
   case IP(hostname: String, port: UInt16)
 
-  func socket() throws -> Socket {
+  func socket(backlog: Int32) throws -> Socket {
     switch self {
     case let IP(hostname, port):
       let socket = try Socket()
       try socket.bind(hostname, port: port)
-      try socket.listen(20)
+      try socket.listen(backlog)
       // TODO: Set socket non blocking
       return socket
     }

  var listeners: [Socket] = []
  var workers: [pid_t: Worker] = [:]
  let timeout: Int

  var numberOfWorkers: Int
  let addresses: [Address]


  func createSockets() throws {
    for address in addresses {
      listeners.append(try address.socket(backlog))
      logger.info("Listening at http://\(address) (\(getpid()))")
    }
  }
