final private Corpus createInitCorpus() {
		Debug.into(this, "createInitCorpus");
		JSON json;
		Collection<URL> localUrlList,webUrlList;
		Corpus corpus;

		localUrlList = new LinkedList<URL>();
		webUrlList = new LinkedList<URL>();
		
		try {
			json = JSON.parse(doclistJsonStr);
		} catch (JSON.JsonStringFormatException e) {
			throw new RuntimeException(e);
		}
		
		// process local documents
		Debug.println(3, "process local file/directory list to URL list");
		JSON local = json.get("local");
		if (local != null) {
			for (Entry<String, JSON> e : local) {
				addLocal(localUrlList, new File((String) e.getValue().toObject()));
			}
		}

		// process web documents
		Debug.println(3, "process web URL list");
		JSON web = json.get("web");
		if (web != null) {
			for (Entry<String, JSON> e : web) {
				String urlStr;
				urlStr = (String) e.getValue().toObject();
				Debug.println(3, "found web doc " + urlStr);
				try {
					webUrlList.add(new URL(urlStr));
				} catch (MalformedURLException ex) {
					throw new RuntimeException(ex);
				}
			}
		}
		
		try {
			corpus =  Factory.newCorpus("init Corpus");
			for (URL u : localUrlList) {
				Document doc = new DocumentImpl();
				Debug.println(3, "change local url to gate.Document : " + u);
	    		doc.setSourceUrl(u);
	    		doc.init();
				Debug.println(3, "add document to Corpus: " + corpus.getName());
	    		corpus.add(doc);
			}
			for (URL u : webUrlList) {
				Document doc = new DocumentImpl();
				Debug.println(3, "change web url to gate.Document : " + u);
	    		doc.setSourceUrl(u);
	    		doc.setMarkupAware(true);
	    		doc.init();
				Debug.println(3, "add document to Corpus: " + corpus.getName());
	    		corpus.add(doc);
			}
		} catch (ResourceInstantiationException e) {
			throw new RuntimeException(e);
		}
		
		Debug.out(this, "createInitCorpus");
		return corpus;
	}