recur now validates argument counts