@Override
	public boolean removeFromSystemIfPossible(AvalonSystem sys)
	{
		boolean bChanged = false;
		String driverType = getParamValByName(BasicComponent.EMBSW_CONF + ".softwareDriver");
		if(driverType==null)
		{
			driverType = getParamValByName(BasicComponent.EMBSW_CONF + ".hwClassnameDriverSupportDefault");
		}
		if(driverType==null)
		{
			Logger.logln("GenericTristateController: " + getInstanceName()
					+ " failed to detect driver type.", LogLevel.WARNING);
		} else {
			if(driverType.equalsIgnoreCase("altera_avalon_cfi_flash_driver") ||
					driverType.equalsIgnoreCase("altera_avalon_cfi_flash"))
			{
				Logger.logln("GenericTristateController: " + getInstanceName() 
						+ " seems to be a CFI-Flash chip.", LogLevel.INFO);
				SICFlash flash = new SICFlash(this);
				
				flash.setScd(SopcComponentLib.getInstance().getScdByClassName("altera_avalon_cfi_flash"));
				sys.removeSystemComponent(this);
				sys.addSystemComponent(flash);
				bChanged = true;
			} else if(driverType.equalsIgnoreCase("altera_avalon_lan91c111"))
			{
				Logger.logln("GenericTristateController: " + getInstanceName()
					     + " seems to be a SMSC LAN91c111 chip.", LogLevel.INFO);
				SICLan91c111 lan = new SICLan91c111(this);
				
				lan.setScd(SopcComponentLib.getInstance().getScdByClassName("altera_avalon_lan91c111"));
				sys.removeSystemComponent(this);
				sys.addSystemComponent(lan);
				bChanged = true;
			} else {
				Logger.logln("GenericTristateController: " + getInstanceName() 
						+ " is of unsupported type: " + driverType, LogLevel.WARNING);
			}
		}
		return bChanged;
	}