shadow recursion fix