increased support for caching (STILL BROKEN)
filled in more of the solver functions