That works, even though there's a lot of test in one function and it's not really DRY. (A)