ADO can dynamically expose properties specific to a data provider via collections of provider properties. In addition, ADO provides type extensibility by allowing access to COM objects exposed as column values. For example, a Recordset object can be exposed as a value of a field in a larger, parent Recordset, which simplifies using hierarchical data. ADO does this without breaking existing applications because it does not alter its Automation interface to provide these dynamic properties. This makes it very easy for ADO to adapt and grow with future data providers.