added more functionalities to derived classes