add getId abstract method