switched all widgets into promises