modified interface function