There was a question with respect to how you might handle contract version and how you would develop a component.
Sigiloso
I answer with respect to major/minor/patch versioning. MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes. I also explained optional element can be introduced as not to break the contract when adding functionality (backward compatibility). Or create several key/value pairs in your contract up front for later element/attribute expansion as related to new functionality.