implementação de algumas funções básicas - falta testar com um exemplo completo