add PRG2
make abstract methdo & class