new validation logic