complicate the validations, but added test-cases for it!