public Move getMove(Board board, Field from, Field to, Piece piece) {
		Player player = this.getPlayerFromColor(from.getPiece().isWhite);
		if (this.isPromotionMove(piece, to)) {
			return new PromotionMove(player, this.window.board, piece, from, to);
		} else if (this.isEnPassantMove(piece, from, to, this.getLastMove())) {
			return new EnPassantMove(player, this.window.board, piece, from, to);
		} else if (this.isCastlingMove(piece, from, to)) {
			return new CastlingMove(player, this.window.board, piece, from, to);
		} else if (this.isCaptureMove(piece, from, to)) {
			return new CaptureMove(player, this.window.board, piece, from, to, to.getPiece());
		} else if (this.isNormalMove(piece, from, to)) {
			return new NormalMove(player, this.window.board,piece, from, to);
		} else {
			return new InvalidMove();
		}
	}