código todo refatorado e foram adicionados alguns testes.
refatorado
fixed