auto detect if canvas is available if not, fall back to tables