use predicate and booleans consistently