Add recursive string replacement