modern reactive programming sometimes lets an object have too many states. this article introduces how to maintain the code simpler by finite state machine. in the example, there is State between StateKind and ViewController. separating State and StateKind makes ViewController logic simpler.