```
There's no reason the object code must strictly follow the structure of the underlying XML tree, especially if it makes testing inconvenient. I think obtaining some basic details about the first NIC, first disk, first cdrom, etc. is fine to have at the top-level since they will be used often. The devices interface becomes more convenient when you have many devices you need to work with, or need to get very detailed about a specific device. Otherwise, for common data, I think it would be too cumbersome to require using the devices interface for all tasks. Though you are right in that we don't want to stuff too much into the top-level, we must seek a balance also.

Also remember, for some test-specific data/operations, there's no reason the test couldn't subclass VMXML directly inside the test-module. That would be a valid approach also.
```
@cevich 
Yes, this interface is useable, and I am not against with it. But my point is that who need to take care of it.
My opinion is VMXML but not VMXMLBase.My sugguestions provided to Li in my last common are both to implement it in VMXML instead of in VMXMLBase.

In my opinion, there are something different in responsibilities of VMXML and VMXMLBase. I think VMXMLBase is in lower level and it is closer with xml file. Its responsibility is parsing xml file and providing accessores to information in xml file. But the VMXML class is in higher level and it is closer with user.
We need to design interfaces in it from requirement from user.

So, I think the get_first_mac is a high-level interface and requirement of user, we need to implement it in VMXML but not in VMXMLBase.

Do you agree ?