add version with less left recur; seems to make no diff in speed