A very informative flow chart.