Implementação quase completa da API