Mejoras aportadas por @wasat