[NewFeature] Add State Pattern.