add promise parameter