manual validation