renamed a bit too much passes() to isValid()