widget update functionality