model abstract