public void loadData() {
        MasterPanel mp = (MasterPanel) parent;

        // data that will actually be used in final version

        HUDSprite.loadImages(imgLoader);
        CaveNodeSprite.loadImages(imgLoader);
        AgentSprite.loadImages(imgLoader);
        WumpusSprite.loadImages(imgLoader);
        FXSprite.loadImages(imgLoader);

        imgLoader.waitForAll();

        log.d("loaded images for MainLevel");

        // create Wumplus environment

        wumplusEnvironment = new WumplusEnvironment(mp);

        // create initial objects

        hudPanel = new HUDSprite(0, 0, 'p');
        hasGoldSprite = new HUDSprite(0, 48, 'g');
        hasFoodSprite = new HUDSprite(0, 120, 'f');
        hasArrowSprite = new HUDSprite(0, 192, 'a');

        winSprite = new HUDSprite(96, 120, 'v');
        loseSprite = new HUDSprite(96, 120, 'n');
        dieSprite = new HUDSprite(96, 120, 'd');
        winSprite.isVisible = false;
        loseSprite.isVisible = false;
        dieSprite.isVisible = false;

        Point coords;

        coords = gridToPanelCoords(1, 1);
        agentSprite = new AgentSprite(coords.x, coords.y);
        agentGridDestX = 1;
        agentGridDestY = 1;
        entranceSprite = new FXSprite(coords.x, coords.y, 'E');

        // wumpus

        Wumpus wumpus = wumplusEnvironment.wumpus;
        coords = gridToPanelCoords(wumpus.x, wumpus.y);
        wumpusSprite = new WumpusSprite(coords.x, coords.y, 'W');

        // supmuw

        Supmuw supmuw = wumplusEnvironment.supmuw;
        coords = gridToPanelCoords(supmuw.x, supmuw.y);
        supmuwSprite = new WumpusSprite(coords.x, coords.y, 'S');

        // gold

        Gold gold = wumplusEnvironment.gold;
        coords = gridToPanelCoords(gold.x, gold.y);
        glitterSprite = new FXSprite(coords.x, coords.y, 'G');


        // the cave

        Hashtable<Point, CaveNode> grid = wumplusEnvironment.grid;
        caveNodeSprites = new Hashtable<Point, CaveNodeSprite>();
        wallSprites = new Hashtable<Point, CaveNodeSprite>();

        breezeSprites = new ArrayList<FXSprite>();
        stenchSprites = new ArrayList<FXSprite>();
        mooSprites = new ArrayList<FXSprite>();

        for (int i = 0; i <= 11; i++) {
            for (int j = 0; j <= 11; j++) {
                Point point = new Point(j, i);
                CaveNode curNode = grid.get(point);

                coords = gridToPanelCoords(j, i);
                char type = ' ';

                if (curNode.hasObstacle)
                    type = 'O';
                if (curNode.hasPit)
                    type = 'P';

                CaveNodeSprite cns = new CaveNodeSprite(coords.x, coords.y, type);
                CaveNodeSprite cnsWalls = new CaveNodeSprite(coords.x, coords.y, 'W');

                caveNodeSprites.put(point, cns);
                wallSprites.put(point, cnsWalls);

                // add special effects for breezes, stenches, moos

                FXSprite fxs;
                if (curNode.hasBreeze) {
                    fxs = new FXSprite(coords.x, coords.y, 'B');
                    breezeSprites.add(fxs);
                }
                if (curNode.hasStench) {
                    fxs = new FXSprite(coords.x, coords.y, 'S');
                    stenchSprites.add(fxs);
                }
                if (curNode.hasMoo) {
                    fxs = new FXSprite(coords.x, coords.y, 'M');
                    mooSprites.add(fxs);
                }

            }
        }


        testFloor = new CaveNodeSprite(72, 24, 'F');
        testFloor.width = 240;
        testFloor.height = 240;

        soundTimer = 0;

    }