private synchronized void loadShares() {
		if (this.isInitialized()) {
			return;
		}
//		D.out("Loading all shares...");
		String[] shareNames = Configuration.instance().getShareNames();
		if (shareNames == null) {
			return;
		}
		for (String n: shareNames) {
			String dir = Configuration.instance().getDirFromShareName(n);
			Share s = null;
			try {
				s = new Share(n, dir);
			} catch (InvalidShareException e) {
				System.err.println("Share " + n + " is invalid. Removing share.");
				Configuration.instance().removeShare(n);
			}
			if (s != null) {
				this.shareMap.put(n, s);
			}
		}
		this.setInitialized(true);
		
		this.notifyObservers();
	}