client side stuff working