Separating UI logic from solver.  Introducing two new objects SolverInterface and UiLogic.