more validation. almost finished