decrared pure virtual function, added some comments