public static void extractAndLaunch(final String s) throws Exception
	{
        int updateLevel = hasUpdate();
        if(updateLevel == 1)
        {
            contentPane.remove(loginPart);
            JPanel confirmUpdatePane = new JPanel();
            confirmUpdatePane.setOpaque(false);
            confirmUpdatePane.setLayout(new BoxLayout(confirmUpdatePane, BoxLayout.Y_AXIS));
            JLabel l = new JLabel("A new update is available. Download it ?");
            l.setForeground(Color.white);
            JPanel labelPane = new JPanel(new FlowLayout(FlowLayout.CENTER));
            labelPane.add(l);
            labelPane.setOpaque(false);
            confirmUpdatePane.add(labelPane);
            
            JPanel confirmPane = new JPanel(new FlowLayout(FlowLayout.CENTER));
            confirmPane.setOpaque(false);
            final JButton yes = new JButton("Accept");
            yes.setOpaque(false);
            final JButton cancel = new JButton("Cancel");
            cancel.setOpaque(false);
            confirmPane.add(yes);
            confirmPane.add(cancel);
            confirmUpdatePane.add(confirmPane);
            
            TitledBorder border = new TitledBorder("Update time!");
            border.setTitleColor(Color.white);
            confirmUpdatePane.setBorder(border);

            confirmUpdatePane.setPreferredSize(loginPart.getPreferredSize());
            contentPane.add(confirmUpdatePane, "South");
            
            contentPane.validate();
            contentPane.repaint();
            frame.repaint();
            
            yes.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent arg0)
                {
                    yes.setEnabled(false);
                    cancel.setEnabled(false);
                    new Thread()
                    {
                        public void run()
                        {
                            try
                            {
                                update();
                                launchGame(s);
                            }
                            catch (Exception e)
                            {
                                e.printStackTrace();
                            }
                        }
                    }.start();
                }
            });
            
            cancel.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent arg0)
                {
                    try
                    {
                        launchGame(s);
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                }
            });
        }
        else if(updateLevel == 2)
            new Thread()
            {
                public void run()
                {
                    try
                    {
                        update();
                        launchGame(s);
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                }
            }.start();
        else
            launchGame(s);
	}