add promise based use syntax