public boolean execute(IMove move) {
		if (!isLegal(move))
			return false;
		if (move instanceof Move) {
			Move aMove = (Move)move;
			placeMove(aMove);
			
			if (currentTurnColor != null)
				currentTurnColor = currentTurnColor.getOpposite();
			if (isCheckmated(currentTurnColor)) {
				setCheckmated(currentTurnColor);
			}
			return true;
		}
		else if (move instanceof Resign) {
			if (currentTurnColor == Color.WHITE)
				game_over = GAME_OVER.WHITE_RESIGNS;
			else
				game_over = GAME_OVER.BLACK_RESIGNS;
			return true;
		}
		return false;
	}