decided that the if/thens were getting out of control.  instead went with a series of "guard statements" (fowler's refactoring)