Compassion projects

If possible, you should avoid return multiple values from one function. 4 is really too much, it becomes hard to tell what the function is supposed to do. Consider extracting code from _update_program_info.