added chainable validator for better reusability