add `addListener` function
update
Merge branch 'dev', add addListener api