enter, update, and exit