Applications of user defined phases

Hi,
What are the applications of user defined phases in UVM? In UVM there are elaborated list of phases as part of run_phase to support various systematic phasing of the simulation flow, if any enhancement is needed we can add the new logic at the tail end of one of the existing phase if needed. We do we need extra phases? What are the exact applications of those?

Thanks

In reply to yourcheers:

Adding user defined phases increases the complexity of an environment. I have never found the need to add a user defined phase in any environment I have developed, and it is highly recommended that you use the existing phases.

An additional recommendation is that you only use the run_phase() and none of the sub-phases associated with the run_phase(). The use of sequences to control the phasing of your test is the best approach.