re-implemented SetVal recursively