client side essentially done