Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 13949)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 13950)
@@ -2835,20 +2835,21 @@
                                             ComSafeArrayAsOutParam (propertyDefaults)));
 
-            RTPrintf (" config=(");
+            RTPrintf (" properties=(");
             if (propertyNames.size() > 0)
             {
                 for (size_t a = 0; a < propertyNames.size(); ++ a)
                 {
-                    RTPrintf ("key='%ls' desc='%ls' type=", Bstr (propertyNames [a]).raw(), Bstr (propertyDescriptions [a]).raw());
+                    RTPrintf ("\n  name='%ls' desc='%ls' type=",
+                              Bstr (propertyNames [a]).raw(), Bstr (propertyDescriptions [a]).raw());
                     switch (propertyTypes [a])
                     {
-                        case DataType_Int32Type: RTPrintf ("int"); break;
-                        case DataType_Int8Type: RTPrintf ("byte"); break;
-                        case DataType_StringType: RTPrintf ("string"); break;
+                        case DataType_Int32: RTPrintf ("int"); break;
+                        case DataType_Int8: RTPrintf ("byte"); break;
+                        case DataType_String: RTPrintf ("string"); break;
                     }
                     RTPrintf (" flags=%#04x", propertyFlags [a]);
                     RTPrintf (" default='%ls'", Bstr (propertyDefaults [a]).raw());
                     if (a != propertyNames.size()-1)
-                        RTPrintf (",");
+                        RTPrintf (", ");
                 }
             }
Index: /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h	(revision 13949)
+++ /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h	(revision 13950)
@@ -865,5 +865,5 @@
                                 bool aRecursive = false);
 
-    static QList< QPair<QString, QString> > HDDBackends();
+    static QList <QPair <QString, QString> > HDDBackends();
 
     /* Qt 4.2.0 support function */
Index: /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp	(revision 13949)
+++ /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp	(revision 13950)
@@ -4694,10 +4694,10 @@
 
 /**
- * Automatically figure out which hdd backends are currently support by vbox.
+ * Figures out which hard disk formats are currently supported by VirtualBox.
  * Returned is a list of pairs with the form
- * <"Backend Name", "*.suffix1 *.suffix2 ...">.
+ *   <tt>{"Backend Name", "*.suffix1 .suffix2 ..."}</tt>.
  */
 /* static */
