client side utilities