Added promise support