When compiling, require 'cl for lexical-let
Use with-current-buffer isntead of save-excursion/set-buffer