http://codekata.pragprog.com/2007/01/kata_four_data_.html