private void intalize (){
        if (initCounter == 1){
            //x and y values
            startX = 0; startY = 0;
            endX1 = 10; endY1 = 12;
            endX2 = 39; endY2 = 12;
            endXf = 49; endYf = 24;
            topSpace = 15; leftSpace = 12;  //spaces from the top and left, hardcoded on enemy

            data = new Data();

            map = new Tile [endYf+1][endXf+1];        //new map

            //new arraylists
            flyingPath = new ArrayList <ArrayList <Integer>>();
            mobs = new ArrayList<Enemy>();
            mobsToSpawn = new LinkedList <Enemy> ();
        }
        else if (initCounter == 2){
            //new pathfinders
            pf1 = new Pathfind (startX, startY, endX1, endY1, this);       //top to the first checkpoint
            pf2 = new Pathfind (endX1, endY1, endX2, endY2, this);         //middle path
            pf3 = new Pathfind (endX2, endY2, endXf, endYf, this);         //rightmost path
        }
        else if (initCounter == 3){
            //tower defence stuff
            money           = 100;
            income          = 0;
            lives           = 20;
            level           = 1;
            time            = 0;
            spawnCount      = 0;
            flyingLevel     = false;
            levelStart      = false;
            bossLevel       = false;
            currentRunSpeed = 1;
            runSpeed = new int [5];
            runSpeed[0] = 40;
            runSpeed[1] = 50;
            runSpeed[2] = 60;
            runSpeed[3] = 70;
            runSpeed[4] = 80;
            runSpeedDelay = new int [5];
            runSpeedDelay[0] = 15;
            runSpeedDelay[1] = 30;
            runSpeedDelay[2] = 100;
            runSpeedDelay[3] = 250;
            runSpeedDelay[4] = 700;  
            numCreeps = 0;
            numMobs = data.getCurrentMaxSpawn();
        }
        else if (initCounter == 4){
            //ui
            ui = new Ui();          
        }
        else if (initCounter == 5){
            refreshUi = false;
            cb = new ChatBox();
            wp = new WaveProgress();
            pa = new PointerArrow();
            towerButton = new TowerButton();
            creepButton = new CreepButton();
            startWave   = new StartWave();
            buttonDelay = 0; 
            //generates the map
            generate();      

            //sets the path first
            setPath();

            //generates the path for the flying path, its always gona stay the same, so doing it here
            flyingPath.add (pf1.generatePath());       
            flyingPath.add (pf2.generatePath());
            flyingPath.add (pf3.generatePath());
            //populates the data queue for mobs
            data.populate();

            addObject (ui, 512, 643);
            addObject (cb, 512, 500);
            addObject (wp, 120, 675);
            addObject (towerButton, 262, 538);
            addObject (creepButton, 762, 538);
            addObject (startWave,   120, 735);

            //add and remove hover menu to give it a world reference
            addObject (hm, 0, 0);
            removeObject (hm);
        }
        else if (initCounter == 6){
            /** Terence's stuff**/
            //Towers
            towers = new ArrayList<Tower>();

            volume = new int[21];
            currentVolume = 16;
            for (int i = 0; i < 21; i++){
                volume[i] = i*5;
            }
            s.setVolume (volume[currentVolume]);

            //variable to run place movemet 
            place =  false;

            //stuff before start
            init = false;
            start = true;
            removeObject (loadScreen);
            s.stopMenu();
            s.playAmbient();
            ui.setWaveData (0, 1, level);
            Greenfoot.setSpeed (50);
        }
    }