adding pure virtual
implementing the default implementation of psh