added progress updating