The "new" function, number of rows, and metadata are repeated for all the table types. What does it take to encapsulate these concepts into a trait?