Use defun* intsead of cl-defun (the cl-defun name doesn't exist in emacs 24.1.1)