programming is hard, names are hard, tests are for the faint of heart