-QList< QPair<QString, QString> > VBoxGlobal::HDDBackends()
+QList <QPair <QString, QString> > VBoxGlobal::HDDBackends()
 {
     CSystemProperties systemProperties = vboxGlobal().virtualBox().GetSystemProperties();
Index: /trunk/src/VBox/Main/HardDiskFormatImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/HardDiskFormatImpl.cpp	(revision 13949)
+++ /trunk/src/VBox/Main/HardDiskFormatImpl.cpp	(revision 13950)
@@ -85,5 +85,5 @@
         while (pa->pszKey != NULL)
         {
-            Utf8Str defaults ("");
+            Utf8Str defaultValue ("");
             DataType_T dt;
             /* Check for the configure data type */
@@ -91,39 +91,48 @@
             {
                 case VDCFGVALUETYPE_INTEGER:
+                {
+                    dt = DataType_Int32;
+                    /* If there is a default value get them in the right format */
+                    if (pa->pDefaultValue)
+                        defaultValue =
+                            Utf8StrFmt ("%d", pa->pDefaultValue->Integer.u64);
+                    break;
+                }
+                case VDCFGVALUETYPE_BYTES:
+                {
+                    dt = DataType_Int8;
+                    /* If there is a default value get them in the right format */
+                    if (pa->pDefaultValue)
                     {
-                        dt = DataType_Int32Type;
-                        /* If there is a default value get them in the right format */
-                        if (pa->pDefaultValue)
-                            defaults = Utf8StrFmt ("%d", pa->pDefaultValue->Integer.u64);
-                        break;
+                        /* Copy the bytes over */
+                        defaultValue.alloc (pa->pDefaultValue->Bytes.cb + 1);
+                        memcpy (defaultValue.mutableRaw(), pa->pDefaultValue->Bytes.pv,
+                                pa->pDefaultValue->Bytes.cb);
+                        defaultValue.mutableRaw() [defaultValue.length()] = 0;
                     }
-                case VDCFGVALUETYPE_BYTES:
-                    {
-                        dt = DataType_Int8Type;
-                        /* If there is a default value get them in the right format */
-                        if (pa->pDefaultValue)
-                        {
-                            /* Copy the bytes over */
-                            defaults.alloc (pa->pDefaultValue->Bytes.cb + 1);
-                            memcpy (defaults.mutableRaw(), pa->pDefaultValue->Bytes.pv, pa->pDefaultValue->Bytes.cb);
-                            defaults.mutableRaw() [defaults.length()] = 0;
-                        }
-                        break;
-                    }
+                    break;
+                }
                 case VDCFGVALUETYPE_STRING:
-                    {
-                        dt = DataType_StringType;
-                        /* If there is a default value get them in the right format */
-                        if (pa->pDefaultValue)
-                            defaults = pa->pDefaultValue->String.psz;
-                        break;
-                    }
+                {
+                    dt = DataType_String;
+                    /* If there is a default value get them in the right format */
+                    if (pa->pDefaultValue)
+                        defaultValue = pa->pDefaultValue->String.psz;
+                    break;
+                }
             }
+
+            /// @todo add extendedFlags to Property when we reach the 32 bit
+            /// limit (or make the argument ULONG64 after checking that COM is
+            /// capable of defining enums (used to represent bit flags) that
+            /// contain 64-bit values)
+            ComAssertRet (pa->uKeyFlags == ((ULONG) pa->uKeyFlags), E_FAIL);
+
             /* Create one property structure */
             const Property prop = { Utf8Str (pa->pszKey),
                                     Utf8Str (""),
                                     dt,
-                                    static_cast<unsigned int> (pa->uKeyFlags),
-                                    defaults };
+                                    static_cast <ULONG> (pa->uKeyFlags),
+                                    defaultValue };
             unconst (mData.properties).push_back (prop);
             ++ pa;
@@ -251,4 +260,5 @@
     com::SafeArray <ULONG> propertyFlags (mData.properties.size());
     com::SafeArray <BSTR> propertyDefaults (mData.properties.size());
+
     int i = 0;
     for (PropertyList::const_iterator it = mData.properties.begin();
@@ -260,6 +270,7 @@
         propertyTypes [i] = prop.type;
         propertyFlags [i] = prop.flags;
-        prop.defaults.cloneTo (&propertyDefaults [i]);
+        prop.defaultValue.cloneTo (&propertyDefaults [i]);
     }
+
     propertyNames.detachTo (ComSafeArrayOutArg (aNames));
     propertyDescriptions.detachTo (ComSafeArrayOutArg (aDescriptions));
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 13949)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 13950)
@@ -794,11 +794,11 @@
         <li><link to="DeviceType::HardDisk"/>: the media is a hard disk
         that, if registered, can be obtained using the
-        <link to="IVirtualBox::getHardDisk"/> call.</li>
+        <link to="IVirtualBox::getHardDisk2()"/> call.</li>
         <li><link to="DeviceType::DVD"/>: the media is a CD/DVD image
         that, if registered, can be obtained using the
-        <link to="IVirtualBox::getDVDImage"/> call.</li>
+        <link to="IVirtualBox::getDVDImage()"/> call.</li>
         <li><link to="DeviceType::Floppy"/>: the media is a Floppy image
         that, if registered, can be obtained using the
-        <link to="IVirtualBox::getFloppyImage"/> call.</li>
+        <link to="IVirtualBox::getFloppyImage()"/> call.</li>
         </ul>
 
@@ -947,5 +947,5 @@
 
       To enumerate all the virtual machines on the host, use the
-      <link to="IVirtualBox::machines"/> attribute.
+      <link to="IVirtualBox::machines2"/> attribute.
     </desc>
 
@@ -1376,5 +1376,5 @@
         </ul>
 
-        Some hard disk attributes, such as <link to="id"/>, may remain
+        Some hard disk attributes, such as <link to="#id"/>, may remain
         uninitialized until the hard disk storage unit is successfully created
         by one of the above methods.
@@ -1382,5 +1382,5 @@
         After the storage unit is successfully created, the hard disk gets
         remembered by this VirtualBox installation and will be accessible
-        trhough <link to="#getHardDisk2"/> and <link to="#findHardDisk2"/>
+        trhough <link to="#getHardDisk2()"/> and <link to="#findHardDisk2()"/>
         methods. Remembered root (base) hard disks are also returned as part of
         the <link to="#hardDisks2"/> array. See IHardDisk2 for more details.
@@ -1552,5 +1552,5 @@
 
         The search is done by comparing the value of the @a location argument to
-        the <link to="IMedia::location"/> attribute of each known CD/DVD image.
+        the <link to="IMedium::location"/> attribute of each known CD/DVD image.
 
         The requested location can be a path relative to the
@@ -1579,5 +1579,5 @@
         accessible trhough <link to="#getFloppyImage()"/> and
         <link to="#findFloppyImage()"/> methods. Remembered images are also
