recursive value substitution is now working