this is the full client side