/// <summary>
        ///  Templated constructor for easy start up of a virtual machine from VHD file
        /// </summary>
        /// <param name="VmName"></param>
        /// <param name="memory"></param>
        /// <param name="vcpu"></param>
        /// <param name="iso"></param>
        public VirtualMachineBuilder(string VmName, string vhd, int memory, int vcpu, DomainType type)
        {
            HypervisorFeatures = new HypervisorFeatures();
            Power       = new Power();
            _Devices    = new DeviceList(XEN_PATH_DEFAULT_EMULATOR);
            this.VmName = VmName;
            Memory      = memory;
            Vcpu        = vcpu;
            Iso         = "";
            VHD         = vhd;
            DomType     = type;

            //add Default boot cdrom
            Disk cdrom = new Disk(Disk.DiskTypes.file, Disk.DiskDevices.cdrom);

            cdrom.SourceFile        = Iso;
            cdrom.BackingStore      = false;
            cdrom.ReadOnly          = true;
            cdrom.TargetDevice      = Disk.DiskBoot.hdc;
            cdrom.TargetBus         = Disk.DiskBus.ide;
            cdrom.AddressType       = "drive";
            cdrom.AddressController = 0;
            cdrom.AddressBus        = 0;
            cdrom.AddressTarget     = 0;
            cdrom.AddressUnit       = 0;
            cdrom.Role = Disk.DiskRole.secondary;
            _Devices.Disks.Add(cdrom);
        }
 /// <summary>
 /// pae - Physical address extension mode allows 32-bit guests to address more than 4 GB of memory.
 /// acpi - ACPI is useful for power management, for example, with KVM guests it is required for graceful shutdown to work.
 /// apic - APIC allows the use of programmable IRQ management.
 /// </summary>
 /// <param name="acpi"></param>
 /// <param name="apic"></param>
 /// <param name="pae"></param>
 public void setHypervisorFeatures(bool acpi, bool apic, bool pae)
 {
     HypervisorFeatures = new HypervisorFeatures(acpi, apic, pae);
 }