compatible with emacs23