http://www.evc-cit.info/cit020/beginning-programming/chp_02/big_plan.html