public String loadApp(String appClassname) {
		String startingApp = null; // for debugging output in catch block
		try {
			Log.d(TAG, "Loading app " + appClassname);
			startingApp = appClassname;
			Class<? extends Object> appClass = (Class<? extends Object>) Class.forName(appClassname);
			NetLoadableConsoleApp app = (NetLoadableConsoleApp)appClass.newInstance();
			
			if ( mAppMap.containsKey(app.loadablename())) throw new Exception("Class " + appClassname + " is using app name " + 
                    app.loadablename() + " but that name is already in use by class "
                    + mAppMap.get(app.loadablename()).getClass().getName());
			String appLoadableName = app.loadablename(); 
			mAppMap.put(appLoadableName, app);
			Log.i(TAG, appClassname + " Loaded as " + appLoadableName);
			return appLoadableName;
		} catch (ClassNotFoundException nfe) {
			Log.e(TAG, "Can't load " + startingApp + ": ClassNotFoundException (typo in config file?)");
		} catch (Exception e) {
			Log.e(TAG, "Can't load " + startingApp + ": " + e.getClass().getName() + " exception: " + e.getMessage());
		}
		return null;
	}