Вам следует использовать конечные автоматы для создания сложных многофункциональных приложений.
51