ok this is getting too ugly. I have to refactor this before I can write the negative test cases