Steve Maine posts an interesting follow up to Clemens' earlier post, Rows and Columns + Elements and Attributes is all you need. My favorite quote: "As collective industry experience has shown, handing polymorphic data with language techniques optimized for polymorphic behavior is tricky at best. Yes, it can be done, but it requires fits of extreme cleverness on the part of the developer. Often those fits of cleverness turn into fugues of frustration because the programming techniques designed to reduce complexity have actually compounded it."