This is again for a future pull request, I have to call out just about every method in this class as being highly complex.  I don't have a specific suggestion how to fix, just that it should be looked at at some point