update nio logic