something about predicate and clearer, if there is a value, than predicate'll return true