added canvas cache