Refactor propagate_all_singletons

Moved while loop into new method: propagate_singletons_recursive.