public void render(Graphics g) {
        if (!isDirty) {
            int xPos = indicatorManager.mapToPanelX(mapX);
            int yPos = indicatorManager.mapToPanelY(mapY);

            //flip the yPos since drawing happens top down versus bottom up
            yPos = indicatorManager.getPHeight() - yPos;

            //subtract the block height since points are bottom left and drawing starts from top left
            yPos -= indicatorManager.getBlockHeight();

            BufferedImage bi = registry.getImageLoader().getImage(imageName);

            if (bi != null) {
                g.drawImage(bi, xPos, yPos, (int) width, (int) height, null);
            }

            if (textFont != null && !text.isEmpty()) {
                g.setFont(textFont);

                registry.ghettoOutline(g, Color.BLACK, text, xPos, yPos + textFont.getSize());

                g.setColor(textColor);
                g.drawString(text, xPos, yPos + textFont.getSize());
            }
        }
    }