separate promise
add promise