Reestructurado con tests pasando. Faltan agregar exceptions