private void initShop() {
        itemsPanel = new JPanel();
        overPanel.add(titlePanel);
        overPanel.add(itemsPanel);
        GridLayout itemsLayout = new GridLayout(buyables.size(), 1);
        itemsLayout.setVgap(10);
        itemsPanel.setLayout(itemsLayout);
        
        Image coinIcon = Sprite.getScaledSprite("COIN", 10, 15).getImage();
        
        for (int i = 0; i < panels.size(); i++) {
            JPanel panel = panels.get(i);
            Buyable item = buyables.get(i);
            GridLayout gl = new GridLayout(1,2);
            gl.setHgap(10);
            panel.setLayout(gl);
            itemsPanel.add(panel);
            
            // put buy button
            JButton buyButton = new JButton(item.getName());
            buyButton.setIcon(new ImageIcon(item.getIcon()));
            buyButton.setVerticalTextPosition(SwingConstants.TOP);
            buyButton.addActionListener(buyListener);
            panel.add(buyButton);
            
            // put details panel
            JPanel details = new JPanel();
            details.setLayout(new BoxLayout(details, BoxLayout.PAGE_AXIS));
            JLabel costLabel = new JLabel(String.format("%d", item.getCost()));
            costLabel.setIcon(new ImageIcon(coinIcon));
            costLabel.setHorizontalTextPosition(JLabel.RIGHT);
            details.add(costLabel);
            int num = 0;
            switch (item.getName()) {
                case "SuperBomb":
                    num = player.getSuperBombs();
                    break;
                case "Laser":
                    num = player.getLasers();
                    break;
                case "Health Upgrade":
                    num = player.getTotalHP();
                    break;
                case "Air Brakes":
                    num = (player.hasAirBrakes()) ? 1 : 0;
                    break;
            }
            if (!item.getName().equals("Shield Recharge")) {
                JLabel haveLabel = new JLabel(String.format("Have: %d", num));
                if (!haveLabels.keySet().contains(item.getName())) {
                    haveLabels.put(item.getName(), haveLabel);
                }
                details.add(haveLabel);
            }
            panel.add(details);
        }
        GridLayout gl = new GridLayout(2,2);
        gl.setHgap(10);
        exitPanel.setLayout(gl);
        yourGoldLabel.setFont(new Font("Helvetica", Font.BOLD, 18));
        yourGoldIcon.setIcon(new ImageIcon(Sprite.getScaledSprite("COIN", 30, 40).getImage()));
        yourGoldIcon.setText(String.format("%d", player.getGold()));
        yourGoldIcon.setFont(new Font("Helvetica", Font.BOLD, 18));
        exitPanel.add(yourGoldLabel);
        exitPanel.add(new JLabel());
        exitPanel.add(yourGoldIcon);
        exitPanel.add(hangarButton);
        hangarButton.addActionListener(buyListener);
        overPanel.add(exitPanel);
    }