add q promise