Logica do metodo melhorada