prevent invalid recursion