recursion not needed