falta testar. Mas as funções estão todas feitas