improve widget provider and service