recursive variable expansion