As mentioned for Displayable, the prepare routine could be modified to return a flag indicating whether anything has changed in the Displayable objects which would require a redraw. If nothing changed, then a redraw could be avoided.