complete client side validation