public GreeterComponent(GUIComponentGroup superGroup) {
        super(superGroup);

        bannerImage = new ImageComponent(this);
        bannerImage.setImage("giant_eight");
        bannerImage.setImageLocationC(this.getLocationXC(), this.getLocationYC());
        bannerImage.animateColor(new AlphaColorAnimation(20000, Animation.PACE_TRIG_FLIP, true, ProjUtils.DKGREY, 0, 0.5f, true));
        bannerImage.animateLocation(new LineLocationAnimation(20000, Animation.PACE_LINEAR, true, bannerImage.getLocationXC(), Display.getHeight() + bannerImage.getHeight()/2, bannerImage.getLocationXC(), -bannerImage.getHeight()/2));
        this.addComponent(bannerImage);

        orbitFlares = new OrbitFlare[NUM_FLARE_ORBITS];
        Orbit orbit;
        int maxOrbitSize = Math.max(this.getWidth(), this.getHeight()) - FLARE_MAX_SIZE;
        int minOrbitSize = COLUMN_WIDTH + FLARE_MAX_SIZE;
        int orbitSize;
        for (int i = 0; i < NUM_FLARE_ORBITS; i++) {
            orbitSize = (int)Math.round(Math.random()*(maxOrbitSize - minOrbitSize) + minOrbitSize);
            orbit = new Orbit(this.getLocationXC(), this.getLocationYC(), orbitSize, orbitSize);
            orbitFlares[i] = new OrbitFlare(this, orbit,
                    FLARE_MIN_SIZE, FLARE_MAX_SIZE,
                    (int)Math.round(Math.random()*(MAX_NUM_FLARES - MIN_NUM_FLARES) + MIN_NUM_FLARES)
            );
            this.addComponent(orbitFlares[i]);
        }

        nameButton = new ButtonComponent(this, "Your Name?");
        nameButton.setStyle(ButtonComponent.STYLE_BILINE);
        nameButton.setBounds(this.getLocationXC() - COLUMN_WIDTH / 2, this.getLocationYC() - 48 - 8, COLUMN_WIDTH - 48 - 16, 48);
        nameButton.setActionListener(this);
        this.addComponent(nameButton);

        colorChooserButton = new BasicInputComponent(this) {
            @Override
            public void mousePressed(int mx, int my, GUIComponent component) {
                this.actionPerformed();
            }
        };
        colorChooserButton.setTextureID(TextureManager.getTextureID("color_selection"));
        colorChooserButton.setBounds(this.getLocationXC() + COLUMN_WIDTH / 2 - 48, this.getLocationYC() - 48 - 8, 48, 48);
        colorChooserButton.setColor(Game.colorBank.grabColor(), false);
        colorChooserButton.addActionListener(this);
        this.addComponent(colorChooserButton);

        numPlayersLabel = new TextComponent(this, "# Players:");
        numPlayersLabel.setAlignment(TextComponent.H_RIGHT, TextComponent.V_CENTER);
        numPlayersLabel.setFont(GraphicalFont.StandardFont);
        numPlayersLabel.setBounds(this.getLocationXC() - COLUMN_WIDTH / 2, this.getLocationYC() + 8, COLUMN_WIDTH * 3 / 16, 48);
        this.addComponent(numPlayersLabel);

        numPlayersValue = new TextComponent(this, String.valueOf(Game.DEFAULT_NUM_PLAYERS));
        numPlayersValue.setAlignment(TextComponent.H_CENTER, TextComponent.V_CENTER);
        numPlayersValue.setFont(GraphicalFont.BigFont);
        numPlayersValue.setBounds(this.getLocationXC() - COLUMN_WIDTH/2 + COLUMN_WIDTH*3/16, this.getLocationYC() + 8, COLUMN_WIDTH/16, 48);
        this.addComponent(numPlayersValue);

        numPlayersSelector = new SliderComponent(this);
        numPlayersSelector.setBounds(this.getLocationXC() - COLUMN_WIDTH/4, this.getLocationYC() + 8, COLUMN_WIDTH/4, 48);
        numPlayersSelector.setSliderValue((double)(Game.DEFAULT_NUM_PLAYERS - Game.MIN_PLAYERS)/(Game.MAX_PLAYERS - Game.MIN_PLAYERS));
        numPlayersSelector.addActionListener(this);
        this.addComponent(numPlayersSelector);

        computerDifficultyButton = new ButtonComponent(this, Game.DEFAULT_COMPUTER_DIFFICULTY.name());
        computerDifficultyButton.setStyle(ButtonComponent.STYLE_BILINE);
        computerDifficultyButton.setFont(GraphicalFont.BigFont);
        computerDifficultyButton.setBounds(this.getLocationXC(), this.getLocationYC() + 8, COLUMN_WIDTH/2, 48);
        computerDifficultyButton.addActionListener(this);
        this.addComponent(computerDifficultyButton);

        playButton = new ButtonComponent(this, "PLAY");
        playButton.setBounds(this.getLocationX(), this.getLocationYC() + 8 + 48 + 16,  this.getWidth(), 64);
        playButton.addActionListener(this);
        this.addComponent(playButton);

        authors = new TextComponent(this, "Austin Q - Rebecca H - Cody L");
        authors.setFont(GraphicalFont.BigFont);
        authors.setColor(ProjUtils.DKGREY, false);
        authors.setAlignment(TextComponent.H_RIGHT, TextComponent.V_BOTTOM);
        authors.setBounds(this.getWidth() - this.getWidth()/2 - 8, this.getHeight() - authors.getFont().getSize()*2 - 8, this.getWidth()/2,  authors.getFont().getSize()*2);
        this.addComponent(authors);

        computerDifficultyDropDown = new DropDownComponent(this, Game.PlayerType.values().length, computerDifficultyButton.getWidth(), 32);
        for (int i = 0; i < Game.PlayerType.values().length; i++) {
            computerDifficultyDropDown.setEntry(i, Game.PlayerType.values()[i].name());
        }
        computerDifficultyDropDown.setLocation(computerDifficultyButton.getLocationX(), computerDifficultyButton.getLocationY() + computerDifficultyButton.getHeight() + 8);
        computerDifficultyDropDown.addActionListener(this);
        this.addComponent(computerDifficultyDropDown);
        computerDifficultyDropDown.hide();

        nameInput = new TextEntryComponent(this, "What is your name?");
        nameInput.addActionListener(this);
        this.addComponent(nameInput);
        nameInput.hide();

        colorChooser = new ColorSelectorComponent(this);
        colorChooser.addActionListener(this);
        this.addComponent(colorChooser);
        colorChooser.hide();

    }