abstract validator