@Override
	public void process(HttpServletRequest request,
			HttpServletResponse response, final String mobileHash,
			List<String> message) throws Exception {
		final EntityManager manager = EMF.get().createEntityManager();
		String option=message.get(0);
		if(option==null)
			{option="";}
		try {
			ChessUser user = manager.find(ChessUser.class, mobileHash);		
			List<Game> games=DB_Util.getCurrentGames(manager, user.getMobileHash(),option);
			
			if(games.size()==1)
			{
				Game g=games.get(0);
				if(TxtChessUtil.isAI_Game(g))
				{
					option=TxtChessUtil.getAI_Player(g);
				}
				else if("all".equalsIgnoreCase(option))
				{
					ChessUser opponent=manager.find(ChessUser.class, mobileHash.equals(g.getWhite())?g.getBlack():g.getWhite());
					option=opponent.getUserName();
				}
				
				request.setAttribute("___message","You currently have only one game"+ " with "+option);
				setJspPath("/showGame?gameId="+g.getId());
				return;
			}
		
			
			String startIndexString=request.getParameter("startIndex");
			ListIterator< Game> gamesIterator= new ListIterator<Game>("Games currently Playing",games,startIndexString==null?1:Integer.parseInt(startIndexString),"/listGames?txtweb-message="+option+"&","") {

				@Override
				public String getRowLink(Game game) {
					boolean isWhite=mobileHash.equals(game.getWhite());
					String op=isWhite?game.getBlack():game.getWhite();
					ChessUser opponent = manager.find(ChessUser.class,op);
					String opponentName=TxtChessUtil.isAI_Game(game)?op:opponent.getUserName();
					return "<a href='/showGame?gameId="+game.getId()+"'>Against "+ opponentName
							+ "( " +((isWhite==(game.getMovesCount()%2==0))?"Your":"Opponent") + " ["+((game.getMovesCount()%2==0)?"White":"Black" )+"] Turn )"
							+"</a>";
				}
			};
			
			request.setAttribute("__listIterator",gamesIterator );
			setJspPath("/jsp/common/ListIteratorHandler.jsp");
			} finally {
			manager.close();
		}
	}