replace recursive()