Still todo: - Add separate module for GUI hooks - Update the remaining runHook/runFilter() calls - Document the changes, including defensive registration