Add promises support