better validation structure