nonblocking update