validation is still manual