Check and Checkmate fully work.  Still needs tests and major refactor