now it's client side