make the derived function correcly