practice techniques from http://codekata.com