The controller is split into two sections. The callbacks subdirectory contains the functions that are used as callbacks from the GLUT event loop. The actions subdirectory contains functions that operate on the data and state. To the extent possible callbacks should be empty shells that transform information from hardware and the event loop to the calling parameters of actions. This design has the advantage of facilitating the scripting of user actions in the future. A script should be able to call action functions and generate equivalent behaviors as if the user had initiated the sequences of actions using the user interface. Another advantage is that multiple user interface callbacks can share the same actions. A common example of this is the execution of the same function through either a menu selection callback or a toolbar callback. As per the "GNU Coding Standards" section "5.4 Naming Variables, Functions, and Files [http://www.gnu.org/prep/standards/html_node/Names.html#Names]" underscores should be used to separate words in a name. LocalWords: callbacks callback