I'm wondering if `PaymentEntity` shouldn't, in fact, be subclassed, by `PaymentType`? It would mean more efficient use of data members, as many now are superfluous, depending on the `PaymentType`. However, I believe we are following the model that a `*Entity` should identically reflect its database table counterpart. In which case, it is really more a question of whether the database table schemas are efficiently defined. Not being a database guru, I can't quite answer that off hand. But, from an object oriented standpoint, subclassing would normally be correct.