pre major refactor for enter update exit pattern