private void processSite(final AbstractJobSite site) {
		
		try {
			Document doc = getDocument(site.getUrlWithQuery());
            Element elem = site.getElementForNextPage(doc);
			boolean morePagesToTraverse = site.morePagesToTraverse(elem);

			//Only a single page listing. Can happen, based on the search terms.
			if (!morePagesToTraverse) {
				parseJobEntries(site,doc);
			}

			while (morePagesToTraverse) {
				String nextPage = site.setHrefForNextPage(elem);
				try {
					//Process the current document
					parseJobEntries(site,doc);
					//Crawl to the next page
                    String query = site.getUrlAddress()+nextPage;
                    doc = getDocument(query);
					elem = site.getElementForNextPage(doc);
					morePagesToTraverse = site.morePagesToTraverse(elem);

                    if (morePagesToTraverse == false) { //Reached the last page. Process this
                        parseJobEntries(site,doc);
                    }
				} catch (IOException e) {
					Logger.getInstance().logError((e.getMessage() + " for: " + site.getUrlWithQuery()));
				} 
				Thread.sleep(MSEC_SLEEP);
			}
		} catch (IOException e) {
			Logger.getInstance().logError((e.getMessage() + " for: " + site.getUrlWithQuery()));
		} catch (InterruptedException e) {
			Logger.getInstance().logError((e.getMessage() + " for: " + site.getUrlWithQuery()));
		}
	}