Make changes to structure of code to make it easier to work with
Completely rework the input, make a real division between solver and viewer, and set up the framework for developing additional solvers in the future