-        returned as part of the <link to="#FloppyImages"/> array and can be
+        returned as part of the <link to="#floppyImages"/> array and can be
         mounted to virtual machines. See IMedium for more details.
 
@@ -1631,5 +1631,5 @@
 
         The search is done by comparing the value of the @a location argument to
-        the <link to="IMedia::location"/> attribute of each known floppy image.
+        the <link to="IMedium::location"/> attribute of each known floppy image.
 
         The requested location can be a path relative to the
@@ -2545,5 +2545,5 @@
       This interface is used in two contexts. First of all, a collection of
       objects implementing this interface is stored in the
-      <link to="IVirtualBox::machines"/> attribute which lists all the virtual
+      <link to="IVirtualBox::machines2"/> attribute which lists all the virtual
       machines that are currently registered with this VirtualBox
       installation. Also, once a session has been opened for the given virtual
@@ -2555,5 +2555,5 @@
       machine and provide methods to change various aspects of the virtual
       machine's configuration. For machine objects stored in the
-      <link to="IVirtualBox::machines"/> collection, all attributes are
+      <link to="IVirtualBox::machines2"/> collection, all attributes are
       read-only unless explicitly stated otherwise in individual attribute
       and method descriptions. In order to change a machine setting, a session
@@ -4688,5 +4688,5 @@
         <note>
           Child hard disks of all normal hard disks of the discarded snapshot
-          must be <link to="IHardDisk::accessible">accessible</link> for this
+          must be accessible (see <link to="IMedium::state"/>) for this
           operation to succeed.  In particular, this means that all virtual
           machines, whose hard disks are directly or indirectly based on the
@@ -5835,5 +5835,5 @@
       Snapshots can be chained. Chained snapshots form a branch where
       every next snapshot is based on the previous one. This chaining is
