http://hi.baidu.com/lhurricane/item/35b57e12a1e3c5ddbf9042a7
http://blog.csdn.net/ddwn/article/details/984390
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf