Libvirt provides a common and stable layer to securely manage domains (instances of operating systems) on a node (single physical machine). When creating a virtualized guest, one needs to tell libvirt, among other things, what one wants the virtualized hardware to look like. To achieve this, one provides an XML file in the domain XML format. In these files, device addresses show up in many places. In order to make libvirt convenient to use, device addresses are sometimes autogenerated. There are also some constraints on these addresses. Currently, code to deal with device addresses is scattered across the codebase. The project is to create an abstract structure that handles different types of addresses, assigns them and properly handles duplicates.