use new perfect inherited function