use val[this] instead of v in predicate