can be overwritten by subclasses to perform work when the state is entered
can be overwritten by subclasses to perform work when the state is exited