http://codereview.stackexchange.com/questions/71790/design-a-chess-game-using-object-oriented-principles/71797#71797