Codigo (super) refatorado. Teste criado.