add new api & use listenner to notify