refactored Predicate and evalPred, and added OR to Predicate