Bill, I think there are any number of cleaner approaches than emulating the stupid poll and select semantics - mostly looking more like aio with some sort of completion event, so the kernel just gets on with things. But isn't the problem at hand that a scalable implementation is needed under the existing poll interface? Personally I would suggest making legacy apps that use that interface as scalable as possible across platforms, and then adding a further interface that can unify IO in the more object-oriented manner you suggest. Maybe at some point poll can be deprecated - but I'd be surprised if that was ever acceptable. Which is odd in a way really, because in every application I've ever written, I've only ever really run app logic when IOs complete, or when some event has caused me to generate and queue data to send. It may be that once buffer space was so tight that data to send was generated only when the kernel might accept it, and input buffer space was similarly scarce, but I doubt that is the case now even for embedded developers - or at least the ones who might use APR. Those doing IP with a PIC may see things differently. James