Add user hooks into the run, update, hide and show menu item calls.
Add a setList wrapper in the top menu to avoid having to dig down into the menu items themselves.
Add register get and set functions which means toCSV and fromCSV will save and restore register settings too.