Muchos cambios y mejoras en el código