client side progress