First full implementation of problem states.  Seems to work, but isn't well tested.  Needs to be abstracted out into base classes.