oh I see, this is recursive