Un poco más prolijo, dividido en 3 archivos