1. A method of downloading software components from a remote source to a software application for providing updates or additions to application and document functionality, comprising the steps of: attaching a schema to a document defining permissible data content, data type and data structure for the document; structuring the document to associate the document with the schema; associating a solution with the document structure; assembling a plurality of software components comprising the solution at a location remote from the document; enabling the document to call the solution to obtain functionality provided by the plurality of software components; and downloading the plurality of software components to the application for provision of the functionality to the document.