an abstract Post model for subclassing