btw, the else structures are a bit confusing. isWritable, isAcceptable and isConnectable are mutually exclusive, but isReadable is not. Is this intentional? If it is, a comment would be welcome :)