Properly format the file and move provide to the bottom.
Turn macros into normal defcustom/defun since there's no reason not to.
Drop support for outdated Emacs, and XEmacs.