-      mostly related to hard disk branching (see <link to="IHardDisk"/>
+      mostly related to hard disk branching (see <link to="IHardDisk2"/>
       description). This means that every time a new snapshot is created,
       a new differencing hard disk is implicitly created for all normal
@@ -6456,6 +6456,4 @@
         its methods or attributes will fail with the <tt>"Object not ready"
         (E_ACCESSDENIED)</tt> error.
-
-        <see>#deleteStorage()</see>
       </desc>
     </method>
@@ -6511,5 +6509,5 @@
 
       The array of hard disk attachments is returned by
-      <link to="IMachine::hardDiskAttachments"/>.
+      <link to="IMachine::hardDisk2Attachments"/>.
 
       <note>
@@ -6606,6 +6604,5 @@
       <ul>
         <li><link to="#deleteStorage()"/></li>
-        <li><link to="#mergeToParent()"/></li>
-        <li><link to="#mergeToAncestor()"/></li>
+        <li><link to="#mergeTo()"/></li>
       </ul>
 
@@ -7208,7 +7205,7 @@
     uuid="d90ea51e-a3f1-4a01-beb1-c1723c0d3ba7"
   >
-    <const name="Int32Type" value="0"/>
-    <const name="Int8Type" value="1"/>
-    <const name="StringType" value="2"/>
+    <const name="Int32" value="0"/>
+    <const name="Int8" value="1"/>
+    <const name="String" value="2"/>
   </enum>
 
@@ -7217,7 +7214,7 @@
     uuid="86884dcf-1d6b-4f1b-b4bf-f5aa44959d60"
   >
-    <const name="NoneFlag" value="0x00"/>
-    <const name="MandatoryFlag" value="0x01"/>
-    <const name="ExpertFlag" value="0x02"/>
+    <const name="None" value="0x00"/>
+    <const name="Mandatory" value="0x01"/>
+    <const name="Expert" value="0x02"/>
     <const name="FlagMask" value="0x03"/>
   </enum>
@@ -7228,8 +7225,8 @@
   >
     <desc>
-       Harddisk format capability flags.
+       Hard disk format capability flags.
     </desc>
 
-    <const name="UuidCapability" value="0x01">
+    <const name="Uuid" value="0x01">
       <desc>
         Supports UUIDs as expected by VirtualBox code.
@@ -7237,5 +7234,5 @@
     </const>
 
-    <const name="CreateFixedCapability" value="0x02">
+    <const name="CreateFixed" value="0x02">
       <desc>
         Supports creating fixed size images, allocating all space instantly.
@@ -7243,5 +7240,5 @@
     </const>
 
-    <const name="CreateDynamicCapability" value="0x04">
+    <const name="CreateDynamic" value="0x04">
       <desc>
         Supports creating dynamically growing images, allocating space on
@@ -7250,17 +7247,18 @@
     </const>
 
-    <const name="CreateSplit2GCapability" value="0x08">
-      <desc>
-        Supports creating images split in chunks of a bit less than 2GBytes.
+    <const name="CreateSplit2G" value="0x08">
+      <desc>
+        Supports creating images split in chunks of a bit less than 2 GBytes.
       </desc>
     </const>
 
-    <const name="DiffCapability" value="0x10">
-      <desc>
-        Supports being used as differencing image format backend.
+    <const name="Differencing" value="0x10">
+      <desc>
+        Supports being used as a format for differencing hard disks (see <link
+        to="IHardDisk2::createDiffStorage"/>).
       </desc>
     </const>
 
-    <const name="ASyncCapability" value="0x20">
+    <const name="Asynchronous" value="0x20">
       <desc>
         Supports asynchronous I/O operations for at least some configurations.
@@ -7268,18 +7266,19 @@
     </const>
 
-    <const name="FileCapability" value="0x40">
-      <desc>
-        The backend operates on files. The caller needs to know to handle the
-        location appropriately. For a list of supported file extentions see
+    <const name="File" value="0x40">
+      <desc>
+        The format backend operates on files. The <link to="IMedium::location"/>
+        attribute of the hard disk specifies a file used to store hard disk
+        data. For a list of supported file extentions see
         <link to="IHardDiskFormat::fileExtensions"/>.
       </desc>
     </const>
 
-    <const name="ConfigCapability" value="0x80">
-      <desc>
-        The backend uses the config interface. The caller needs to know how to
-        provide the mandatory configuration parts this way.
-
-        <see>IHardDiskFormat::describeProperties</see>
+    <const name="Properties" value="0x80">
+      <desc>
+        The format backend uses the property interface to configure the storage
+        location and properties. The <link to="IHardDiskFormat::describeProperties"/>
+        method is used to get access to poperties supported by the given hard
+        disk format.
       </desc>
     </const>
@@ -7346,7 +7345,7 @@
     <attribute name="capabilities" type="unsigned long" readonly="yes">
       <desc>
-        The capabilities of the backend as a bitmask. 
-        
-        For the meaning of the different capabilities see 
+        Capabilities of the format as a set of bit flags.
+
+        For the meaning of individual capabilitiy flags see
         <link to="HardDiskFormatCapabilities"/>.
       </desc>
@@ -7355,17 +7354,33 @@
     <method name="describeProperties">
       <desc>
-        Return several lists for the configuration description of this backend.
-
-        This is non empty only if HardDiskFormatCapabilities::ConfigCapability
-        is set.
+        Returns several arrays describing the properties supported by this
+        format.
+
+        An element with the given index in each array describes one
+        property. Thus, the number of elements in each returned array is the
+        same and corresponds to the number of supported properties.
+
+        The returned arrays are not empty only if the
+        <link to="HardDiskFormatCapabilities::Properties"/> flag is set.
+
         <see>DataType</see>
         <see>DataFlags</see>
       </desc>
 
-      <param name="names" type="wstring" safearray="yes" dir="out"/>
-      <param name="description" type="wstring" safearray="yes" dir="out"/>
-      <param name="types" type="unsigned long" safearray="yes" dir="out"/>
-      <param name="flags" type="unsigned long" safearray="yes" dir="out"/>
-      <param name="defaults" type="wstring" safearray="yes" dir="out"/>
+      <param name="names" type="wstring" safearray="yes" dir="out">
+        <desc>Array of property names.</desc>
+      </param>
+      <param name="description" type="wstring" safearray="yes" dir="out">
+        <desc>Array of property descriptions.</desc>
+      </param>
+      <param name="types" type="unsigned long" safearray="yes" dir="out">
+        <desc>Array of property types.</desc>
+      </param>
+      <param name="flags" type="unsigned long" safearray="yes" dir="out">
+        <desc>Array of property flags.</desc>
+      </param>
+      <param name="defaults" type="wstring" safearray="yes" dir="out">
+        <desc>Array of default property values.</desc>
+      </param>
     </method>
 
Index: /trunk/src/VBox/Main/include/HardDiskFormatImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/HardDiskFormatImpl.h	(revision 13949)
+++ /trunk/src/VBox/Main/include/HardDiskFormatImpl.h	(revision 13950)
@@ -94,5 +94,5 @@
         DataType_T type;
         ULONG flags;
-        Bstr defaults;
+        Bstr defaultValue;
     };
     typedef std::list <Property> PropertyList;
