client validation