redraw only when something has changed