there are two events: change state, set current