changed widget format : they should now only return a promise