for your pleasure, now with nonblocking I/O