public RemoteController()
	{

		//Misc Intializers
		serverAddress = null;
		intPort = 5252;
		dicernType = 0;
		charCount = 0;
		autoSave = 0;
		selected = null;
		conv = new byteConvertor(this);
		control = new RCControls();
		strName = "null";

		//Initializes the name list
		head = null;
		tail = head;

		//Generate the device specific information from the saved file
		loadInfo("RemoteInfo");
		if(strName == null)
			strName = "null";
		if(strName.equals("null")||strName.equals(""))
			loadInfo("RemoteInfoBackup");

		//Start the USB search thread
		USBGen = new USBAddressGenerator();
		Runnable run = USBGen;
		Thread tr = new Thread(run);
		tr.start();

		//Wait before loading the boot file
		String hld = strName;
		try
		{
			Thread.sleep(500);
		}
		catch(InterruptedException ex)
		{}
		USBGen.attemptUpdate("RemoteController");

		//Search for Wifi connections
		conProt = new RCEstablishConnection(false);
		conProt.setRemote(this);
		conProt.setName(strName);

		loadBoot();
		saveInfo("RemoteInfo");
		saveInfo("RemoteInfoBackup");

		vid = new PiVideoReader(USBGen);
		Runnable runnable = vid;
		Thread thread = new Thread(runnable);
		thread.start();

		if(!strName.equals(hld))
		{
			conProt.killCurrent();
			conProt = new RCEstablishConnection(false);
			conProt.setRemote(this);
			conProt.setName(strName);
		}

		//Search for servers
		if(intPort == 0)
			intPort = 5252;
		internetCon = new DroneClient(serverAddress, intPort);
		internetCon.setRemote(this);

		//Begin the update timer
		Timer tmr = new Timer();
		tmr.schedule(new upDate(),0,50);

		vid.saveImage();
	}