Lots of new stuff on the actual solver