Modificando  y limpiando codigo , comentarios  mejor explicados.