validation and polymorphisms