three possibilities learned: enter(), exit() and update