Inspired by http://osherove.com/tdd-kata-1/