Updated patch (FLET was causing warnings/errors even though it seemed to work. I don't know enough of elisp's bootstrapping process to know why exactly.)