implements inheritance