swap to cl-defun