wrote CanvasCache to prevent the creation of zillions of canvases