Split out generic n-dimensional Cartesian product into its own file, and used it to implement the Comonad(Apply) instances for Indexed things. Man, these LANGUAGE pragmas sure are starting to stack up...