add: nonblock mode