The struct is smaller because it is sparse. Its traversal is also more efficient.
Allow code sharing.