GUI mostly functional. Committing before the major rewrite of the
underlying classes so that they work well with the GUI