melhorei os testes e fiz outras implementações