client side functionality