public void download() {
	//  This is the core web/download i/o code...
 		InputStream input = null;
		StringBuilder contents = null;
		try {
			URL url = new URL(urlString);
			URLConnection connection = url.openConnection();
		
			// Set connect() to throw an IOException
			// if connection does not succeed in this many msecs.
			connection.setConnectTimeout(5000);
			
			connection.connect();
			input = connection.getInputStream();

			BufferedReader reader  = new BufferedReader(new InputStreamReader(input));
		
			char[] array = new char[1000];
			int len;
			contents = new StringBuilder(1000);
			while ((len = reader.read(array, 0, array.length)) > 0) {
				contents.append(array, 0, len);
				Thread.sleep(100);
			}
			
			bytes = contents.length();
			
//			System.out.println("Nice!");
			t_end = System.currentTimeMillis();
			String dwnStr = "";
			dwnStr += getTime() + "   ";
			dwnStr += getElapsed() + " ms    ";
			dwnStr += bytes + " bytes";
			
			updateModel(dwnStr);
			// Successful download if we get here
			
		}
		// Otherwise control jumps to a catch...
		catch(MalformedURLException ignored) {
//			System.out.println("Malformed Address");
			updateModel("err: malformed address");
		}
		catch(InterruptedException exception) {
			// deal with interruption			
			updateModel("interrupted");
			
		}
		catch(IOException ignored) {
//			System.out.println("Website does not exist");
			updateModel("err: website does not exist");
		}
		// "finally" clause, to close the input stream
		// in any case
		finally {
			try{
				if (input != null) input.close();
			}
			catch(IOException ignored) {}
		}
		
	}