Lots of refactoring for high level plans, a bit of interface work, and logging hooks