private static void handleMoveType3(PGNMove move, String strippedMove, byte color, byte[][] board) throws PGNParseException {
		byte piece = WHITE_PAWN;
		int fromhPos = getChessATOI(strippedMove.charAt(1));
		int tohPos = getChessATOI(strippedMove.charAt(2));
		int tovPos = strippedMove.charAt(3) - '1';
		int fromvPos = -1;
		
		if (strippedMove.charAt(0) == PAWN.charAt(0)) {
			piece = (byte)(BLACK_PAWN * color);
			fromvPos = getPawnvPos(fromhPos, tovPos, piece, board);
		} else if (strippedMove.charAt(0) == KNIGHT.charAt(0)) {
			piece = (byte)(BLACK_KNIGHT * color);
			fromvPos = getSingleMovePiecevPos(tohPos, tovPos, fromhPos, piece, board, KNIGHT_SEARCH_PATH);
		} else if (strippedMove.charAt(0) == BISHOP.charAt(0)) {
			piece = (byte)(BLACK_BISHOP * color);
			fromvPos = getMultiMovePiecevPos(tohPos, tovPos, fromhPos, piece, board, BISHOP_SEARCH_PATH);
		} else if (strippedMove.charAt(0) == ROOK.charAt(0)) {
			piece = (byte)(BLACK_ROOK * color);
			fromvPos = getMultiMovePiecevPos(tohPos, tovPos, fromhPos, piece, board, ROOK_SEARCH_PATH);
		} else if (strippedMove.charAt(0) == QUEEN.charAt(0)) {
			piece = (byte)(BLACK_QUEEN * color);
			fromvPos = getMultiMovePiecevPos(tohPos, tovPos, fromhPos, piece, board, QUEEN_KING_SEARCH_PATH);
		} else if (strippedMove.charAt(0) == KING.charAt(0)) {
			piece = (byte)(BLACK_KING * color);
			fromvPos = getSingleMovePiecevPos(tohPos, tovPos, fromhPos, piece, board, QUEEN_KING_SEARCH_PATH);
		}
		
		if (fromvPos == - 1 || fromhPos == -1) {
			throw new PGNParseException(move.getFullMove());
		}
		
		move.setFromSquare(getChessCoords(fromhPos, fromvPos));
		move.setToSquare(getChessCoords(tohPos, tovPos));
	}