abstract-complete