minor change
add promise api
modify