http://www.cse.chalmers.se/~rjmh/Papers/whyfp.html