added framework for domain object validation