public ArrayOfBet getCurrentBets(BetStatusEnum betStatus, Integer marketId,
			Integer selectionId) {

		GetCurrentBetsReq getMatchedBetsReq = new GetCurrentBetsReq();
		getMatchedBetsReq.setHeader(exchangeHeader);
		getMatchedBetsReq.setBetStatus(betStatus);
		getMatchedBetsReq.setDetailed(true);
		getMatchedBetsReq.setMarketId(marketId);		
		getMatchedBetsReq.setOrderBy(BetsOrderByEnum.NONE);
		getMatchedBetsReq.setRecordCount(1000);
		getMatchedBetsReq.setStartRecord(0);
		
		GetCurrentBetsResp getMatchedBetsResp = null;
		
		boolean throttledExceeded = true;
		
		while (throttledExceeded) {
			
			getMatchedBetsResp = bfExchangeService.getCurrentBets(getMatchedBetsReq);

			if ((getMatchedBetsResp.getHeader().getErrorCode() != null) &&
				(getMatchedBetsResp.getHeader().getErrorCode().equals(APIErrorEnum.EXCEEDED_THROTTLE))) {
				
				System.out.println("EXCEEDED_THROTTLE - getCurrentBets");
					try {
						Thread.sleep(250);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					
				//System.out.println(getMatchedBetsResp.getErrorCode());
				//System.out.println(getMatchedBetsResp.getHeader().getErrorCode());
			} else {
				
				//System.out.println(getMatchedBetsResp.getErrorCode());
				//System.out.println(getMatchedBetsResp.getHeader().getErrorCode());
				throttledExceeded = false;
				
			}
			
		}
		
		ArrayOfBet bets = getMatchedBetsResp.getBets();
		ArrayOfBet returnBets = new ArrayOfBet();
		returnBets.getBet();

		if ((bets != null) && (bets.getBet().size() > 0)) {

			for (Bet bet : bets.getBet()) {

				// if selection id supplied only return those bets
				// with the same selection id
				if (selectionId != null) {
					if (bet.getSelectionId() == selectionId) {
						returnBets.getBet().add(bet);
					}
				} else {
					returnBets.getBet().add(bet);
				}
			}
		}

		return returnBets;
	}