PragProg Kata #4 - first pass