adjustable recursion depth