new abstract validator introduced to simplify concrete implementations