Code Cleanup / Improvement

I did some logging and the way this was implemented was sending requests two and three times as often as it needed to.  It wasn't making use of available data in the returns, wasn't caching where it could, and needed some delayed on-demand loading.  I've made a bunch of changes.  There are still more to come, as I work through more of the way that things need adjusting.  But this is getting better.