now with basic promise support