refatorado com alguns padroes de projetos