pah, vou ter de dizer que tem demasiados niveis de indentação :/