In order to achieve some useful purpose, some widgets must periodically return control of the program to the application programmer's code. Such times might occur when the user clicks on a push button widget labelled ``Save'', in which case control of the application should be handed over to the relevant section of the application programmer's code dealing with saving text to a file. To achieve this, widgets that are designed to allow interaction with the application programmer's code have one or more callback lists implemented as resources. A callback list specifies which of the application programmer's routines will be invoked when a particular callback is triggered, either for a well-defined reason and sometimes as a result of a particular event.