mainly for emacs