predicate functions and money saver heuristic  added