add recur macro