abstract-base-class