better client side validation, should make it difficult to get errors