Need to use cl-labels when there is a recursion