Implementação completa.