base model class separated out