[3] update state