refactor pull to update widget