added solution chooser, minor cleanup