finish the client side