changed widget to promise