add AbstractIDGetter and set id as protected