I think it's ok for this to be abstract, if your intention is to force us to always use one of the subtypes instead?