abstract type in REP