First step toward separating rooted and unrooted solvers
Major restructuring, work in progress (does not compile)