private void render(){
        BufferStrategy bs = this.getBufferStrategy();
	if(bs == null){
	    createBufferStrategy(3);
	    return;
	}
	Graphics g = bs.getDrawGraphics();

	g.drawImage(background, 0, 0, null); 
	
        Point mCoordinates = MouseInfo.getPointerInfo().getLocation();
        Point wCoordinates = this.getLocationOnScreen();
        int x = (int) mCoordinates.getX() - (int) wCoordinates.getX();
        int y = (int) mCoordinates.getY() - (int) wCoordinates.getY();
        mRegion.setLocation(x-mRegion.width/2, y-mRegion.height/2); 
        menu.rebuildMenu();
        menu.render(g);
        switch(State){
            case MENU:
                g.drawImage(header_ss.grabImage(1, 1, 642, 50), 0, 50, null);
                break;
            case HISTORY:
                g.drawImage(header_ss.grabImage(1, 2, 642, 50), 0, 50, null);
                h.render(g);
                break;
            case SETUP:
                g.drawImage(header_ss.grabImage(1, 3, 642, 50), 0, 50, null);
                break;
            case GAME:
                game.render(g);
                break;
            case FINISHED:
                g.drawImage(header_ss.grabImage(1, 6, 642, 50), 0, 50, null);
                break;
            case EXIT:
                break;
        }
        
        g.dispose();
	bs.show();
    }