Use cl-flet rather than defun.