improve client side