support non-base-model subclasses