loop-over works for 2d; external specialization seems to work too