public void update(){
    	// Update Graphics
    	long renderStart = System.nanoTime();
        do {
                Graphics2D bg = getBuffer();
                if (!isRunning) {
                    break;
                }
                
                //this next line blanks the frame
                //it needs to "blank" to whatever the last map-render was
            	backgroundGraphics.drawImage(renderdata.render(), 0, 0, null);
            	
            	//if we're transitioning, do that
            	if(t == Transition.IN || t == Transition.OUT){
            		transitionOpacity = (t == Transition.IN) ? transitionOpacity - 3 : transitionOpacity + 3;
            			transitionOpacity = (transitionOpacity > 255/transitionSpeed) ? 255/transitionSpeed : transitionOpacity;
            			transitionOpacity = (transitionOpacity < 0) ? 0 : transitionOpacity;
            		transition = new BufferedImage(background.getWidth(), background.getHeight(), BufferedImage.TYPE_INT_ARGB);
            			Graphics2D tg = (Graphics2D)transition.getGraphics();
            			tg.setColor(new Color(0, 0, 0, transitionOpacity*transitionSpeed));
            			tg.fillRect(0, 0, transition.getWidth(), transition.getHeight());
            		backgroundGraphics.drawImage(transition, 0, 0, null);
            	}
            	
                renderGame(backgroundGraphics); // this calls your draw method
                // thingy
                
                //FIXME: why not just always do this first thing; even if scale = 1 that doesn't cause problems
                if (scale != 1) {
                        bg.drawImage(background, 0, 0, background.getWidth() * scale,
                        		background.getHeight() * scale, 0, 0, background.getWidth(), background.getHeight(), null);
                } else {
                        bg.drawImage(background, 0, 0, null);
                }
                bg.dispose();
        } while (!updateScreen());
        long renderTime = (System.nanoTime() - renderStart) / 1000000;
        try {
                Thread.sleep(Math.max(0, fpsWait - renderTime));
        } catch (InterruptedException e) {
                Thread.interrupted();
                return;
        }
        renderTime = (System.nanoTime() - renderStart) / 1000000;
    }