Versão final do código - UFAAAAAAAAAAA!