- redesign state machine
- removed Suspended state. maintain any additional states in a subclass.
- redesigned control flow