support recursive variable references