public static void main(String[] args) {
        try {
            for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        widener.setPreferredSize(new Dimension(208, 0));
        result.setLayout(new GridLayout());

        immunities.setLayout(new GridLayout(0, 5, 2, 2));
        resistances.setLayout(new GridLayout(0, 5, 2, 2));
        vulnerabilities.setLayout(new GridLayout(0, 5, 2, 2));
        majorVulnerabilities.setLayout(new GridLayout(0, 5, 2, 2));
        majorResistances.setLayout(new GridLayout(0, 5, 2, 2));

        immunityLabel.setToolTipText("No damage will be taken");
        resistanceLabel.setToolTipText("These will only inflict half damage");
        vulnerabilityLabel.setToolTipText("Damage will be doubled from these sources");
        majorResistLabel.setToolTipText("These will only do a fourth of the damage");
        majorVulnLabel.setToolTipText("These will inflict four times the damage!");

        JComboBox<String> typeList = new JComboBox<>();
        JComboBox<String> typeList2 = new JComboBox<>();
        JComboBox<String> pokemonList = new JComboBox<>();


        JLabel helpMessage = new JLabel("To begin: Search a pokemon or set type below");
        result.add(helpMessage, SwingConstants.CENTER);

        for (Element e : Element.values()) {
            typeList.addItem(e.toString());
            typeList2.addItem(e.toString());
        }

        for (Pokemon p : Pokemon.values()) {
            pokemonList.addItem(p.toString());
        }

        AutoCompletion.enable(pokemonList);

        ItemListener pokemonListener = e -> {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                typeList.setSelectedItem(getPokemon((String) pokemonList.getSelectedItem()).primaryType.toString());
                typeList2.setSelectedItem(getPokemon((String)pokemonList.getSelectedItem()).secondaryType.toString());
            }
        };

        pokemonList.addItemListener(pokemonListener);

        Font font = new Font("Comic Sans MS", Font.BOLD, 12);
        typeList.setFont(font);
        typeList2.setFont(font);
        pokemonList.setFont(font);
        typeList.setSelectedItem(Element.NORMAL.toString());

        ItemListener typeListener = e -> {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                displayAttributes(getPokemonType((String)typeList.getSelectedItem()),
                        getPokemonType((String)typeList2.getSelectedItem())
                );
            }
        };

        typeList.addItemListener(typeListener);
        typeList2.addItemListener(typeListener);

        selectionPanel.add(pokemonList);
        selectionPanel.add(typeList);
        selectionPanel.add(typeList2);

        frame.add(widener, BorderLayout.NORTH);
        frame.add(result, BorderLayout.CENTER);
        frame.add(selectionPanel, BorderLayout.SOUTH);
        frame.setIconImage(new ImageIcon("Images/Icon.png").getImage());

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }