I've decided to take a step back from the Nessie code for a bit and consider the architecture of the system. At the current rate, I've coded myself in to a corner, back tracked, tried again, and coded myself into another corner. The system has gotten too large and complex for me to keep straight and I've found myself trying to get tests to pass by simply hacking away at code. I think some better organization and a clear architectural goal could be of help here. The chart below is my first graphical concept of how I think the architecture should work. There are some areas which lack detail, but I think it's enough to start restructuring the code a bit. Hopefully, in doing so, the missing details will become more apparent and I can then add them to the chart.