implementado padrão state