PragProg Kata #14 first pass