Mejorado bastante pero con algunos errores