implement validator