Refactor 2d

Ready for merge.  Lookin at you, Caswell
This should be a helper function, not a member function.  Or just `corners_list.append((0, 0) + xy.shape)`