Use workList instead of recursion for propagation, more reliable approach to cut-off