add predicate filter
introduce CORKeyPath