public static void main(final String[] args){
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run(){
				Main win;
				try {
					int rsize = 0;
					Player ai = null;
					try{
						rsize = Integer.parseInt(args[0]);
						if (rsize <= 2) throw new Exception("Invalid rack size");
						Model m;
						switch(args[1]){
							case "diablo":
								m = new ModelDiablo("/home/isaac/Programming/racko-ai/weights/diablo/diablo2_weights10_2_wkyletraining.txt", false);
								break;
							case "baltar":
								m = new ModelBaltar();
								break;
							case "kyle":
								m = new ModelKyle(false);
								break;
							case "max":
								m = new ModelMax();
								break;
							case "random":
								m = new ModelRandom();
								break;
							default:
								throw new Exception("Invalid AI name");
						}
						ai = new PlayerComputer(m);
					} catch(Exception e){
						rsize = 0;
						System.out.println("Error: "+e);
						System.out.println("Usage: [rack_size] [diablo|baltar|kyle|max|random]");
					}
					if (rsize != 0){
						win = new Main(rsize, ai);
						win.setVisible(true);
						win.startGameThread();
					}
				} catch (Exception ex) {
					System.out.println("Exception thrown in Main:");
					System.out.println(ex.getMessage());
				}
			}
		});
	}