widgets have unique ids