added canvas fallback