support external funciton call