Funcionando, mas precisa ser refatorado e organizado