removed specification system in favor of Predicate