Un trabajo de clase. No todo el código es mío.