Yeah, let’s face it: currently writing these interfaces is really confusing largely because of the typing. I’ve posted my ideas for an overhaul here. Certainly we also need much better documentation.
Currently traversal is always column-major (as in columns first, as far as I know), but one of my proposals is to change that.