added setNonBlocking() call