some change to the interface function