predicates changed to functions