validation and more tests