ChessDemo MVC architecture. Use of Visitor Pattern to decouple pieces and board in Board.java Command Pattern to allow players to undo a move in Board.java Game Loop Pattern in ChessViewController.java