use bases<...> instead of fusion::vector<...> to benefit high polynomial order